diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml new file mode 100644 index 0000000..91973d5 --- /dev/null +++ b/.github/workflows/cd.yml @@ -0,0 +1,22 @@ +name: "Release" + +on: + workflow_run: + workflows: ["Haskell CI"] + types: [completed] + branches: "main" + +jobs: + #release: + on-success: + name: "Release" + runs-on: "ubuntu-latest" + steps: + - uses: "marvinpinto/action-automatic-releases@latest" + with: + repo_token: "${{ secrets.GITHUB_TOKEN }}" + automatic_release_tag: "latest" + prerelease: ${{ github.event_name == 'pull_request' }} + title: "Development Build" + files: "*.pdf" + diff --git a/.github/workflows/haskell_ci.yml b/.github/workflows/haskell_ci.yml new file mode 100644 index 0000000..763746f --- /dev/null +++ b/.github/workflows/haskell_ci.yml @@ -0,0 +1,92 @@ +name: Haskell CI + +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + + #permissions: + # contents: read + + +jobs: + build-and-test: + strategy: + matrix: + os: [ ubuntu-latest, windows-latest, macos-latest ] + cabal: ["3.6"] + ghc: ["9.2.8"] + #ghc: ["9.2.8", "9.4.7", "9.6.3", "9.8.1"] + runs-on: ${{ matrix.os }} + + steps: + - uses: actions/checkout@v3 + - uses: haskell-actions/setup@v2 + with: + ghc-version: ${{ matrix.ghc }} + cabal-version: ${{ matrix.cabal }} + - name: Install dependencies + run: | + cabal install + cabal update + cabal build --only-dependencies --enable-tests --enable-benchmarks + - name: Build + run: cabal build --enable-tests --enable-benchmarks all + - name: Run tests + run: cabal test all + + format-and-lint: + strategy: + matrix: + cabal: ["3.6"] + ghc: ["9.2.8"] + #ghc: ["9.2.8", "9.4.7", "9.6.3", "9.8.1"] + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - uses: haskell-actions/setup@v2 + with: + ghc-version: ${{ matrix.ghc }} + cabal-version: ${{ matrix.cabal }} + - name: Install dependencies + run: | + cabal install + cabal update + cabal install hlint hindent + - name: Fmt + run: | + hindent --validate **/*.hs + - name: Lint + run: | + hlint **/*.hs --cross -q + + on-success: + name: "Release" + + permissions: write-all + runs-on: "ubuntu-latest" + steps: + - uses: actions/checkout@v3 + - uses: haskell-actions/setup@v2 + with: + ghc-version: ${{ matrix.ghc }} + cabal-version: ${{ matrix.cabal }} + - name: Install dependencies + run: | + cabal install + cabal update + sudo apt install texlive-full + - name: Compile PDFs + run: cabal run reshume -- example/cv_en.tex example/conf.json + - uses: "marvinpinto/action-automatic-releases@latest" + with: + repo_token: "${{ secrets.GITHUB_TOKEN }}" + automatic_release_tag: "latest" + prerelease: ${{ github.event_name == 'pull_request' }} + title: "Development Build" + files: | + *.pdf + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2e1ef00 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +build/*.out +build/*.log +build/*.aux +dist-newstyle diff --git a/.hindent.yaml b/.hindent.yaml new file mode 100644 index 0000000..c310d2c --- /dev/null +++ b/.hindent.yaml @@ -0,0 +1,6 @@ +indent-size: 4 +line-length: 100 +force-trailing-newline: true +sort-imports: true +line-breaks: [] +extensions: [] diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..c991190 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,5 @@ +# Revision history for reshume + +## 0.1.0.0 -- YYYY-mm-dd + +* First version. Released on an unsuspecting world. diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..7104553 --- /dev/null +++ b/LICENSE @@ -0,0 +1,20 @@ +Copyright (c) 2023 Thomas Lohse + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/app/Main.hs b/app/Main.hs new file mode 100644 index 0000000..592d4b2 --- /dev/null +++ b/app/Main.hs @@ -0,0 +1,59 @@ +module Main where + +import Control.Applicative +import Data.List +import Reshume +import System.Directory +import System.Environment +import System.IO +import System.Process + +testPhrase = "hejsa du er mega #!First1 og jeg synes du er #!Hvad" + +main :: IO () +main = do + args <- getArgs + (a, b) <- parseArgs args + let conf = parseJson b + print conf + Just (w, f) <- return $ findPhrase testPhrase "#!" + putStrLn w + putStrLn $ f "erstat" + Nothing <- return $ findPhrase "hejsa du er mega #! cringe" "##!" + print $ replaceKeys (lines testPhrase) "#!" conf + let pruned = unlines $ replaceKeys (lines a) "@!" conf + putStrLn "replaced file" + putStrLn pruned + withCreateProcess (proc "pdflatex" ["-interaction=nonstopmode"]) {std_in = CreatePipe} $ \(Just stdin) _ _ ph -- TODO: ARGS (output and others) + -> do + hPutStr stdin pruned + hFlush stdin + waitForProcess ph + putStrLn "done" + +-- TODO: Prettify with CLI tool (args and such) +parseArgs :: [String] -> IO (String, String) +parseArgs [template, content] = do + --t <- getTemplates template + t <- getConfiguration template + e <- getConfiguration content + return (t, e) +parseArgs _ = error "Wrong amount of arguments, try again (stupid bitch)" + +getConfiguration :: String -> IO String +getConfiguration path = readFile path <|> error ("Invalid file path: " ++ path) + +getTemplates :: String -> IO [String] +getTemplates path = + do + files <- getDirectoryContents path + contents $ filter (not . isPrefixOf ".") files -- TODO: Directory not quite working + <|> pure <$> readFile path + <|> error ("Invalid file path: " ++ path) + where + contents (x:xs) = do + xs' <- contents xs + putStrLn x + x' <- readFile x + return (x' : xs') + contents [] = return [] diff --git a/build/cv_da.pdf b/build/cv_da.pdf deleted file mode 100644 index 65574c9..0000000 Binary files a/build/cv_da.pdf and /dev/null differ diff --git a/build/cv_en.pdf b/build/cv_en.pdf deleted file mode 100644 index 82a5b4f..0000000 Binary files a/build/cv_en.pdf and /dev/null differ diff --git a/src/Portrait.jpg b/example/Portrait.jpg similarity index 100% rename from src/Portrait.jpg rename to example/Portrait.jpg diff --git a/example/conf.json b/example/conf.json new file mode 100644 index 0000000..5991a1d --- /dev/null +++ b/example/conf.json @@ -0,0 +1,38 @@ +{ + "InfoText": "I am a Software Engineering Master's student at Aalborg University (AAU) with a fervor for backend and system development. Since the age of 16, my journey in programming has been marked by a commitment to independent learning, particularly in the realms of software development theory. I specialize in backend development, with practical experience in firmware development and task automation using shell-scripts. Beyond this, my passion extends to exploring various programming languages and their intricacies. This blend of theoretical knowledge and hands-on skills positions me to excel in the intricate landscape of software engineering.", + "TechSec": "Technical Competencies", + "SkillMain": ["Software Development", "Git", "Project Development"], + "SkillMainTime": ["Since 2016", "Since 2017", "Since 2017"], + "KnownLangTitle": "Known Programming Languages:", + "KnownLangList": [ + "Rust (Since 2021)", + "C\\# (Since 2016)", + "C (Since 2020)", + "Bash (Since 2020)", + "Haskell (Since 2023)" + ], + "KnownToolTitle": "Known Tools:", + "KnownToolList": [ + "GitHub (Since 2017)", + "Cargo (Since 2021)", + "Docker (Since 2021)", + ".NET (Since 2017)", + "Unity (Since 2017)", + "QMK (Since 2020)" + ], + "EduSec": "Education", + "EduStart1": ["2017"], + "EduEnd1": ["2020"], + "EduPlace1": ["High School"], + "EduDesc1": [ + "High school attendee for three years at Aalborg Techcollege (AATG), and recieved the Higher Techincal Exam (HTX), with a specialised Study Area in \\textit{Communication \\& IT} A,\\textit{Programming} B, and tecnical study in \\textit{Technical Science} A." + ], + "EduStart": ["2017", "2020", "2023"], + "EduEnd": ["2020", "2023", "Now"], + "EduPlace": ["High School", "University (Bachelor)", "University (Master)"], + "EduDesc": [ + "High school attendee for three years at Aalborg Techcollege (AATG), and recieved the Higher Techincal Exam (HTX), with a specialised Study Area in \\textit{Communication \\& IT} A,\\textit{Programming} B, and tecnical study in \\textit{Technical Science} A.", + "Attendee at Aalborg University, studying Software, Bachelor. \\begin{itemize} \\item[] \\textbf{1st Semester --- } Developed a workscheduling system for the production teams at Siemens Gamesa (Developed in C). \\item[] \\textbf{2nd Semester --- } Implemented the Signal Protocol in an IoT environment (Developed in JavaScript). \\item[] \\textbf{3rd Semester --- } Developed a program for better handling of Siemens Gamesas turbine blades' location and production (Developed in C\\#).\\item[] \\textbf{4th Semester --- } Developed a programming language as a replacement to the shell scripting language Bash (Developed in C\\#). \\item[] \\textbf{5th Semester --- } A multiproject, where six groups collaborated on the same code base, written in Rust. \\item[] \\textbf{6th Semester (Bachelor project) --- } Developed a model learning tool to reverse engineer the codebase from PLCs in ladder programming (Written in Java and C\\#).\\end{itemize}", + "Attendee at Aalborg University, studying Software Engineer, Master. \\begin{itemize} \\item[] \\textbf{1st Semester (Current) --- } Engineered an online learning platform for introductionary programming, with multiple services and Docker Swarm deployment (Developed in TypeScript). \\end{itemize}" + ] +} diff --git a/example/cv_da.aux b/example/cv_da.aux new file mode 100644 index 0000000..ead0df3 --- /dev/null +++ b/example/cv_da.aux @@ -0,0 +1,26 @@ +\relax +\providecommand\hyper@newdestlabel[2]{} +\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument} +\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined +\global\let\oldnewlabel\newlabel +\gdef\newlabel#1#2{\newlabelxx{#1}#2} +\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}} +\AtEndDocument{\ifx\hyper@anchor\@undefined +\let\newlabel\oldnewlabel +\fi} +\fi} +\global\let\hyper@last\relax +\gdef\HyperFirstAtBeginDocument#1{#1} +\providecommand\HyField@AuxAddToFields[1]{} +\providecommand\HyField@AuxAddToCoFields[2]{} +\gdef \LT@i {\LT@entry + {1}{57.40015pt}\LT@entry + {1}{400.10751pt}} +\providecommand \oddpage@label [2]{} +\gdef \LT@ii {\LT@entry + {1}{66.76125pt}\LT@entry + {1}{390.74641pt}} +\gdef \LT@iii {\LT@entry + {1}{66.76125pt}\LT@entry + {1}{390.74641pt}} +\gdef \@abspage@last{3} diff --git a/example/cv_da.log b/example/cv_da.log new file mode 100644 index 0000000..38ef529 --- /dev/null +++ b/example/cv_da.log @@ -0,0 +1,560 @@ +This is pdfTeX, Version 3.141592653-2.6-1.40.25 (TeX Live 2023/Arch Linux) (preloaded format=pdflatex 2024.1.26) 29 FEB 2024 10:15 +entering extended mode + restricted \write18 enabled. + %&-line parsing enabled. +**cv_da.tex +(./cv_da.tex +LaTeX2e <2022-11-01> patch level 1 +L3 programming layer <2023-02-22> +(/usr/share/texmf-dist/tex/latex/base/report.cls +Document Class: report 2022/07/02 v1.4n Standard LaTeX document class +(/usr/share/texmf-dist/tex/latex/base/size10.clo +File: size10.clo 2022/07/02 v1.4n Standard LaTeX file (size option) +) +\c@part=\count185 +\c@chapter=\count186 +\c@section=\count187 +\c@subsection=\count188 +\c@subsubsection=\count189 +\c@paragraph=\count190 +\c@subparagraph=\count191 +\c@figure=\count192 +\c@table=\count193 +\abovecaptionskip=\skip48 +\belowcaptionskip=\skip49 +\bibindent=\dimen140 +) +(/usr/share/texmf-dist/tex/latex/base/inputenc.sty +Package: inputenc 2021/02/14 v1.3d Input encoding file +\inpenc@prehook=\toks16 +\inpenc@posthook=\toks17 +) +(/usr/share/texmf-dist/tex/latex/anysize/anysize.sty +Package: anysize 1994/08/13 setting margin sizes + +document style option `anysize' loaded +Michael Salzenberg, Thomas Esser, Dirk Hillbrecht +Version 1.0, Aug 13, 1994 +\@Leftmargin=\dimen141 +\@Rightmargin=\dimen142 +\@Topmargin=\dimen143 +\@Bottommargin=\dimen144 +) (/usr/share/texmf-dist/tex/latex/geometry/geometry.sty +Package: geometry 2020/01/02 v5.9 Page Geometry + +(/usr/share/texmf-dist/tex/latex/graphics/keyval.sty +Package: keyval 2022/05/29 v1.15 key=value parser (DPC) +\KV@toks@=\toks18 +) +(/usr/share/texmf-dist/tex/generic/iftex/ifvtex.sty +Package: ifvtex 2019/10/25 v1.7 ifvtex legacy package. Use iftex instead. + +(/usr/share/texmf-dist/tex/generic/iftex/iftex.sty +Package: iftex 2022/02/03 v1.0f TeX engine tests +)) +\Gm@cnth=\count194 +\Gm@cntv=\count195 +\c@Gm@tempcnt=\count196 +\Gm@bindingoffset=\dimen145 +\Gm@wd@mp=\dimen146 +\Gm@odd@mp=\dimen147 +\Gm@even@mp=\dimen148 +\Gm@layoutwidth=\dimen149 +\Gm@layoutheight=\dimen150 +\Gm@layouthoffset=\dimen151 +\Gm@layoutvoffset=\dimen152 +\Gm@dimlist=\toks19 +) +(/usr/share/texmf-dist/tex/latex/float/float.sty +Package: float 2001/11/08 v1.3d Float enhancements (AL) +\c@float@type=\count197 +\float@exts=\toks20 +\float@box=\box51 +\@float@everytoks=\toks21 +\@floatcapt=\box52 +) +(/usr/share/texmf-dist/tex/latex/graphics/graphicx.sty +Package: graphicx 2021/09/16 v1.2d Enhanced LaTeX Graphics (DPC,SPQR) + +(/usr/share/texmf-dist/tex/latex/graphics/graphics.sty +Package: graphics 2022/03/10 v1.4e Standard LaTeX Graphics (DPC,SPQR) + +(/usr/share/texmf-dist/tex/latex/graphics/trig.sty +Package: trig 2021/08/11 v1.11 sin cos tan (DPC) +) +(/usr/share/texmf-dist/tex/latex/graphics-cfg/graphics.cfg +File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration +) +Package graphics Info: Driver file: pdftex.def on input line 107. + +(/usr/share/texmf-dist/tex/latex/graphics-def/pdftex.def +File: pdftex.def 2022/09/22 v1.2b Graphics/color driver for pdftex +)) +\Gin@req@height=\dimen153 +\Gin@req@width=\dimen154 +) +(/usr/share/texmf-dist/tex/latex/booktabs/booktabs.sty +Package: booktabs 2020/01/12 v1.61803398 Publication quality tables +\heavyrulewidth=\dimen155 +\lightrulewidth=\dimen156 +\cmidrulewidth=\dimen157 +\belowrulesep=\dimen158 +\belowbottomsep=\dimen159 +\aboverulesep=\dimen160 +\abovetopsep=\dimen161 +\cmidrulesep=\dimen162 +\cmidrulekern=\dimen163 +\defaultaddspace=\dimen164 +\@cmidla=\count198 +\@cmidlb=\count199 +\@aboverulesep=\dimen165 +\@belowrulesep=\dimen166 +\@thisruleclass=\count266 +\@lastruleclass=\count267 +\@thisrulewidth=\dimen167 +) +(/usr/share/texmf-dist/tex/latex/hyperref/hyperref.sty +Package: hyperref 2023-02-07 v7.00v Hypertext links for LaTeX + +(/usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty +Package: ltxcmds 2020-05-10 v1.25 LaTeX kernel commands for general use (HO) +) +(/usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty +Package: pdftexcmds 2020-06-27 v0.33 Utility functions of pdfTeX for LuaTeX (HO +) + +(/usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty +Package: infwarerr 2019/12/03 v1.5 Providing info/warning/error messages (HO) +) +Package pdftexcmds Info: \pdf@primitive is available. +Package pdftexcmds Info: \pdf@ifprimitive is available. +Package pdftexcmds Info: \pdfdraftmode found. +) +(/usr/share/texmf-dist/tex/latex/kvsetkeys/kvsetkeys.sty +Package: kvsetkeys 2022-10-05 v1.19 Key value parser (HO) +) +(/usr/share/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty +Package: kvdefinekeys 2019-12-19 v1.6 Define keys (HO) +) +(/usr/share/texmf-dist/tex/generic/pdfescape/pdfescape.sty +Package: pdfescape 2019/12/09 v1.15 Implements pdfTeX's escape features (HO) +) +(/usr/share/texmf-dist/tex/latex/hycolor/hycolor.sty +Package: hycolor 2020-01-27 v1.10 Color options for hyperref/bookmark (HO) +) +(/usr/share/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty +Package: letltxmacro 2019/12/03 v1.6 Let assignment for LaTeX macros (HO) +) +(/usr/share/texmf-dist/tex/latex/auxhook/auxhook.sty +Package: auxhook 2019-12-17 v1.6 Hooks for auxiliary files (HO) +) +(/usr/share/texmf-dist/tex/latex/hyperref/nameref.sty +Package: nameref 2022-05-17 v2.50 Cross-referencing by name of section + +(/usr/share/texmf-dist/tex/latex/refcount/refcount.sty +Package: refcount 2019/12/15 v3.6 Data extraction from label references (HO) +) +(/usr/share/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty +Package: gettitlestring 2019/12/15 v1.6 Cleanup title references (HO) + +(/usr/share/texmf-dist/tex/latex/kvoptions/kvoptions.sty +Package: kvoptions 2022-06-15 v3.15 Key value format for package options (HO) +)) +\c@section@level=\count268 +) +\@linkdim=\dimen168 +\Hy@linkcounter=\count269 +\Hy@pagecounter=\count270 + +(/usr/share/texmf-dist/tex/latex/hyperref/pd1enc.def +File: pd1enc.def 2023-02-07 v7.00v Hyperref: PDFDocEncoding definition (HO) +Now handling font encoding PD1 ... +... no UTF-8 mapping file for font encoding PD1 +) +(/usr/share/texmf-dist/tex/generic/intcalc/intcalc.sty +Package: intcalc 2019/12/15 v1.3 Expandable calculations with integers (HO) +) +(/usr/share/texmf-dist/tex/generic/etexcmds/etexcmds.sty +Package: etexcmds 2019/12/15 v1.7 Avoid name clashes with e-TeX commands (HO) +) +\Hy@SavedSpaceFactor=\count271 + +(/usr/share/texmf-dist/tex/latex/hyperref/puenc.def +File: puenc.def 2023-02-07 v7.00v Hyperref: PDF Unicode definition (HO) +Now handling font encoding PU ... +... no UTF-8 mapping file for font encoding PU +) +Package hyperref Info: Hyper figures OFF on input line 4177. +Package hyperref Info: Link nesting OFF on input line 4182. +Package hyperref Info: Hyper index ON on input line 4185. +Package hyperref Info: Plain pages OFF on input line 4192. +Package hyperref Info: Backreferencing OFF on input line 4197. +Package hyperref Info: Implicit mode ON; LaTeX internals redefined. +Package hyperref Info: Bookmarks ON on input line 4425. +\c@Hy@tempcnt=\count272 + +(/usr/share/texmf-dist/tex/latex/url/url.sty +\Urlmuskip=\muskip16 +Package: url 2013/09/16 ver 3.4 Verb mode for urls, etc. +) +LaTeX Info: Redefining \url on input line 4763. +\XeTeXLinkMargin=\dimen169 + +(/usr/share/texmf-dist/tex/generic/bitset/bitset.sty +Package: bitset 2019/12/09 v1.3 Handle bit-vector datatype (HO) + +(/usr/share/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty +Package: bigintcalc 2019/12/15 v1.5 Expandable calculations on big integers (HO +) +)) +\Fld@menulength=\count273 +\Field@Width=\dimen170 +\Fld@charsize=\dimen171 +Package hyperref Info: Hyper figures OFF on input line 6042. +Package hyperref Info: Link nesting OFF on input line 6047. +Package hyperref Info: Hyper index ON on input line 6050. +Package hyperref Info: backreferencing OFF on input line 6057. +Package hyperref Info: Link coloring OFF on input line 6062. +Package hyperref Info: Link coloring with OCG OFF on input line 6067. +Package hyperref Info: PDF/A mode OFF on input line 6072. + +(/usr/share/texmf-dist/tex/latex/base/atbegshi-ltx.sty +Package: atbegshi-ltx 2021/01/10 v1.0c Emulation of the original atbegshi +package with kernel methods +) +\Hy@abspage=\count274 +\c@Item=\count275 +\c@Hfootnote=\count276 +) +Package hyperref Info: Driver (autodetected): hpdftex. + +(/usr/share/texmf-dist/tex/latex/hyperref/hpdftex.def +File: hpdftex.def 2023-02-07 v7.00v Hyperref driver for pdfTeX + +(/usr/share/texmf-dist/tex/latex/base/atveryend-ltx.sty +Package: atveryend-ltx 2020/08/19 v1.0a Emulation of the original atveryend pac +kage +with kernel methods +) +\Fld@listcount=\count277 +\c@bookmark@seq@number=\count278 + +(/usr/share/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty +Package: rerunfilecheck 2022-07-10 v1.10 Rerun checks for auxiliary files (HO) + +(/usr/share/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty +Package: uniquecounter 2019/12/15 v1.4 Provide unlimited unique counter (HO) +) +Package uniquecounter Info: New unique counter `rerunfilecheck' on input line 2 +85. +) +\Hy@SectionHShift=\skip50 +) +(/usr/share/texmf-dist/tex/latex/fontawesome5/fontawesome5.sty +(/usr/share/texmf-dist/tex/latex/l3kernel/expl3.sty +Package: expl3 2023-02-22 L3 programming layer (loader) + +(/usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def +File: l3backend-pdftex.def 2023-01-16 L3 backend support: PDF output (pdfTeX) +\l__color_backend_stack_int=\count279 +\l__pdf_internal_box=\box53 +)) +Package: fontawesome5 2022/05/02 v5.15.4 Font Awesome 5 + +(/usr/share/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty +Package: l3keys2e 2023-02-02 LaTeX2e option processing using LaTeX3 keys +) +(/usr/share/texmf-dist/tex/latex/l3packages/xparse/xparse.sty +Package: xparse 2023-02-02 L3 Experimental document command parser +) +(/usr/share/texmf-dist/tex/latex/fontawesome5/fontawesome5-generic-helper.sty +Package: fontawesome5-generic-helper 2022/05/02 v5.15.4 non-uTeX helper for fon +tawesome5 + +(/usr/share/texmf-dist/tex/latex/fontawesome5/fontawesome5-mapping.def))) +(/usr/share/texmf-dist/tex/latex/multirow/multirow.sty +Package: multirow 2021/03/15 v2.8 Span multiple rows of a table +\multirow@colwidth=\skip51 +\multirow@cntb=\count280 +\multirow@dima=\skip52 +\bigstrutjot=\dimen172 +) +(/usr/share/texmf-dist/tex/latex/tools/array.sty +Package: array 2022/09/04 v2.5g Tabular extension package (FMi) +\col@sep=\dimen173 +\ar@mcellbox=\box54 +\extrarowheight=\dimen174 +\NC@list=\toks22 +\extratabsurround=\skip53 +\backup@length=\skip54 +\ar@cellbox=\box55 +) +(/usr/share/texmf-dist/tex/latex/lipsum/lipsum.sty +Package: lipsum 2021-09-20 v2.7 150 paragraphs of Lorem Ipsum dummy text +\g__lipsum_par_int=\count281 +\l__lipsum_a_int=\count282 +\l__lipsum_b_int=\count283 + +(/usr/share/texmf-dist/tex/latex/lipsum/lipsum.ltd.tex)) +(/usr/share/texmf-dist/tex/latex/adjustbox/adjustbox.sty +Package: adjustbox 2022/10/17 v1.3a Adjusting TeX boxes (trim, clip, ...) + +(/usr/share/texmf-dist/tex/latex/xkeyval/xkeyval.sty +Package: xkeyval 2022/06/16 v2.9 package option processing (HA) + +(/usr/share/texmf-dist/tex/generic/xkeyval/xkeyval.tex +(/usr/share/texmf-dist/tex/generic/xkeyval/xkvutils.tex +\XKV@toks=\toks23 +\XKV@tempa@toks=\toks24 +) +\XKV@depth=\count284 +File: xkeyval.tex 2014/12/03 v2.7a key=value parser (HA) +)) +(/usr/share/texmf-dist/tex/latex/adjustbox/adjcalc.sty +Package: adjcalc 2012/05/16 v1.1 Provides advanced setlength with multiple back +-ends (calc, etex, pgfmath) +) +(/usr/share/texmf-dist/tex/latex/adjustbox/trimclip.sty +Package: trimclip 2020/08/19 v1.2 Trim and clip general TeX material + +(/usr/share/texmf-dist/tex/latex/collectbox/collectbox.sty +Package: collectbox 2022/10/17 v0.4c Collect macro arguments as boxes +\collectedbox=\box56 +) +\tc@llx=\dimen175 +\tc@lly=\dimen176 +\tc@urx=\dimen177 +\tc@ury=\dimen178 +Package trimclip Info: Using driver 'tc-pdftex.def'. + +(/usr/share/texmf-dist/tex/latex/adjustbox/tc-pdftex.def +File: tc-pdftex.def 2019/01/04 v2.2 Clipping driver for pdftex +)) +\adjbox@Width=\dimen179 +\adjbox@Height=\dimen180 +\adjbox@Depth=\dimen181 +\adjbox@Totalheight=\dimen182 +\adjbox@pwidth=\dimen183 +\adjbox@pheight=\dimen184 +\adjbox@pdepth=\dimen185 +\adjbox@ptotalheight=\dimen186 + +(/usr/share/texmf-dist/tex/latex/ifoddpage/ifoddpage.sty +Package: ifoddpage 2022/10/18 v1.2 Conditionals for odd/even page detection +\c@checkoddpage=\count285 +) +(/usr/share/texmf-dist/tex/latex/varwidth/varwidth.sty +Package: varwidth 2009/03/30 ver 0.92; Variable-width minipages +\@vwid@box=\box57 +\sift@deathcycles=\count286 +\@vwid@loff=\dimen187 +\@vwid@roff=\dimen188 +)) +(/usr/share/texmf-dist/tex/latex/marvosym/marvosym.sty +Package: marvosym 2011/07/20 v2.2 Martin Vogel's Symbols font definitions +) +(/usr/share/texmf-dist/tex/latex/tools/tabularx.sty +Package: tabularx 2020/01/15 v2.11c `tabularx' package (DPC) +\TX@col@width=\dimen189 +\TX@old@table=\dimen190 +\TX@old@col=\dimen191 +\TX@target=\dimen192 +\TX@delta=\dimen193 +\TX@cols=\count287 +\TX@ftn=\toks25 +) +(/usr/share/texmf-dist/tex/latex/tabu/tabu.sty +Package: tabu 2019/01/11 v2.9 - flexible LaTeX tabulars (FC+tabu-fixed) +\c@taburow=\count288 +\tabu@nbcols=\count289 +\tabu@cnt=\count290 +\tabu@Xcol=\count291 +\tabu@alloc=\count292 +\tabu@nested=\count293 +\tabu@target=\dimen194 +\tabu@spreadtarget=\dimen195 +\tabu@naturalX=\dimen196 +\tabucolX=\dimen197 +\tabu@Xsum=\dimen198 +\extrarowdepth=\dimen199 +\abovetabulinesep=\dimen256 +\belowtabulinesep=\dimen257 +\tabustrutrule=\dimen258 +\tabu@thebody=\toks26 +\tabu@footnotes=\toks27 +\tabu@box=\box58 +\tabu@arstrutbox=\box59 +\tabu@hleads=\box60 +\tabu@vleads=\box61 +\tabu@cellskip=\skip55 +) +(/usr/share/texmf-dist/tex/latex/tools/longtable.sty +Rollback for package 'longtable' requested -> version 'v4.13'. + This corresponds to the release introduced on 2020-01-02. + +(/usr/share/texmf-dist/tex/latex/tools/longtable-2020-01-07.sty +Package: longtable 2020/01/07 v4.13 Multi-page Table package (DPC) +\LTleft=\skip56 +\LTright=\skip57 +\LTpre=\skip58 +\LTpost=\skip59 +\LTchunksize=\count294 +\LTcapwidth=\dimen259 +\LT@head=\box62 +\LT@firsthead=\box63 +\LT@foot=\box64 +\LT@lastfoot=\box65 +\LT@cols=\count295 +\LT@rows=\count296 +\c@LT@tables=\count297 +\c@LT@chunks=\count298 +\LT@p@ftn=\toks28 +)) +(/usr/share/texmf-dist/tex/latex/enumitem/enumitem.sty +Package: enumitem 2019/06/20 v3.9 Customized lists +\labelindent=\skip60 +\enit@outerparindent=\dimen260 +\enit@toks=\toks29 +\enit@inbox=\box66 +\enit@count@id=\count299 +\enitdp@description=\count300 +) (./cv_da.aux) +\openout1 = `cv_da.aux'. + +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 27. +LaTeX Font Info: ... okay on input line 27. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 27. +LaTeX Font Info: ... okay on input line 27. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 27. +LaTeX Font Info: ... okay on input line 27. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 27. +LaTeX Font Info: ... okay on input line 27. +LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 27. +LaTeX Font Info: ... okay on input line 27. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 27. +LaTeX Font Info: ... okay on input line 27. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 27. +LaTeX Font Info: ... okay on input line 27. +LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 27. +LaTeX Font Info: ... okay on input line 27. +LaTeX Font Info: Checking defaults for PU/pdf/m/n on input line 27. +LaTeX Font Info: ... okay on input line 27. + +*geometry* driver: auto-detecting +*geometry* detected driver: pdftex +*geometry* verbose mode - [ preamble ] result: +* driver: pdftex +* paper: a4paper +* layout: +* layoutoffset:(h,v)=(0.0pt,0.0pt) +* modes: +* h-part:(L,W,R)=(70.0001pt, 457.50766pt, 70.0001pt) +* v-part:(T,H,B)=(70.0001pt, 705.04663pt, 70.0001pt) +* \paperwidth=597.50787pt +* \paperheight=845.04684pt +* \textwidth=457.50766pt +* \textheight=705.04663pt +* \oddsidemargin=-2.26988pt +* \evensidemargin=-2.26988pt +* \topmargin=-39.26988pt +* \headheight=12.0pt +* \headsep=25.0pt +* \topskip=10.0pt +* \footskip=30.0pt +* \marginparwidth=57.0pt +* \marginparsep=11.0pt +* \columnsep=10.0pt +* \skip\footins=9.0pt plus 4.0pt minus 2.0pt +* \hoffset=0.0pt +* \voffset=0.0pt +* \mag=1000 +* \@twocolumnfalse +* \@twosidefalse +* \@mparswitchfalse +* \@reversemarginfalse +* (1in=72.27pt=25.4mm, 1cm=28.453pt) + +(/usr/share/texmf-dist/tex/context/base/mkii/supp-pdf.mkii +[Loading MPS to PDF converter (version 2006.09.02).] +\scratchcounter=\count301 +\scratchdimen=\dimen261 +\scratchbox=\box67 +\nofMPsegments=\count302 +\nofMParguments=\count303 +\everyMPshowfont=\toks30 +\MPscratchCnt=\count304 +\MPscratchDim=\dimen262 +\MPnumerator=\count305 +\makeMPintoPDFobject=\count306 +\everyMPtoPDFconversion=\toks31 +) (/usr/share/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty +Package: epstopdf-base 2020-01-24 v2.11 Base part for package epstopdf +Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4 +85. + +(/usr/share/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv +e +)) +Package hyperref Info: Link coloring OFF on input line 27. + (./cv_da.out) +(./cv_da.out) +\@outlinefile=\write3 +\openout3 = `cv_da.out'. + + +(/usr/share/texmf-dist/tex/latex/fontawesome5/ufontawesomefree2.fd) +(/usr/share/texmf-dist/tex/latex/fontawesome5/ufontawesomebrands0.fd) +(/usr/share/texmf-dist/tex/latex/fontawesome5/ufontawesomefree0.fd) +(/usr/share/texmf-dist/tex/latex/fontawesome5/ufontawesomefree1.fd) +(/usr/share/texmf-dist/tex/latex/marvosym/umvs.fd) +Overfull \vbox (48.0pt too high) detected at line 48 + [] + + +Overfull \vbox (48.0pt too high) detected at line 48 + [] + + +Underfull \hbox (badness 10000) in alignment at lines 100--100 +[][][] + [] + + +Overfull \hbox (295.0841pt too wide) in paragraph at lines 67--102 + [] + [] + +[1 + +{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}{/usr/share/texmf-dist/fonts +/enc/dvips/fontawesome5/fa5free2.enc}{/usr/share/texmf-dist/fonts/enc/dvips/fon +tawesome5/fa5brands0.enc}{/usr/share/texmf-dist/fonts/enc/dvips/fontawesome5/fa +5free0.enc}{/usr/share/texmf-dist/fonts/enc/dvips/fontawesome5/fa5free1.enc}] [ +2] [3] (./cv_da.aux) +Package rerunfilecheck Info: File `cv_da.out' has not changed. +(rerunfilecheck) Checksum: D41D8CD98F00B204E9800998ECF8427E;0. + ) +Here is how much of TeX's memory you used: + 15155 strings out of 477985 + 264198 string characters out of 5840058 + 1876388 words of memory out of 5000000 + 35143 multiletter control sequences out of 15000+600000 + 516591 words of font info for 46 fonts, out of 8000000 for 9000 + 14 hyphenation exceptions out of 8191 + 75i,13n,76p,298b,686s stack positions out of 10000i,1000n,20000p,200000b,200000s + +Output written on cv_da.pdf (3 pages, 153590 bytes). +PDF statistics: + 110 PDF objects out of 1000 (max. 8388607) + 68 compressed objects within 1 object stream + 13 named destinations out of 1000 (max. 500000) + 1 words of extra memory for PDF output out of 10000 (max. 10000000) + diff --git a/example/cv_da.out b/example/cv_da.out new file mode 100644 index 0000000..e69de29 diff --git a/example/cv_da.pdf b/example/cv_da.pdf new file mode 100644 index 0000000..b8089b0 Binary files /dev/null and b/example/cv_da.pdf differ diff --git a/example/cv_da.tex b/example/cv_da.tex new file mode 100644 index 0000000..cde802f --- /dev/null +++ b/example/cv_da.tex @@ -0,0 +1,205 @@ +\documentclass[a4paper]{report} +\usepackage[utf8]{inputenc} +\usepackage{anysize} +\usepackage[a4paper,margin=7em]{geometry} +\usepackage{float} +\usepackage{graphicx} % Required for figures +\usepackage{booktabs} +\usepackage{hyperref} +\usepackage{fontawesome5} +\usepackage{multirow} +\usepackage{array} +\usepackage{lipsum} +\usepackage[export]{adjustbox} +\usepackage{marvosym} +\usepackage{tabularx} +%\usepackage{ltablex} +\usepackage{tabu} +\usepackage{longtable}[=v4.13] +\usepackage{enumitem} +\setitemize{itemsep=2pt, topsep=2pt, align=right, labelindent=\parindent, leftmargin=!, itemindent=!, labelsep=.5em, labelwidth=!} + +\def\secsep{\hrule width5cm} +%\tabulinesep=0pt +%\extrarowsep=-3pt +%\def\secsep{\hrule} +\title{\bfseries\Huge CV} +\begin{document} +%\section*{\Huge CV}\subsection*{Thomas Krogh Lohse} +\section*{\centering \Huge CV}\subsection*{\centering Thomas Krogh Lohse} + +\begin{tabularx}{\textwidth}{lX} + \toprule%\\[-10pt] + \href{https://maps.app.goo.gl/mtFWbUVz1f8x7saS8}{\faIcon{map-marker-alt}~Aalborg Øst 9220, Denmark}& + \multirow[t]{7}{=}{ + Jeg er en Software kandidatstuderende (MSc) ved Aalborg Universitet (AAU). + Min fascination af programmering har ført mig på en rejse af selvstændig læring siden jeg var 16 år gammel. + Mine interesser omfatter softwareudviklingsteori, og jeg har prøvet kræfter med backend, systemudvikling og firmwareudvikling. + Det, der virkelig fanger mig, er at udforske nuancerne og konstruktionerne i forskellige programmeringssprog, hvilket giver mig indsigt i, hvad der er bedst egnet til forskellige problemer (i øjeblikket elsker jeg funktionel programmering). + Denne blanding af teoretisk viden og praktiske færdigheder hjælper mig på min rejse i den dynamiske verden af software udvikling. + }\\\\[-4pt] + \href{tel:+4551164199}{\faIcon{mobile-alt}~+45 51 16 41 99} \\\\[-4pt]%[8pt] + \href{https://github.com/t-lohse}{\faIcon{github}~\footnotesize\faIcon{at}\normalsize\texttt{t-lohse}} \\\\[-4pt]%[8pt] + \href{https://gitlab.com/tlohse}{\faIcon{gitlab}~\footnotesize\faIcon{at}\normalsize\texttt{tlohse}} \\\\[-4pt]%[8pt] + \href{mailto:mail@tlohse.dk}{\faIcon{envelope}~mail\normalsize\MVAt tlohse.dk} \\\\[-4pt]%[8pt] + \href{https://linkedin.com/in/thomas-lohse}{\faIcon{linkedin}~thomas-lohse}\\\\[-4pt] + \href{https://tlohse.dk}{\faIcon{link}~tlohse.dk}\\\\[-11pt] + \bottomrule +\end{tabularx}%\\[8pt] +%\par\noindent\rule{\textwidth}{1pt} +\section*{Tekniske Komptencer} +\secsep +\vspace{1em} +%\setlength{\tabcolsep}{7pt} +\newcolumntype{Y}{>{\centering\arraybackslash}X} +\iffalse +\begin{tabularx}{\textwidth}{YYY} + \centering + \large\textbf{Software Development} & \textbf{git} & \textbf{Project Development} \\ + \normalsize Since 2017 & Since 2018 & Since 2017 +\end{tabularx}% +\fi + +%\vspace{1em}\hrule width2.5cm\vspace{1em} + +%\begin{tabularx}{\linewidth}{l|l|l} +\begin{center} + \begin{tabular}{l|l|l} + %\textbf{Known Programming Languages:} & \textbf{Known Tools:} \\ + {\begin{tabular}[t]{lll} + \textbf{Language} & \textbf{Since} & \textbf{Level} \\ + Haskell & 2023 & 8/10 \\ + Kotlin & 2022 & 8/10 \\ + Java & 2022 & 8/10 \\ + Rust & 2021 & 9/10 \\ + Bash & 2020 & 7/10 \\ + C/C++ & 2020 & 7/10 \\ + C\# & 2017 & 8/10 + \end{tabular}} + & + {\begin{tabular}[t]{lll} + \textbf{Tool} & \textbf{Since} & \textbf{Level} \\ + Cabal & 2023 & 7/10 \\ + Docker & 2021 & 7/10 \\ + Cargo & 2021 & 8/10 \\ + Linux & 2020 & 8/10 \\ + GitHub & 2018 & 9/10 \\ + Git & 2018 & 9/10 \\ + .NET & 2018 & 7/10 + \end{tabular}} + & + {\begin{tabularx}{\linewidth}[t]{lll} + \textbf{Additional} & \textbf{Since} & \textbf{Level} \\ + CI/CD & 2022 & 8/10 \\ + SCRUM & 2022 & 8/10 \\ + REST API & 2021 & 7/10 \\ + Embedded & 2019 & 7/10 \\ + Projekter & 2017 & 9/10 \\ + Programming & 2017 & 9/10 \\ + %BUZZWORD PLS + \end{tabularx}} + \end{tabular} +\end{center} + +\newcommand{\p}[1]{\textbf{#1}\mbox{}\newline} +\def\n{\\\\} +\section*{Uddannelse} +\secsep +\begin{longtabu} to \textwidth {r|X} + 2023--Now & \p{Universitet (Master)} + Studenrende ved Aalborg Universitet på Software Kandidatuddannelsen. Det følgende beskriver projekterne på hvert semester (* er det nuværende): + \begin{itemize}[leftmargin=4em] + \item[\textbf{1.}] Udviklede en onling læringsplatform til programmingsintroduktion, bestående af flere forskellige services, som en REST API, frontend, og en separat service til at afvikle kode. + Projektet blev deployed med Docker Swarm, og skrevet i TypeScript. + \item[\textbf{*2.}] TBA + \end{itemize} + \\ + 2020--2023 & \p{Universitet (Bachelor)} + Studenrende ved Aalborg Universitet på Software Bacheloruddannelsen. Det følgende beskriver projekterne på hvert semester: + \begin{itemize}[leftmargin=4em] + \item[\textbf{1.}] Udviklede et vagtplanlægningssystem for Siemens Gamesas produktionsarbejderhold (Skrevet i C). + \item[\textbf{2.}] Implementerede Signal Protokollen i et IoT-miljø (Skrevet i JavaScript). + \item[\textbf{3.}] Udviklede et program til bedre håndtering af Siemens Gamesas vindturbinevingers lokation og produktion (Skrevet i C\#). + \item[\textbf{4.}] Udviklede et programmingssprog som erstatning af Bash shell scripting (Skrevet i C\#) + \item[\textbf{5.}] Et multiproject, hvor seks grupper skulle samarbejde i den samme kodebase (Skrevet i Rust). + \item[\textbf{6.}] Udviklede et model learning værktøj til ar reverse engineer kildekoden fra PLCer i ladder logic (Skrevet i Java og C\#). + \end{itemize} + \\ + 2017--2020 & \p{Gymnaisum} + Elev på Aalborg Techcollege (AATG), hvor jeg tog den tekniske studentereksamen (HTX), + med profilfagende \textit{Kommunikation \& IT} A og \textit{Programmering} B, + samt teknikfag i \textit{Elektronisk Udvikling og Produktion} A. +\end{longtabu} + \iffalse% + \\\\ + 2016--2017 & \textbf{Continuation School}\\lign=right, labelindent=!, leftmargin=6em, itemindent=!, labelsep=1em, labelwidth=!] + & Attendee at Ingstrup Efterskole in grade nine. + \\\\ + 2007--2016 & \textbf{Public School}\\ + & Attendee at the public school in 9310 Vodskov (Vodskov Skole) from grade one to grade eight. + \fi% + +\section*{Beskæftigelse} +\secsep +\begin{longtabu} to \textwidth {r|X} + Efterår 2023 & \p{Product Owner for 5. semester Software multiproject} + Jeg var product ownser for multiprojektet på 5. semester Software, bestående af seks grupper med cirka seks medlemmer i hver gruppe. Projektet var på 15 ECTS-point. + Mine ansvarsområder inkluderede at lave opgaver der skulle implementeres af dem, besvarelse af spørgsmål vedrørende kodebasen og opgaverne, samt generelt at fungere som vejleder i projektet og som product owner. + \n + Efterår 2022 & \p{Undervisningsassistent} + Jeg var undervisningsassistent på Imperativ Programmeringkurset på 1. semester af Software og Datalogi på AAU. + Dette er det første programmeringskursus, man har på uddannelserne. Jeg skulle hjælpe studerende under øvelsessessioner, give feedback på deres afleveringsopgaver og samarbejde med kursuslæreren vedrørende øvelserne, platformen og afleveringerne. + \n + 2022--2024 & \p{Aalborg Universitet, DEIS} + Jeg arbejder som studentermedarbejder hos DEIS på \href{https://github.com/Ecdar}{Ecdar}-projektet, hvor jeg primært udvikler i Rust i backenden til model checking (\href{https://github.com/Ecdar/Reveaal}{Reveaal}), men bidrager også til de andre dele af projektet. + \n + 2022 & \p{RTX A/S} + Jeg arbejdede som studentermedhjælper hos RTX A/S i Nørresundby med både hardware- og softwareopgaver, som omfattede lodning og samling af udstyr samt udvikling af platforme til overvågning og test af større enheder/komponenter. + \n + 2018--2019 & \p{Føtex Nørresundby} + I løbet af min ansættelse hos Føtex Nørresundby havde jeg forskellige roller: + \begin{itemize}[leftmargin=11em]%\setlength\itemsep{0em} + \item[\textbf{Servicemedarbejder}] Min første kontrakt var under stillingen + Servicemedarbejder, som havde et udvalg af opgaver, hvor den primære var at + opretholde pantflaskemaskinerne. + \item[\textbf{Kasseassistent}] Omkring et halvt år efter min ansættelse, bliver + jeg tilbudt en oplæring og ny tilhørende stilling som Kasse Assistent. + \item[\textbf{Bake-Off Sal}] Da jeg fylder 18 år, og min kontrakt opsiges, + tilbyder de mig en ny kontrakt med stillingen Bake-Off Salsperson, som var min stilling + op til min opsigelse. + \end{itemize} +\end{longtabu} + +\section*{Anden Erfaring} +\secsep +\begin{longtabu} to \textwidth {r|X} +Efterår 2023 & \p{Tutorkoordinator} +Jeg arbejdede som Tutorkoordinator for nye studerende i 2023, der startede på Software-studiet på Aalborg Universitet. +Jeg var ansvarlig for at planlægge og organisere tutorplanerne og sikre, at de var på rette spor med planlægning, fundraising og afvikling af deres arrangementer, sammen med nogle arrangementer, jeg også skulle planlægge. +Jeg var også ansvarlig for at håndtere organisationens økonomi, hvilket inkluderede afsendelse og betaling af fakturaer samt budgettering. +\n +Efterår 2022 & \p{Tutorplanlægger} +Jeg arbejdede som Tutorplanlægger for nye studerende i 2022, der startede på Software-studiet på Aalborg Universitet. +Jeg var ansvarlig for at planlægge, indsamle midler og afvikle arrangementet, hvor jeg skulle koordinere en håndfuld tutorer for at gennemføre arrangementet korrekt. +\n +Efterår 2021 & \p{Tutor} +Jeg arbejdede frivilligt som tutor for nye studerende i 2021, der startede på Software-studiet på Aalborg Universitet. +\n +2021--nu & \p{UNF Spiludviklingslejr} +Jeg er frivillig ved UNFs Spiludviklingslejr, hvor jeg har haft følgende roller: +\begin{itemize}[leftmargin=4em] + \item[2024] \p{Fordreagshjælper} Assisterede med at finde og skaffe foredragsholdere til at præsentere for lejrdeltagerne samt dommere til at evaluere de spil, der bliver lavet i løbet af lejren. + \item[2024] \p{Tryk- og Dagsseddelhjælper} Assisterede med at skaffe tilladelser fra spilstudier til kunstværkdisplays og skabte morgenavisen for lejrdeltagerne. + \item[2023] \p{Tillidsperson} En af de få kontaktpersoner vedrørende lejrdeltagernes velfærd. + \item[2022] \p{Teknisk Ansvarlig} Ansvarlig for opsætningen af alt det teknsike + udstyrtil campen, samt introduktionen af git for deltagerne, og håndtering + af alle problemer de måtte have med al det tekniske. + \item[2021] \p{Programmingsassistent} Assisterer programmeringslæreren, samt + hjælp med deltagernes programmeringsrelateret problemer. + \item[2021] \p{Logistisk Ansvarlig} Ansvarlig for håndtering af logistiken + vedrørende de frivilliges anmodninger om varer, samt anskaffelsen. +\end{itemize} +\end{longtabu} +\end{document} + + diff --git a/example/cv_en.aux b/example/cv_en.aux new file mode 100644 index 0000000..580da96 --- /dev/null +++ b/example/cv_en.aux @@ -0,0 +1,15 @@ +\relax +\providecommand\hyper@newdestlabel[2]{} +\providecommand\HyField@AuxAddToFields[1]{} +\providecommand\HyField@AuxAddToCoFields[2]{} +\gdef \LT@i {\LT@entry + {1}{57.40015pt}\LT@entry + {1}{400.10751pt}} +\providecommand \oddpage@label [2]{} +\gdef \LT@ii {\LT@entry + {1}{57.40015pt}\LT@entry + {1}{400.10751pt}} +\gdef \LT@iii {\LT@entry + {1}{56.84456pt}\LT@entry + {1}{400.6631pt}} +\gdef \@abspage@last{3} diff --git a/example/cv_en.log b/example/cv_en.log new file mode 100644 index 0000000..08435ad --- /dev/null +++ b/example/cv_en.log @@ -0,0 +1,568 @@ +This is pdfTeX, Version 3.141592653-2.6-1.40.26 (TeX Live 2024/Arch Linux) (preloaded format=pdflatex 2024.5.29) 6 JUL 2024 21:23 +entering extended mode + restricted \write18 enabled. + %&-line parsing enabled. +**cv_en.tex +(./cv_en.tex +LaTeX2e <2023-11-01> patch level 1 +L3 programming layer <2024-02-20> +(/usr/share/texmf-dist/tex/latex/base/report.cls +Document Class: report 2023/05/17 v1.4n Standard LaTeX document class +(/usr/share/texmf-dist/tex/latex/base/size10.clo +File: size10.clo 2023/05/17 v1.4n Standard LaTeX file (size option) +) +\c@part=\count188 +\c@chapter=\count189 +\c@section=\count190 +\c@subsection=\count191 +\c@subsubsection=\count192 +\c@paragraph=\count193 +\c@subparagraph=\count194 +\c@figure=\count195 +\c@table=\count196 +\abovecaptionskip=\skip48 +\belowcaptionskip=\skip49 +\bibindent=\dimen140 +) +(/usr/share/texmf-dist/tex/latex/base/inputenc.sty +Package: inputenc 2021/02/14 v1.3d Input encoding file +\inpenc@prehook=\toks17 +\inpenc@posthook=\toks18 +) +(/usr/share/texmf-dist/tex/latex/anysize/anysize.sty +Package: anysize 1994/08/13 setting margin sizes + +document style option `anysize' loaded +Michael Salzenberg, Thomas Esser, Dirk Hillbrecht +Version 1.0, Aug 13, 1994 +\@Leftmargin=\dimen141 +\@Rightmargin=\dimen142 +\@Topmargin=\dimen143 +\@Bottommargin=\dimen144 +) (/usr/share/texmf-dist/tex/latex/geometry/geometry.sty +Package: geometry 2020/01/02 v5.9 Page Geometry + +(/usr/share/texmf-dist/tex/latex/graphics/keyval.sty +Package: keyval 2022/05/29 v1.15 key=value parser (DPC) +\KV@toks@=\toks19 +) +(/usr/share/texmf-dist/tex/generic/iftex/ifvtex.sty +Package: ifvtex 2019/10/25 v1.7 ifvtex legacy package. Use iftex instead. + +(/usr/share/texmf-dist/tex/generic/iftex/iftex.sty +Package: iftex 2022/02/03 v1.0f TeX engine tests +)) +\Gm@cnth=\count197 +\Gm@cntv=\count198 +\c@Gm@tempcnt=\count199 +\Gm@bindingoffset=\dimen145 +\Gm@wd@mp=\dimen146 +\Gm@odd@mp=\dimen147 +\Gm@even@mp=\dimen148 +\Gm@layoutwidth=\dimen149 +\Gm@layoutheight=\dimen150 +\Gm@layouthoffset=\dimen151 +\Gm@layoutvoffset=\dimen152 +\Gm@dimlist=\toks20 +) +(/usr/share/texmf-dist/tex/latex/float/float.sty +Package: float 2001/11/08 v1.3d Float enhancements (AL) +\c@float@type=\count266 +\float@exts=\toks21 +\float@box=\box51 +\@float@everytoks=\toks22 +\@floatcapt=\box52 +) +(/usr/share/texmf-dist/tex/latex/graphics/graphicx.sty +Package: graphicx 2021/09/16 v1.2d Enhanced LaTeX Graphics (DPC,SPQR) + +(/usr/share/texmf-dist/tex/latex/graphics/graphics.sty +Package: graphics 2022/03/10 v1.4e Standard LaTeX Graphics (DPC,SPQR) + +(/usr/share/texmf-dist/tex/latex/graphics/trig.sty +Package: trig 2021/08/11 v1.11 sin cos tan (DPC) +) +(/usr/share/texmf-dist/tex/latex/graphics-cfg/graphics.cfg +File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration +) +Package graphics Info: Driver file: pdftex.def on input line 107. + +(/usr/share/texmf-dist/tex/latex/graphics-def/pdftex.def +File: pdftex.def 2022/09/22 v1.2b Graphics/color driver for pdftex +)) +\Gin@req@height=\dimen153 +\Gin@req@width=\dimen154 +) +(/usr/share/texmf-dist/tex/latex/booktabs/booktabs.sty +Package: booktabs 2020/01/12 v1.61803398 Publication quality tables +\heavyrulewidth=\dimen155 +\lightrulewidth=\dimen156 +\cmidrulewidth=\dimen157 +\belowrulesep=\dimen158 +\belowbottomsep=\dimen159 +\aboverulesep=\dimen160 +\abovetopsep=\dimen161 +\cmidrulesep=\dimen162 +\cmidrulekern=\dimen163 +\defaultaddspace=\dimen164 +\@cmidla=\count267 +\@cmidlb=\count268 +\@aboverulesep=\dimen165 +\@belowrulesep=\dimen166 +\@thisruleclass=\count269 +\@lastruleclass=\count270 +\@thisrulewidth=\dimen167 +) +(/usr/share/texmf-dist/tex/latex/hyperref/hyperref.sty +Package: hyperref 2024-01-20 v7.01h Hypertext links for LaTeX + +(/usr/share/texmf-dist/tex/latex/kvsetkeys/kvsetkeys.sty +Package: kvsetkeys 2022-10-05 v1.19 Key value parser (HO) +) +(/usr/share/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty +Package: kvdefinekeys 2019-12-19 v1.6 Define keys (HO) +) +(/usr/share/texmf-dist/tex/generic/pdfescape/pdfescape.sty +Package: pdfescape 2019/12/09 v1.15 Implements pdfTeX's escape features (HO) + +(/usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty +Package: ltxcmds 2023-12-04 v1.26 LaTeX kernel commands for general use (HO) +) +(/usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty +Package: pdftexcmds 2020-06-27 v0.33 Utility functions of pdfTeX for LuaTeX (HO +) + +(/usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty +Package: infwarerr 2019/12/03 v1.5 Providing info/warning/error messages (HO) +) +Package pdftexcmds Info: \pdf@primitive is available. +Package pdftexcmds Info: \pdf@ifprimitive is available. +Package pdftexcmds Info: \pdfdraftmode found. +)) +(/usr/share/texmf-dist/tex/latex/hycolor/hycolor.sty +Package: hycolor 2020-01-27 v1.10 Color options for hyperref/bookmark (HO) +) +(/usr/share/texmf-dist/tex/latex/auxhook/auxhook.sty +Package: auxhook 2019-12-17 v1.6 Hooks for auxiliary files (HO) +) +(/usr/share/texmf-dist/tex/latex/hyperref/nameref.sty +Package: nameref 2023-11-26 v2.56 Cross-referencing by name of section + +(/usr/share/texmf-dist/tex/latex/refcount/refcount.sty +Package: refcount 2019/12/15 v3.6 Data extraction from label references (HO) +) +(/usr/share/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty +Package: gettitlestring 2019/12/15 v1.6 Cleanup title references (HO) + +(/usr/share/texmf-dist/tex/latex/kvoptions/kvoptions.sty +Package: kvoptions 2022-06-15 v3.15 Key value format for package options (HO) +)) +\c@section@level=\count271 +) +(/usr/share/texmf-dist/tex/latex/etoolbox/etoolbox.sty +Package: etoolbox 2020/10/05 v2.5k e-TeX tools for LaTeX (JAW) +\etb@tempcnta=\count272 +) +\@linkdim=\dimen168 +\Hy@linkcounter=\count273 +\Hy@pagecounter=\count274 + +(/usr/share/texmf-dist/tex/latex/hyperref/pd1enc.def +File: pd1enc.def 2024-01-20 v7.01h Hyperref: PDFDocEncoding definition (HO) +Now handling font encoding PD1 ... +... no UTF-8 mapping file for font encoding PD1 +) +(/usr/share/texmf-dist/tex/generic/intcalc/intcalc.sty +Package: intcalc 2019/12/15 v1.3 Expandable calculations with integers (HO) +) +\Hy@SavedSpaceFactor=\count275 + +(/usr/share/texmf-dist/tex/latex/hyperref/puenc.def +File: puenc.def 2024-01-20 v7.01h Hyperref: PDF Unicode definition (HO) +Now handling font encoding PU ... +... no UTF-8 mapping file for font encoding PU +) +Package hyperref Info: Hyper figures OFF on input line 4179. +Package hyperref Info: Link nesting OFF on input line 4184. +Package hyperref Info: Hyper index ON on input line 4187. +Package hyperref Info: Plain pages OFF on input line 4194. +Package hyperref Info: Backreferencing OFF on input line 4199. +Package hyperref Info: Implicit mode ON; LaTeX internals redefined. +Package hyperref Info: Bookmarks ON on input line 4446. +\c@Hy@tempcnt=\count276 + +(/usr/share/texmf-dist/tex/latex/url/url.sty +\Urlmuskip=\muskip16 +Package: url 2013/09/16 ver 3.4 Verb mode for urls, etc. +) +LaTeX Info: Redefining \url on input line 4784. +\XeTeXLinkMargin=\dimen169 + +(/usr/share/texmf-dist/tex/generic/bitset/bitset.sty +Package: bitset 2019/12/09 v1.3 Handle bit-vector datatype (HO) + +(/usr/share/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty +Package: bigintcalc 2019/12/15 v1.5 Expandable calculations on big integers (HO +) +)) +\Fld@menulength=\count277 +\Field@Width=\dimen170 +\Fld@charsize=\dimen171 +Package hyperref Info: Hyper figures OFF on input line 6063. +Package hyperref Info: Link nesting OFF on input line 6068. +Package hyperref Info: Hyper index ON on input line 6071. +Package hyperref Info: backreferencing OFF on input line 6078. +Package hyperref Info: Link coloring OFF on input line 6083. +Package hyperref Info: Link coloring with OCG OFF on input line 6088. +Package hyperref Info: PDF/A mode OFF on input line 6093. + +(/usr/share/texmf-dist/tex/latex/base/atbegshi-ltx.sty +Package: atbegshi-ltx 2021/01/10 v1.0c Emulation of the original atbegshi +package with kernel methods +) +\Hy@abspage=\count278 +\c@Item=\count279 +\c@Hfootnote=\count280 +) +Package hyperref Info: Driver (autodetected): hpdftex. + +(/usr/share/texmf-dist/tex/latex/hyperref/hpdftex.def +File: hpdftex.def 2024-01-20 v7.01h Hyperref driver for pdfTeX + +(/usr/share/texmf-dist/tex/latex/base/atveryend-ltx.sty +Package: atveryend-ltx 2020/08/19 v1.0a Emulation of the original atveryend pac +kage +with kernel methods +) +\Fld@listcount=\count281 +\c@bookmark@seq@number=\count282 + +(/usr/share/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty +Package: rerunfilecheck 2022-07-10 v1.10 Rerun checks for auxiliary files (HO) + +(/usr/share/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty +Package: uniquecounter 2019/12/15 v1.4 Provide unlimited unique counter (HO) +) +Package uniquecounter Info: New unique counter `rerunfilecheck' on input line 2 +85. +) +\Hy@SectionHShift=\skip50 +) +(/usr/share/texmf-dist/tex/latex/fontawesome5/fontawesome5.sty +(/usr/share/texmf-dist/tex/latex/l3kernel/expl3.sty +Package: expl3 2024-02-20 L3 programming layer (loader) + +(/usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def +File: l3backend-pdftex.def 2024-02-20 L3 backend support: PDF output (pdfTeX) +\l__color_backend_stack_int=\count283 +\l__pdf_internal_box=\box53 +)) +Package: fontawesome5 2022/05/02 v5.15.4 Font Awesome 5 + +(/usr/share/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty +Package: l3keys2e 2024-02-18 LaTeX2e option processing using LaTeX3 keys +) +(/usr/share/texmf-dist/tex/latex/l3packages/xparse/xparse.sty +Package: xparse 2024-02-18 L3 Experimental document command parser +) +(/usr/share/texmf-dist/tex/latex/fontawesome5/fontawesome5-generic-helper.sty +Package: fontawesome5-generic-helper 2022/05/02 v5.15.4 non-uTeX helper for fon +tawesome5 + +(/usr/share/texmf-dist/tex/latex/fontawesome5/fontawesome5-mapping.def))) +(/usr/share/texmf-dist/tex/latex/multirow/multirow.sty +Package: multirow 2021/03/15 v2.8 Span multiple rows of a table +\multirow@colwidth=\skip51 +\multirow@cntb=\count284 +\multirow@dima=\skip52 +\bigstrutjot=\dimen172 +) +(/usr/share/texmf-dist/tex/latex/tools/array.sty +Package: array 2023/10/16 v2.5g Tabular extension package (FMi) +\col@sep=\dimen173 +\ar@mcellbox=\box54 +\extrarowheight=\dimen174 +\NC@list=\toks23 +\extratabsurround=\skip53 +\backup@length=\skip54 +\ar@cellbox=\box55 +) +(/usr/share/texmf-dist/tex/latex/lipsum/lipsum.sty +Package: lipsum 2021-09-20 v2.7 150 paragraphs of Lorem Ipsum dummy text +\g__lipsum_par_int=\count285 +\l__lipsum_a_int=\count286 +\l__lipsum_b_int=\count287 + +(/usr/share/texmf-dist/tex/latex/lipsum/lipsum.ltd.tex)) +(/usr/share/texmf-dist/tex/latex/adjustbox/adjustbox.sty +Package: adjustbox 2022/10/17 v1.3a Adjusting TeX boxes (trim, clip, ...) + +(/usr/share/texmf-dist/tex/latex/xkeyval/xkeyval.sty +Package: xkeyval 2022/06/16 v2.9 package option processing (HA) + +(/usr/share/texmf-dist/tex/generic/xkeyval/xkeyval.tex +(/usr/share/texmf-dist/tex/generic/xkeyval/xkvutils.tex +\XKV@toks=\toks24 +\XKV@tempa@toks=\toks25 +) +\XKV@depth=\count288 +File: xkeyval.tex 2014/12/03 v2.7a key=value parser (HA) +)) +(/usr/share/texmf-dist/tex/latex/adjustbox/adjcalc.sty +Package: adjcalc 2012/05/16 v1.1 Provides advanced setlength with multiple back +-ends (calc, etex, pgfmath) +) +(/usr/share/texmf-dist/tex/latex/adjustbox/trimclip.sty +Package: trimclip 2020/08/19 v1.2 Trim and clip general TeX material + +(/usr/share/texmf-dist/tex/latex/collectbox/collectbox.sty +Package: collectbox 2022/10/17 v0.4c Collect macro arguments as boxes +\collectedbox=\box56 +) +\tc@llx=\dimen175 +\tc@lly=\dimen176 +\tc@urx=\dimen177 +\tc@ury=\dimen178 +Package trimclip Info: Using driver 'tc-pdftex.def'. + +(/usr/share/texmf-dist/tex/latex/adjustbox/tc-pdftex.def +File: tc-pdftex.def 2019/01/04 v2.2 Clipping driver for pdftex +)) +\adjbox@Width=\dimen179 +\adjbox@Height=\dimen180 +\adjbox@Depth=\dimen181 +\adjbox@Totalheight=\dimen182 +\adjbox@pwidth=\dimen183 +\adjbox@pheight=\dimen184 +\adjbox@pdepth=\dimen185 +\adjbox@ptotalheight=\dimen186 + +(/usr/share/texmf-dist/tex/latex/ifoddpage/ifoddpage.sty +Package: ifoddpage 2022/10/18 v1.2 Conditionals for odd/even page detection +\c@checkoddpage=\count289 +) +(/usr/share/texmf-dist/tex/latex/varwidth/varwidth.sty +Package: varwidth 2009/03/30 ver 0.92; Variable-width minipages +\@vwid@box=\box57 +\sift@deathcycles=\count290 +\@vwid@loff=\dimen187 +\@vwid@roff=\dimen188 +)) +(/usr/share/texmf-dist/tex/latex/marvosym/marvosym.sty +Package: marvosym 2011/07/20 v2.2 Martin Vogel's Symbols font definitions +) +(/usr/share/texmf-dist/tex/latex/tools/tabularx.sty +Package: tabularx 2023/07/08 v2.11c `tabularx' package (DPC) +\TX@col@width=\dimen189 +\TX@old@table=\dimen190 +\TX@old@col=\dimen191 +\TX@target=\dimen192 +\TX@delta=\dimen193 +\TX@cols=\count291 +\TX@ftn=\toks26 +) +(/usr/share/texmf-dist/tex/latex/tabu/tabu.sty +Package: tabu 2019/01/11 v2.9 - flexible LaTeX tabulars (FC+tabu-fixed) +\c@taburow=\count292 +\tabu@nbcols=\count293 +\tabu@cnt=\count294 +\tabu@Xcol=\count295 +\tabu@alloc=\count296 +\tabu@nested=\count297 +\tabu@target=\dimen194 +\tabu@spreadtarget=\dimen195 +\tabu@naturalX=\dimen196 +\tabucolX=\dimen197 +\tabu@Xsum=\dimen198 +\extrarowdepth=\dimen199 +\abovetabulinesep=\dimen256 +\belowtabulinesep=\dimen257 +\tabustrutrule=\dimen258 +\tabu@thebody=\toks27 +\tabu@footnotes=\toks28 +\tabu@box=\box58 +\tabu@arstrutbox=\box59 +\tabu@hleads=\box60 +\tabu@vleads=\box61 +\tabu@cellskip=\skip55 +) +(/usr/share/texmf-dist/tex/latex/tools/longtable.sty +Rollback for package 'longtable' requested -> version 'v4.13'. + This corresponds to the release introduced on 2020-01-02. + +(/usr/share/texmf-dist/tex/latex/tools/longtable-2020-01-07.sty +Package: longtable 2020/01/07 v4.13 Multi-page Table package (DPC) +\LTleft=\skip56 +\LTright=\skip57 +\LTpre=\skip58 +\LTpost=\skip59 +\LTchunksize=\count298 +\LTcapwidth=\dimen259 +\LT@head=\box62 +\LT@firsthead=\box63 +\LT@foot=\box64 +\LT@lastfoot=\box65 +\LT@cols=\count299 +\LT@rows=\count300 +\c@LT@tables=\count301 +\c@LT@chunks=\count302 +\LT@p@ftn=\toks29 +)) +(/usr/share/texmf-dist/tex/latex/enumitem/enumitem.sty +Package: enumitem 2019/06/20 v3.9 Customized lists +\labelindent=\skip60 +\enit@outerparindent=\dimen260 +\enit@toks=\toks30 +\enit@inbox=\box66 +\enit@count@id=\count303 +\enitdp@description=\count304 +) (./cv_en.aux) +\openout1 = `cv_en.aux'. + +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 27. +LaTeX Font Info: ... okay on input line 27. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 27. +LaTeX Font Info: ... okay on input line 27. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 27. +LaTeX Font Info: ... okay on input line 27. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 27. +LaTeX Font Info: ... okay on input line 27. +LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 27. +LaTeX Font Info: ... okay on input line 27. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 27. +LaTeX Font Info: ... okay on input line 27. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 27. +LaTeX Font Info: ... okay on input line 27. +LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 27. +LaTeX Font Info: ... okay on input line 27. +LaTeX Font Info: Checking defaults for PU/pdf/m/n on input line 27. +LaTeX Font Info: ... okay on input line 27. + +*geometry* driver: auto-detecting +*geometry* detected driver: pdftex +*geometry* verbose mode - [ preamble ] result: +* driver: pdftex +* paper: a4paper +* layout: +* layoutoffset:(h,v)=(0.0pt,0.0pt) +* modes: +* h-part:(L,W,R)=(70.0001pt, 457.50766pt, 70.0001pt) +* v-part:(T,H,B)=(70.0001pt, 705.04663pt, 70.0001pt) +* \paperwidth=597.50787pt +* \paperheight=845.04684pt +* \textwidth=457.50766pt +* \textheight=705.04663pt +* \oddsidemargin=-2.26988pt +* \evensidemargin=-2.26988pt +* \topmargin=-39.26988pt +* \headheight=12.0pt +* \headsep=25.0pt +* \topskip=10.0pt +* \footskip=30.0pt +* \marginparwidth=57.0pt +* \marginparsep=11.0pt +* \columnsep=10.0pt +* \skip\footins=9.0pt plus 4.0pt minus 2.0pt +* \hoffset=0.0pt +* \voffset=0.0pt +* \mag=1000 +* \@twocolumnfalse +* \@twosidefalse +* \@mparswitchfalse +* \@reversemarginfalse +* (1in=72.27pt=25.4mm, 1cm=28.453pt) + +(/usr/share/texmf-dist/tex/context/base/mkii/supp-pdf.mkii +[Loading MPS to PDF converter (version 2006.09.02).] +\scratchcounter=\count305 +\scratchdimen=\dimen261 +\scratchbox=\box67 +\nofMPsegments=\count306 +\nofMParguments=\count307 +\everyMPshowfont=\toks31 +\MPscratchCnt=\count308 +\MPscratchDim=\dimen262 +\MPnumerator=\count309 +\makeMPintoPDFobject=\count310 +\everyMPtoPDFconversion=\toks32 +) (/usr/share/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty +Package: epstopdf-base 2020-01-24 v2.11 Base part for package epstopdf +Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4 +85. + +(/usr/share/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv +e +)) +Package hyperref Info: Link coloring OFF on input line 27. + (./cv_en.out) +(./cv_en.out) +\@outlinefile=\write3 +\openout3 = `cv_en.out'. + + +(/usr/share/texmf-dist/tex/latex/fontawesome5/ufontawesomefree2.fd) +Overfull \vbox (12.0pt too high) detected at line 56 + [] + +(/usr/share/texmf-dist/tex/latex/fontawesome5/ufontawesomebrands0.fd) +(/usr/share/texmf-dist/tex/latex/fontawesome5/ufontawesomefree0.fd) +(/usr/share/texmf-dist/tex/latex/fontawesome5/ufontawesomefree1.fd) +(/usr/share/texmf-dist/tex/latex/marvosym/umvs.fd) +Overfull \vbox (48.0pt too high) detected at line 56 + [] + + +Overfull \vbox (48.0pt too high) detected at line 56 + [] + + +Underfull \hbox (badness 10000) in alignment at lines 108--108 +[][][] + [] + + +Overfull \hbox (295.0841pt too wide) in paragraph at lines 75--110 + [] + [] + +[1 + +{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}{/usr/share/texmf-dist/fonts +/enc/dvips/fontawesome5/fa5free2.enc}{/usr/share/texmf-dist/fonts/enc/dvips/fon +tawesome5/fa5brands0.enc}{/usr/share/texmf-dist/fonts/enc/dvips/fontawesome5/fa +5free0.enc}{/usr/share/texmf-dist/fonts/enc/dvips/fontawesome5/fa5free1.enc}] +Overfull \vbox (5.73364pt too high) has occurred while \output is active [] + + +[2] [3] (./cv_en.aux) + *********** +LaTeX2e <2023-11-01> patch level 1 +L3 programming layer <2024-02-20> + *********** +Package rerunfilecheck Info: File `cv_en.out' has not changed. +(rerunfilecheck) Checksum: D41D8CD98F00B204E9800998ECF8427E;0. + ) +Here is how much of TeX's memory you used: + 15298 strings out of 476076 + 261265 string characters out of 5793775 + 1951187 words of memory out of 5000000 + 37197 multiletter control sequences out of 15000+600000 + 562373 words of font info for 50 fonts, out of 8000000 for 9000 + 14 hyphenation exceptions out of 8191 + 75i,13n,79p,331b,686s stack positions out of 10000i,1000n,20000p,200000b,200000s + +Output written on cv_en.pdf (3 pages, 152769 bytes). +PDF statistics: + 110 PDF objects out of 1000 (max. 8388607) + 68 compressed objects within 1 object stream + 13 named destinations out of 1000 (max. 500000) + 1 words of extra memory for PDF output out of 10000 (max. 10000000) + diff --git a/example/cv_en.out b/example/cv_en.out new file mode 100644 index 0000000..e69de29 diff --git a/example/cv_en.pdf b/example/cv_en.pdf new file mode 100644 index 0000000..78a6292 Binary files /dev/null and b/example/cv_en.pdf differ diff --git a/example/cv_en.tex b/example/cv_en.tex new file mode 100644 index 0000000..9beb807 --- /dev/null +++ b/example/cv_en.tex @@ -0,0 +1,270 @@ +\documentclass[a4paper]{report} +\usepackage[utf8]{inputenc} +\usepackage{anysize} +\usepackage[a4paper,margin=7em]{geometry} +\usepackage{float} +\usepackage{graphicx} % Required for figures +\usepackage{booktabs} +\usepackage{hyperref} +\usepackage{fontawesome5} +\usepackage{multirow} +\usepackage{array} +\usepackage{lipsum} +\usepackage[export]{adjustbox} +\usepackage{marvosym} +\usepackage{tabularx} +%\usepackage{ltablex} +\usepackage{tabu} +\usepackage{longtable}[=v4.13] +\usepackage{enumitem} +\setitemize{itemsep=2pt, topsep=2pt, align=right, labelindent=\parindent, leftmargin=!, itemindent=!, labelsep=.5em, labelwidth=!} + +\def\secsep{\hrule width5cm} +%\tabulinesep=0pt +%\extrarowsep=-3pt +%\def\secsep{\hrule} +\title{\bfseries\Huge CV} +\begin{document} +%\section*{\Huge CV}\subsection*{Thomas Krogh Lohse} +\section*{\centering \Huge CV}\subsection*{\centering Thomas Krogh Lohse} + +\begin{tabularx}{\textwidth}{lX} + \toprule%\\[-10pt] + \href{https://maps.app.goo.gl/mtFWbUVz1f8x7saS8}{\faIcon{map-marker-alt}~Aalborg Øst 9220, Denmark}& + \multirow[t]{7}{=}{ + I am a Software Engineering Master (MSc) student at Aalborg University (AAU)% with a fervor for backend and system development. + %Since the age of 16, my journey in programming has been marked by a commitment to independent learning, particularly in the realms of software development theory. + %I specialize in backend development, with practical experience in firmware development and task automation using shell-scripts. + %Beyond this, my passion extends to exploring various programming languages and their intricacies. + %This blend of theoretical knowledge and hands-on skills positions me to excel in the intricate landscape of software engineering. + , where my fascination with programming has taken me, on my journey of independent learning since the age of 16. + My interests span software development theory, and I've dabbled in backend and system development, gaining hands-on experience in firmware development and task automation using shell-scripts. + What truly captivates me is exploring the nuances and constructs of different programming languages, giving me insight in what is best suitable for different problems (Currently love functional programming). + This mix of theoretical knowledge and practical skills aids my journey in the dynamic world of software engineering. + %This mix of theoretical knowledge and practical skills sets the stage for my journey in the dynamic world of software engineering. + %I am a Software Engineering Master's student at Aalborg University (AAU), with a passion for theoretical and practical aspects of programming. + %Since the age of 16, I've actively engaged in independent learning, focusing on software development theory. + %My expertise lies in backend and/or system development, with hands-on experience in firmware development, task automation using shell-scripts, and language parsing. + }\\\\[-4pt] + \href{tel:+4551164199}{\faIcon{mobile-alt}~+45 51 16 41 99} \\\\[-4pt]%[8pt] + \href{https://github.com/t-lohse}{\faIcon{github}~\footnotesize\faIcon{at}\normalsize\texttt{t-lohse}} \\\\[-4pt]%[8pt] + \href{https://gitlab.com/tlohse}{\faIcon{gitlab}~\footnotesize\faIcon{at}\normalsize\texttt{tlohse}} \\\\[-4pt]%[8pt] + \href{mailto:mail@tlohse.dk}{\faIcon{envelope}~mail\normalsize\MVAt tlohse.dk} \\\\[-4pt]%[8pt] + \href{https://linkedin.com/in/thomas-lohse}{\faIcon{linkedin}~thomas-lohse}\\\\[-4pt] + \href{https://tlohse.dk}{\faIcon{link}~tlohse.dk}\\\\[-11pt] + \bottomrule +\end{tabularx}%\\[8pt] +%\par\noindent\rule{\textwidth}{1pt} +\section*{Technical Competencies} +\secsep +\vspace{1em} +%\setlength{\tabcolsep}{7pt} +\newcolumntype{Y}{>{\centering\arraybackslash}X} +\iffalse +\begin{tabularx}{\textwidth}{YYY} + \centering + \large\textbf{Software Development} & \textbf{git} & \textbf{Project Development} \\ + \normalsize Since 2017 & Since 2018 & Since 2017 +\end{tabularx}% +\fi + +%\vspace{1em}\hrule width2.5cm\vspace{1em} + +%\begin{tabularx}{\linewidth}{l|l|l} +\begin{center} + \begin{tabular}{l|l|l} + %\textbf{Known Programming Languages:} & \textbf{Known Tools:} \\ + {\begin{tabular}[t]{lll} + \textbf{Language} & \textbf{Since} & \textbf{Level} \\ + Haskell & 2023 & 8/10 \\ + Kotlin & 2022 & 8/10 \\ + Java & 2022 & 8/10 \\ + Rust & 2021 & 9/10 \\ + Bash & 2020 & 7/10 \\ + C/C++ & 2020 & 7/10 \\ + C\# & 2017 & 8/10 + \end{tabular}} + & + {\begin{tabular}[t]{lll} + \textbf{Tool} & \textbf{Since} & \textbf{Level} \\ + Cabal & 2023 & 7/10 \\ + Docker & 2021 & 7/10 \\ + Cargo & 2021 & 8/10 \\ + Linux & 2020 & 8/10 \\ + GitHub & 2018 & 9/10 \\ + Git & 2018 & 9/10 \\ + .NET & 2018 & 7/10 + \end{tabular}} + & + {\begin{tabularx}{\linewidth}[t]{lll} + \textbf{Additional} & \textbf{Since} & \textbf{Level} \\ + CI/CD & 2022 & 8/10 \\ + SCRUM & 2022 & 8/10 \\ + REST API & 2021 & 7/10 \\ + Embedded & 2019 & 7/10 \\ + Projects & 2017 & 9/10 \\ + Programming & 2017 & 9/10 \\ + %BUZZWORD PLS + \end{tabularx}} + \end{tabular} +\end{center} + +\newcommand{\p}[1]{\textbf{#1}\mbox{}\newline} +\def\n{\\\\} +\section*{Education} +\secsep +\begin{longtabu} to \textwidth {r|X} + 2023--Now & \p{University (Master)} + Attendee at Aalborg University, studying Software Engineer, Master. The following describes the project from each semester (* is the current): + \begin{itemize}[leftmargin=4em] + \item[\textbf{1st}] Engineered an online learning platform for introductionary programming, with multiple services, for example a REST API, frontend, and a seperate service for executing code. The project was deployed with Docker Swarm, and written in TypeScript. + \item[\textbf{2nd}] Designed and implemented a protocol for ad-hoc dynamic mesh networks, and utilized it in an app for sharing users' location with selected ``friend users" in this network, by sending Bluetooth advertisements with the data. The project was developed for Android devices, and written in Kotlin. + \item[\textbf{*3rd}] \textbf{(Master's preliminary thesis)} Will work with C++ and safety through static analysis. + \end{itemize} + \\ + 2020--2023 & \p{University (Bachelor)} + Attendee at Aalborg University, studying Software, Bachelor. The following describes the project from each semester: + \begin{itemize}[leftmargin=4em] + \item[\textbf{1st}] Developed a workscheduling system for the production teams at Siemens Gamesa (Written in C). + \item[\textbf{2nd}] Implemented the Signal Protocol in an IoT environment (Written in JavaScript). + \item[\textbf{3rd}] Developed a program for better handling of Siemens Gamesas turbine blades' location and production (Written in C\#). + \item[\textbf{4th}] Developed a programming language as a replacement to the shell scripting language Bash (Written in C\#). + \item[\textbf{5th}] A multiproject, where six groups collaborated on the same code base (Written in Rust). + \item[\textbf{6th}] Developed a model learning tool to reverse engineer the source code from PLCs in ladder logic (Written in Java and C\#). + \end{itemize} + \\ + 2017--2020 & \p{High School} + High school attendee for three years at Aalborg Techcollege (AATG), and recieved the Higher + Techincal Exam (HTX), with a specialised Study Area in \textit{Communication \& IT} A, + \textit{Programming} B, and tecnical study in \textit{Technical Science} A. +\end{longtabu} + \iffalse% + \\\\ + 2016--2017 & \textbf{Continuation School}\\lign=right, labelindent=!, leftmargin=6em, itemindent=!, labelsep=1em, labelwidth=!] + & Attendee at Ingstrup Efterskole in grade nine. + \\\\ + 2007--2016 & \textbf{Public School}\\ + & Attendee at the public school in 9310 Vodskov (Vodskov Skole) from grade one to grade eight. + \fi% + +\section*{Employment} +\secsep +\begin{longtabu} to \textwidth {r|X} + Fall 2023 & \p{Product Owner for 5th semester Software multiproject} + I was the overall product owner for the multiproject on 5th semester Software, consisting of six groups with about six members in each group. The project was 15 ECTS points. + My responsibility included creating the tasks that should be implemented by them, answering questions regarding the code base and tasks, and generally acting as a guidance on the project, and as a PO. + \n + Fall 2022 & \p{Teaching Assistant} + I was a Teaching Assistant in the Imperative Programming course on the 1st semester of Software and Computer Science at AAU. + This is the first programming course you have on the educations. I had to help students during exercise sessions, provide feedback on their hand-in assignments, and collaborate with the course lecturer regarding the exercises, platform, and hand-ins. + \n + 2022--2024 & \p{Aalborg University, DEIS} + I worked as a Student Software developer at DEIS on the \href{https://github.com/Ecdar}{Ecdar} project + where I developed mainly in Rust in the backend engine for model checking + (\href{https://github.com/Ecdar/Reveaal}{Reveaal}), but also contributed to the other parts of the project. + \n + 2022 & \p{RTX A/S} + I worked as a student assistant at RTX A/S in Nørresundby, with both hardware and software tasks, + consisting of soldering og assembling equipment, along with developing platforms for monitoring and testing of larger devices/components. + \n + 2018--2019 & \p{Føtex Nørresundby} + Over the time of my employment at Føtex Nørresundby, I had a selection of roles: + \begin{itemize}[leftmargin=11em]%\setlength\itemsep{0em} + \item[\textbf{Service employee}] My first contract was as a Service employee, + with a variety of tasks, primarily the operation of the bottle recycle machine. + \item[\textbf{Cashier Assistant}] About a half year after my employment, + I was asked to be trained and reloacated to a new position, Cahsier Assistant. + \item[\textbf{Bake-Off Sale}] When I turned 18 years old, and my contract + terminated, I was offered a new position as Bake-Off Salesperson, which was my + position up until my resignation.% + \end{itemize} +\end{longtabu} + +\section*{Other Experience} +\secsep +\begin{longtabu} to \textwidth {r|X} +Fall 2023 & \p{Tutor Coordinator} +I volunteered as a tutor coordinator for the students in 2023, studying Software at Aalborg University. +I was responsible for planning and organizing the tutor planners, making sure that they were on track with planning, fundraising, and executing their events, along with a few events I had to plan as well. +I was also responsible for handling the finances of the orginazation, which included sending and paying invoices and budgetting. +\n +Fall 2022 & \p{Tutor Planner} +I volunteered as a tutor planner for the students in 2022, studying Software at Aalborg University. +I was responsible for planning, fundraise, and execute the event, where I had to coordinate a handful of tutors to execute the event properly. +\n + Fall 2021 & \p{Tutor} + I volunteered as a tutor for the students in 2021, studying Software at Aalborg University. +\n + 2021--Now & \p{UNF Game Development Camp} + I am a volunteer at UNFs Game Development Camp, where I have had the following roles: + \begin{itemize}[leftmargin=4em] + \item[2024] \p{Lecture Assistant} Asisting in finding and acquiring lecturers to present for the campers, along with the judges for evaluating the games that are made throughout the camp. + \item[2024] \p{Printing and Morning Paper Assistant} Assisting in acquiring permissions from game studios for artwork desiplys, and creating the morning paper for the campers. + \item[2023] \p{Trustee} One of the few contact persons regarding the weathfare of campers. + \item[2022] \p{Technical Manager} In charge of making sure the campers' + technical equipment is operational and set up correctly, + along with introducing them to \texttt{git}, and managing + the problems they might have with the technalities. + \item[2021] \p{Programmings Assistant} Assisting the programming teacher, and + helping the campers with any programming related issues they might have. + \item[2021] \p{Logistics Responsible} In charge of handling the logistical + requests of the other volunteers, and acquiring said logistics. +\end{itemize} +\end{longtabu} +\iffalse +\section*{References} +\hrule width5cm \ \\ +Provided upon request. + +\fi +\iffalse +%\lipsum[1-3] +\vspace{1em} +\newbox\vsep +\setbox\vsep\hbox{\vrule height 2ex depth 16ex width 1pt} +\dp\vsep0pt +\newcommand\showsep{\leavevmode\llap{\copy\vsep}} +%\newcommand\showsep{\leavevmode\llap{bitch\vskip}} +\begin{cv} +\item[2021--Now] \textbf{UNF Game Development Camp}\\ + I am a volunteer at UNFs Game Development Camp, where I have had the following roles: + \begin{itemize}[leftmargin=4em] + \item[2021] \textbf{Programmings Assistant ---} Assisting the programming teacher, and + helping the campers with any programming related issues they might have. + \item[2021] \textbf{Logistics Responsible ---} In charge of handling the logistical + requests of the other volunteers, and acquiring said logistics. + \item[2022] \textbf{Technical Manager ---} In charge of making sure the campers' + technical equipment is operational and set up correctly, + along with introducing them to \texttt{git}, and managing + the problems they might have with the technalities. + \item[2023] \textbf{Trustee ---} One of the few contact persons regarding the weathfare of campers. + \item[2024] \textbf{Lecture Assistant ---} Asisting in finding and acquiring lecturers to present for the campers, along with the judges for evaluating the games that are made throughout the camp. + \item[2024] \textbf{Printing and Morning Paper Assistant ---} Assisting in acquiring permissions from game studios for artwork desiplys, and creating the morning paper for the campers. + \end{itemize} +\item[Fall 2021] \textbf{Tutor}\\ + I volunteered as a tutor for the students in 2021, studying Software at Aalborg University. +\item[Fall 2022] \textbf{Tutor Planner}\\ + I volunteered as a tutor planner for the students in 2022, studying Software at Aalborg University. + I was responsible for planning, fundraise, and execute the event, where I had to coordinate a handful of tutors to execute the event properly. +\item[Fall 2023] \textbf{Tutor Coordinator}\\ + I volunteered as a tutor coordinator for the students in 2023, studying Software at Aalborg University. + I was responsible for planning and organizing the tutor planners, making sure that they were on track with planning, fundraising, and executing their events, along with a few events I had to plan as well. + I was also responsible for handling the finances of the orginazation, which included sending and paying invoices and budgetting. +\end{cv} +\showsep Hva er det der sker? %\lipsum[1-3] + + +\begin{itemize}[label=\textbar, left=0pt] + \item First item + \item Second item + \item Third item +\end{itemize} +%\rule{} +\begin{cv} +\item[key] \lipsum[1-3] +\item[much longer key] \textbf{Title}\\\lipsum[1-10] +\end{cv} +\fi +\end{document} + + diff --git a/src/cv_en.tex b/example/test.tex similarity index 53% rename from src/cv_en.tex rename to example/test.tex index eb8d404..1a2d4aa 100644 --- a/src/cv_en.tex +++ b/example/test.tex @@ -23,64 +23,46 @@ \section*{\Huge CV} \subsection*{Thomas Krogh Lohse} \begin{tabularx}{\textwidth}{lX} \toprule%\\[-10pt] - \href{https://goo.gl/maps/SZ6nwvdFf59X1VvR7}{\faIcon{map-marker-alt}~Sigrid Undsets Vej 156A, Aalborg Ø 9220}& - \multirow[t]{7}{=}{I am a 21 year old Software, Bachelor student at Aalbog University (AAU), where I also live. - In my spare time I enjoy learning new programming relate subjects, either by reading, or working on my own, small projects or on online learning platforms such as LeetCode. - Examples of these could be firmware developement for my keyboard (QMK), tinkering with my Linux-environment, and optimizing upon that by creating shell-scripts mainly for automatation of tasks. - Beyond that I also spend my spare time working. - I have been programming since I was 16 years old.}\\\\[-4pt] + \href{https://maps.app.goo.gl/mtFWbUVz1f8x7saS8}{\faIcon{map-marker-alt}~Aalborg Øst 9220, Denmark}& + \multirow[t]{7}{=}{@!InfoText}\\\\[-4pt] \href{tel:+4551164199}{\faIcon{mobile-alt}~+45 51 16 41 99} \\\\[-4pt]%[8pt] - \href{https://github.com/t-lohse}{\faIcon{github}~\footnotesize\faIcon{at}\normalsize\texttt{LohseBoi}} \\\\[-4pt]%[8pt] + \href{https://github.com/t-lohse}{\faIcon{github}~\footnotesize\faIcon{at}\normalsize\texttt{t-lohse}} \\\\[-4pt]%[8pt] \href{https://gitlab.com/tlohse}{\faIcon{gitlab}~\footnotesize\faIcon{at}\normalsize\texttt{tlohse}} \\\\[-4pt]%[8pt] \href{mailto:mail@tlohse.dk}{\faIcon{envelope}~mail\normalsize\MVAt tlohse.dk} \\\\[-4pt]%[8pt] \href{https://linkedin.com/in/thomas-lohse}{\faIcon{linkedin}~thomas-lohse}\\\\[-4pt] - \href{https://tlohse.dk}{\faIcon{link}~tlohse.dk}\\\\[-14pt] + \href{https://tlohse.dk}{\faIcon{link}~tlohse.dk}\\\\[-10pt] \bottomrule \end{tabularx}%\\[8pt] %\par\noindent\rule{\textwidth}{1pt} -\section*{Technical Competencies} +\section*{@!TechSec} \hrule width5cm + \setlength{\tabcolsep}{7pt} -\begin{longtabu} to \textwidth {@{}llll} - \centering - \large\textbf{Software Development} & \large\textbf{git} & \large\textbf{Project Development} & \large\textbf{Linux Maintanence} \\ - \normalsize 5+ years & 4+ years & 4+ years & 2+ years \\\\ - \multicolumn{4}{@{}p{\textwidth}}{\textbf{Known Programming Languages:} Rust ($\sim\frac{3}{4}$ year), - C\# (5+ years), C (2 years), Bash (2 years), Web (JavaScript, HTML, CSS --- 1 year), }\\[4pt] - \multicolumn{4}{@{}p{\textwidth}}{\textbf{Known Tools:} Cargo ($\sim\frac{3}{4}$ year), \@.NET (5+ years), - Unity (5+ years), CMake (2 years), Node.js (1 year), Electron (1 year), - Docker ($\sim\frac{1}{2}$ year), QMK ($\sim1\frac{1}{2}$ year), GitHub (4+ years)} +\newcolumntype{Y}{>{\centering\arraybackslash}X} +\begin{longtabu} to \textwidth {YYY} + \large% + \textbf{@!SkillMain} & % + \\\normalsize% + @!SkillMainTime &% + \\\\ + \multicolumn{3}{@{}p{\textwidth}}{\textbf{@!KnownLangTitle} + @!KnownLangList, + }\\[4pt] + \multicolumn{3}{@{}p{\textwidth}}{\textbf{@!KnownToolTitle} + @!KnownToolList, + } \end{longtabu} \setlength{\tabcolsep}{6pt} -\section*{Education} -\hrule width5cm +\section*{@!EduSec} +\hrule width5cm% \begin{longtabu} to \textwidth {r|X} -2007--2016 & \textbf{Public School}\\ -& Attendee at the public school in 9310 Vodskov (Vodskov Skole) from grade one to grade eight. - \\\\ -2016--2017 & \textbf{Continuation School}\\ -& Attendee at Ingstrup Efterskole in grade 9. - \\\\ -2017--2020 & \textbf{High School}\\ -& High school attendee for three years at Aalborg Techcollege (AATG), and recieved the Higher - Techincal Exam (HTX), with a specialised Study Area in \textit{Communication \& IT} A, - \textit{Programming} B, and tecnical study in \textit{Technical Science} A. \\\\ -2020--Now & \textbf{University}\\ -& Attendee at Aalborg University, studying Software Engineer, Bachelor. - \begin{itemize} - \item[] \textbf{1st Semester --- } Developed a workscheduling system for the production - teams at Siemens Gamesa (Developed in C). - \item[] \textbf{2nd Semester --- } Implemented the Signal Protocol in an IoT environment - (Developed in JavaScript). - \item[] \textbf{3rd Semester --- } Developed a program for better handling of - Siemens Gamesas turbine blades' location and production (Developed in C\#). - \item[] \textbf{4. Semester --- } Developed a programminglanguage as a replacement to the shell scripting language Bash (Developed in C\#). - \end{itemize} +@!EduStart1--@!EduEnd1 & \textbf{@!EduPlace1} \\ & @!EduDesc1 \\\\ \end{longtabu} \section*{Employment} \hrule width5cm + \begin{longtabu} to \textwidth {r|X} 2018--2019 & \textbf{Føtex Nørresundby}\\ & Over the time of my employment at Føtex Nørresundby, I had a selection of roles: @@ -99,10 +81,15 @@ \section*{Employment} 2022--Now & \textbf{Aalborg University, DEIS}\\ & I work as a Student Software developer at DEIS on the \href{https://github.com/Ecdar}{Ecdar} project where I develop mainly in Rust in the backend engine for model checking - (\href{https://github.com/Ecdar/Reveaal}{Reveaal}), but also contribute to the other parts of the project. - + (\href{https://github.com/Ecdar/Reveaal}{Reveaal}), but also contribute to the other parts of the project.\\\\ +Fall 2022 & \textbf{Teaching Assistant} \\ + & I was a Teaching Assistant in the Imperative Programming course on the first semester of Software and Computer Science at AAU. + This is the first programming course you have on the educations. I had to help students during exercise sessions, provide feedback on their hand-in assignments, and collaborate with the course lecturer regarding the exercises, platform, and hand-ins.\\\\ +Fall 2023 & \textbf{Product Owner for 5th semester Software multiproject} \\ + & I was the overall product owner for the multiproject on 5th semester Software, consisting of six groups with about six members in each group. The project was 15 ECTS points. + My responsibility included creating the tasks that should be implemented by them, answering questions regarding the code base and tasks, and generally acting as a guidance on the project, and as a PO. \end{longtabu} - +\newpage \section*{Other Experience} \hrule width5cm \begin{longtabu} to \textwidth {r|X} @@ -117,17 +104,26 @@ \section*{Other Experience} technical equipment is operational and set up correctly, along with introducing them to \texttt{git}, and managing the problems they might have with the technalities. + \item[2023] \textbf{Trustee ---} One of the few contact persons regarding the weathfare of campers. + \item[2024] \textbf{Lecture Assistant ---} Asisting in finding and acquiring lecturers to present for the campers, along with the judges for evaluating the games that are made throughout the camp. + \item[2024] \textbf{Printing and Morning Paper Assistant ---} Assisting in acquiring permissions from game studios for artwork desiplys, and creating the morning paper for the campers. \end{itemize} \\ -2021 & \textbf{Tutor}\\ -& I volunteered as a tutor for the students in 2021, studying Software at Aalborg University.\\ -2022 & \textbf{Tutor-Planner}\\ -& I am a volunteer as a tutor-planner for the students in 2022, studying Software at Aalborg University. +Fall 2021 & \textbf{Tutor}\\ +& I volunteered as a tutor for the students in 2021, studying Software at Aalborg University.\\\\ +Fall 2022 & \textbf{Tutor Planner}\\ +& I volunteered as a tutor planner for the students in 2022, studying Software at Aalborg University. + I was responsible for planning, fundraise, and execute the event, where I had to coordinate a handful of tutors to execute the event properly.\\\\ +Fall 2023 & \textbf{Tutor Coordinator}\\ +& I volunteered as a tutor coordinator for the students in 2023, studying Software at Aalborg University. + I was responsible for planning and organizing the tutor planners, making sure that they were on track with planning, fundraising, and executing their events, along with a few events I had to plan as well. + I was also responsible for handling the finances of the orginazation, which included sending and paying invoices and budgetting. \end{longtabu} - +\iffalse \section*{References} \hrule width5cm \ \\ Provided upon request. +\fi \end{document} diff --git a/reshume.cabal b/reshume.cabal new file mode 100644 index 0000000..936e1ee --- /dev/null +++ b/reshume.cabal @@ -0,0 +1,41 @@ +cabal-version: 2.4 +name: reshume +version: 0.1.0.0 +license: MIT +license-file: LICENSE +maintainer: mail@tlohse.dk +author: Thomas Lohse +homepage: https://github.com/t-lohse/cv +synopsis: Replace keys in documents with given values +extra-source-files: CHANGELOG.md + +source-repository head + type: git + location: https://github.com/t-lohse/cv + +library + exposed-modules: Reshume + hs-source-dirs: src + other-modules: Types + default-language: Haskell2010 + build-depends: + base >=4.16 && <5, + json + +executable reshume + main-is: Main.hs + hs-source-dirs: app + default-language: Haskell2010 + build-depends: + base >=4.16 && <5, + reshume, + directory, + text, + process + +test-suite reshume-test + type: exitcode-stdio-1.0 + main-is: MyLibTest.hs + hs-source-dirs: test + default-language: Haskell2010 + build-depends: base >=4.16 && <5 diff --git a/src/Reshume.hs b/src/Reshume.hs new file mode 100644 index 0000000..ba8e6e4 --- /dev/null +++ b/src/Reshume.hs @@ -0,0 +1,78 @@ +module Reshume + ( parseJson + , replaceKeys + , findPhrase + , -- Test-funcs + test + , test2 -- Types (expose to main) + ) where + +import Control.Applicative +import Data.Char +import Data.List +import Text.JSON (Result(Error, Ok), decode) +import Types + +parseJson :: String -> [ConfEntry] +parseJson s = takeOk (decode s :: Result [ConfEntry]) + where + takeOk (Ok v) = v + takeOk (Error s) = error s + +replaceKeys :: [String] -> String -> [ConfEntry] -> [String] +replaceKeys [] _ _ = [] +--replaceKeys (content:rest) prefix vals = content:rest +replaceKeys (content:rest) prefix vals = + case left of + v@(Just a) -> a + Nothing -> content : replaceKeys rest prefix vals + --Nothing -> replaceKeys rest prefix vals >>= return . (content:) + where + left = do + (phrase, func) <- findPhrase content prefix + E _ val <- find (\(E a _) -> a == phrase) vals + let replaced = handleConf val func + --return replaced + return $ replaceKeys (replaced ++ rest) prefix vals + +handleConf :: + ConfVal -- ^ The value to handle + -> (String -> String) -- ^ The callback function that mods the string the string + -> [String] -- ^ List of modified strings +handleConf (Single s) f = [f s] +handleConf (List xs) f = map f xs + +findAndReplacePhrase :: + String -- ^ Phrase + -> String -- ^ Prefix + -> [ConfEntry] -- ^ Replacers + -> Maybe [String] -- ^ Modified string (list because duplications may be needed) +findAndReplacePhrase _ _ [] = return [] +findAndReplacePhrase str prefix vals = do + (phrase, func) <- findPhrase str prefix + E _ val <- find (\(E a _) -> a == phrase) vals + return [] + -- TODO: HANDLE LIST + -- <|> findPhrase + +findPhrase :: + String -- ^ Phrase to search + -> String -- ^ Prefix + -> Maybe (String, String -> String) -- ^ The phrase and a callback function to replace the phrase +findPhrase a b = findPhraseCont a b id + +--findPhrase [] _ = Nothing +--findPhrase w@(x:xs) prefix = if isPrefixOf prefix w then Just ("Bitch", id) else findPhrase xs prefix +findPhraseCont :: + String -- ^ Phrase to search + -> String -- ^ Prefix + -> (String -> String) -- ^ Cont func + -> Maybe (String, String -> String) -- ^ The phrase and a callback function to replace the phrase +findPhraseCont [] _ _ = Nothing +findPhraseCont w@(x:xs) prefix cont = + if prefix `isPrefixOf` w + then Just (takeWhile pred w', \s -> cont s ++ dropWhile pred w') + else findPhraseCont xs prefix (\s -> cont (x : s)) + where + pred c = isLetter c || isNumber c + w' = w \\ prefix diff --git a/src/Types.hs b/src/Types.hs new file mode 100644 index 0000000..663d17c --- /dev/null +++ b/src/Types.hs @@ -0,0 +1,73 @@ +{-# LANGUAGE FlexibleInstances #-} + +module Types + ( test + , test2 + , ConfEntry(E) + , ConfVal(Single, List) + ) where + +import Data.List (intercalate) +import Text.JSON + +data ConfVal + = Single String + | List [String] + +instance Show ConfVal where + show (Single v) = v + show (List xs) = intercalate ", " xs + +instance JSON ConfVal where + showJSON (Single a) = JSString $ toJSString a + showJSON (List a) = showJSON $ map toJSString a + readJSON (JSArray xs) = do + res <- parseArr xs + Ok $ List res + where + parseArr ((JSString v):xs) = do + other <- parseArr xs + Ok $ fromJSString v : other + parseArr [] = Ok [] + parseArr _ = Error "Invalid format" + readJSON (JSString s) = Ok $ Single $ fromJSString s + readJSON _ = Error "Incorrect format" + +test = decode "[\"What\", \"The\", [\"actual\", \"fuck\"]]" :: Result [ConfVal] + +data ConfEntry = + E String ConfVal + +instance Show ConfEntry where + show (E s c) = s ++ ": " ++ show c + +instance JSON ConfEntry + --showJSON a = toJSObject a + where + showJSON _ = undefined + readJSON (JSObject a) + | length arr == 1 = do + v' <- readJSON v :: Result ConfVal + Ok $ E k v' + | otherwise = Error "Object should only have one entry" + where + arr = fromJSObject a + (k, v) = head arr + --readJSON (JSString s) = Ok $ Single $ fromJSString s + readJSON _ = Error "Incorrect format" + +instance {-# OVERLAPPING #-} JSON [ConfEntry] where + showJSON _ = undefined + readJSON (JSObject a) = parseObj arr + where + arr = fromJSObject a + parseObj (x:xs) = do + x' <- readJSON (JSObject $ toJSObject [x]) :: Result ConfEntry + xs' <- parseObj xs + Ok $ x' : xs' + parseObj [] = Ok [] + readJSON _ = Error "Incorrect format" + +test2 = + decode "{\"First\": \"What\", \"Sec\": \"The\", \"third\": [\"actual\", \"fuck\"]}" :: Result + [ConfEntry] diff --git a/src/cv_da.tex b/src/cv_da.tex deleted file mode 100644 index a2278e7..0000000 --- a/src/cv_da.tex +++ /dev/null @@ -1,141 +0,0 @@ -\documentclass{article} -\usepackage[margin=3cm]{geometry} -\usepackage[utf8]{inputenc} -\usepackage{float} -\usepackage{graphicx} % Required for figures -\usepackage{anysize} -\usepackage{booktabs} -\usepackage{hyperref} -\usepackage{fontawesome5} -\usepackage{multirow} -\usepackage{array} -\usepackage[export]{adjustbox} -\usepackage{marvosym} -\usepackage{tabularx} -%\usepackage{ltablex} -\usepackage{tabu} -\usepackage{longtable}[=v4.13] -\usepackage{enumitem} - -\title{\bfseries\Huge CV} -\begin{document} -\section*{\Huge CV} -\subsection*{Thomas Krogh Lohse} - -%\par\noindent\rule{\textwidth}{1pt} -\begin{tabularx}{\textwidth}{lX} - \toprule%\\[-10pt] - \href{https://goo.gl/maps/SZ6nwvdFf59X1VvR7}{\faIcon{map-marker-alt}~Sigrid Undsets Vej 156A, Aalborg Ø 9220} & - \multirow[t]{7}{=}{Jeg er en 21 årig Software, Bachelor studerende på Aalborg Universitet (AAU) i Aalborg, hvor jeg også bor. - I min fritid interesserer jeg mig for at lære om nye software relateret emner/teknologier, enten ved at læse eller arbejde på egne små projekter eller på online lærings platforme som LeetCode. - Jeg har blandt andet arbejdet med keyboard firmware (QMK), samt med configuration på mit linux system (primært i form af shell scripts, og automatisering af opgaver). - Derudover bruger jeg også min fritid på at arbjede. - Jeg har programmeret siden jeg var 16 år.} \\\\[-4pt]%[8pt] - \href{tel:+4551164199}{\faIcon{mobile-alt}~+45 51 16 41 99} \\\\[-4pt]%[8pt] - \href{https://github.com/t-lohse}{\faIcon{github}~\footnotesize\faIcon{at}\normalsize\texttt{LohseBoi}} \\\\[-4pt]%[8pt] - \href{https://gitlab.com/tlohse}{\faIcon{gitlab}~\footnotesize\faIcon{at}\normalsize\texttt{tlohse}} \\\\[-4pt]%[8pt] - \href{mailto:mail@tlohse.dk}{\faIcon{envelope}~mail\normalsize\MVAt tlohse.dk} \\\\[-4pt]%[8pt] - \href{https://linkedin.com/in/thomas-lohse}{\faIcon{linkedin}~thomas-lohse}\\\\[-4pt] - \href{https://tlohse.dk}{\faIcon{link}~tlohse.dk}\\\\[-14pt] - \bottomrule -\end{tabularx}%\\[8pt] -\section*{Tekniske Kompetencer} -\hrule width5cm -\setlength{\tabcolsep}{7pt} -\begin{longtabu} to \textwidth {@{}llll} - \centering - \large\textbf{Software Udvikling} & \large\textbf{git} & \large\textbf{Projekt Udvikling} & \large\textbf{Linux Vedligeholdelse} \\ - \normalsize 5+ års erfaring & 4+ års erfaring & 4+ års erfaring & 2+ års erfaring \\\\ - \multicolumn{4}{@{}p{\textwidth}}{\textbf{Kendte programmeringssporg:} Rust (1 år), - C\# (5+ år), C (2 år), Bash (2 år), Web (JavaScript, HTML, CSS --- 1 år), }\\[4pt] - \multicolumn{4}{@{}p{\textwidth}}{\textbf{Kendte værktøjer:} Cargo (1 år), \@.NET (5+ år), - Unity (5+ år), CMake (2 år), Node.js (1 år), Electron (1 år), Docker ($\sim\frac{1}{2}$ år), - QMK ($\sim1\frac{1}{2}$ år), GitHub (4+ år)} -\end{longtabu} -\setlength{\tabcolsep}{6pt} -\section*{Uddannelse} -\hrule width5cm -\begin{longtabu} to \textwidth {r|X} -%\begin{tabularx}{\textwidth}{r|X} -2007--2016 & \textbf{Folkeskole}\\ -& Elev på Vodskov Skole til og med ottende klasse. - \\\\ -2016--2017 & \textbf{Efterskole}\\ -& Elev på Ingstrup Efterskole i niende klasse. - \\\\ -2017--2020 & \textbf{Gymnasium}\\ -& Elev på Aalborg Techcollege (AATG), hvor jeg tog den tekniske studentereksamen (HTX), - med profilfagende \textit{Kommunikation \& IT} A og \textit{Programmering} B, samt teknikfag i \textit{Elektronisk Udvikling og Produktion} A. - \\\\ -2020--Nu & \textbf{Universitet}\\ -& Software, Bachelor studerende på Aalborg Universitet. I min tid har jeg arbejdet - med følgende projekter: - \begin{itemize}\setlength\itemsep{0em} - \item[] \textbf{1. Semester --- } Udviklede et vagtplanlægningssystem for Siemens Gamesas - produktionsarbejderhold (Udviklet i C). - \item[] \textbf{2. Semester --- } Implementerede Signal Protokollen i et IoT-miljø - (Udviklet i JavaScript). - \item[] \textbf{3. Semester --- } Udviklede et program til bedre håndtering - af Siemens Gamesas vindturbinevingers lokation og produktion (Udviklet i C\#). - \item[] \textbf{4. Semester --- } Udviklede et programmingssprog som erstatning - af Bash shell scripting (Udviklet i C\#) - \end{itemize} -%\end{tabularx} -\end{longtabu} - -\section*{Beskæftigelse} -\hrule width5cm -%\begin{tabular}{p{.1\textwidth}|p{.847\textwidth}} -\begin{longtabu} to \textwidth {r|X} -2018--2019 & \textbf{Føtex Nørresundby}\\ -& I løbet af min ansættelse hos Føtex Nørresundby, havde jeg en mindre mængde af stillinger: - \begin{itemize}\setlength\itemsep{0em} - \item[] \textbf{Servicemedarbejder --- } Min første kontrakt var under stillingen - Servicemedarbejder, som havde et udvalg af opgaver, hvor den primære var at - opretholde pantflaskemaskinerne. - \item[] \textbf{Kasse Assistent --- } Omkring et halvt år efter min ansættelse, bliver - jeg tilbudt en oplæring og ny tilhørende stilling som Kasse Assistent. - \item[] \textbf{Bake-Off Sal --- } Da jeg fylder 18 år, og min kontrakt opsiges, - tilbyder de mig en ny kontrakt med stillingen Bake-Off Salsperson, som var min stilling - op til min opsigelse. - \end{itemize} \\ -2022 & \textbf{RTX A/S}\\ -& Arbejdede som Studenter Medhjælper ved RTX A/S, Nørresundby med både hardware og software - arbejdsopgaver som bestod i at lodde og samle udstyr, samt udvikle platforme til at - monitorere og teste diverse større komponenter. \\\\ -2022--Nu & \textbf{Aalborg Universitet, DEIS}\\ - & Jeg arbejder som Studenterudvikler for DEIS på \href{https://github.com/Ecdar}{Ecdar} projektet - hvor jeg primært udvikler i Rust på vores backend model checking engine, - \href{https://github.com/Ecdar/Reveaal}{Reveaal}, men bidrager også til andre dele af projektet. -%\end{tabular} -\end{longtabu} - - \section*{Anden Erfaring} -\hrule width5cm -\begin{longtabu} to \textwidth {r|X} -%\begin{tabular}{p{.1\textwidth}|p{.847\textwidth}} -2021--Nu & \textbf{UNF Game Development Camp}\\ -& Jeg er frivillig medarbejder hos UNFs Game Development Camp, hvor jeg har haft de følgende roller: - \begin{itemize}\setlength\itemsep{0em} - \item[2021] \textbf{Programmingsassistent ---} Assisterer programmeringslæreren, samt - hjælp med deltagernes programmeringsrelateret problemer. - \item[2021] \textbf{Logistisk Ansvarlig ---} Ansvarlig for håndtering af logistiken - vedrørende de frivilliges anmodninger om varer, samt anskaffelsen. - \item[2022] \textbf{Teknisk Ansvarlig ---} Ansvarlig for opsætningen af alt det teknsike - udstyrtil campen, samt introduktionen af \texttt{git} for deltagerne, og håndtering - af alle problemer de måtte have med al det tekniske. - \end{itemize}\\ -2021 & \textbf{Tutor}\\ -& Jeg var frivillig Tutor for de nye Software, Bachelor studerende på Aalborg Universitet.\\\\ -2022 & \textbf{Tutorplanlægger}\\ -& Jeg er frivillig tutorplanlægger for de nye Software, Bachelor studerende på Aalborg Universitet. -%\end{tabular} -\end{longtabu} - -\section*{Referencer} -\hrule width5cm \ \\ -Fremsendes efter anmodning. - -\end{document} - - diff --git a/test/MyLibTest.hs b/test/MyLibTest.hs new file mode 100644 index 0000000..8cebe08 --- /dev/null +++ b/test/MyLibTest.hs @@ -0,0 +1,6 @@ +module Main + ( main + ) where + +main :: IO () +main = putStrLn "Test suite not yet implemented." diff --git a/texput.log b/texput.log new file mode 100644 index 0000000..dc0fb7e --- /dev/null +++ b/texput.log @@ -0,0 +1,21 @@ +This is pdfTeX, Version 3.141592653-2.6-1.40.25 (TeX Live 2023/Arch Linux) (preloaded format=pdflatex 2023.12.21) 11 JAN 2024 16:29 +entering extended mode + restricted \write18 enabled. + %&-line parsing enabled. +**\documentclass{article} + +! Emergency stop. +<*> \documentclass{article} + +*** (job aborted, no legal \end found) + + +Here is how much of TeX's memory you used: + 13 strings out of 477985 + 362 string characters out of 5840057 + 1849388 words of memory out of 5000000 + 20316 multiletter control sequences out of 15000+600000 + 512287 words of font info for 32 fonts, out of 8000000 for 9000 + 14 hyphenation exceptions out of 8191 + 12i,0n,12p,54b,10s stack positions out of 10000i,1000n,20000p,200000b,200000s +! ==> Fatal error occurred, no output PDF file produced!