diff --git a/.github/workflows/compile.yml b/.github/workflows/compile.yml index 6b0bb3eb..037b15f8 100644 --- a/.github/workflows/compile.yml +++ b/.github/workflows/compile.yml @@ -11,6 +11,7 @@ jobs: - name: Install pandoc run: | sudo apt-get update && sudo apt-get install -y --no-install-recommends \ + inkscape \ texlive texlive-latex-extra pandoc latexmk \ texlive-bibtex-extra biber \ texlive-fonts-recommended texlive-fonts-extra lmodern fonts-linuxlibertine \ diff --git a/Makefile b/Makefile index 7f7ca2c2..d43ad397 100644 --- a/Makefile +++ b/Makefile @@ -8,6 +8,7 @@ all: $(objects) %.pdf: %.md bibliography.bib contributors.yml preamble.sty build/template.tex glossary.tex filter.py @mkdir -p build + @mkdir -p build/svg-inkscape @rm -f build/pdfa.xmpi cp --update preamble.sty build/ cp --update bibliography.bib build/ @@ -21,6 +22,7 @@ all: $(objects) --biblatex \ --toc \ --template="build/template.tex" \ + -f markdown-latex_macros \ -M pdfa-$(MAKE_PDFA)=1 \ -M date="`date "+%B %e, %Y"`" \ -M datexmp="`date "+%F"`" \ @@ -33,11 +35,11 @@ all: $(objects) @sed -i '/\\author{}/d' "build/${@:.pdf=}.tex" if grep -q "\\makeglossaries" "${<}"; then \ cd build; \ - pdflatex --jobname="${@:.pdf=}" "${@:.pdf=}.tex"; \ + pdflatex -shell-escape --jobname="${@:.pdf=}" "${@:.pdf=}.tex"; \ makeglossaries "${@:.pdf=}"; \ fi latexmk \ - -pdflatex -bibtex -halt-on-error \ + -pdflatex -shell-escape -bibtex -halt-on-error \ -jobname="${@:.pdf=}" -cd "build/${@:.pdf=}.tex" @mv "build/${@}" "${@}" diff --git a/competencies.md b/competencies.md index 5e24ed12..81fd5d60 100644 --- a/competencies.md +++ b/competencies.md @@ -36,26 +36,43 @@ header-includes: - \usepackage{multirow} - \usepackage{array} - \usepackage{longtable} + - \usepackage[inkscapepath=svg-inkscape]{svg} + - \pdfsuppresswarningpagegroup=1 - \newcommand{\blandscape}{\begin{landscape}} - \newcommand{\elandscape}{\end{landscape}} + - \newcommand{\fonticon}[2]{\includesvg[height=1.5ex]{{../fonts/#1}}\nobreakspace{}#2} + - \newcommand*{\DOCBB}{\fonticon{sitemap}{DOCBB}} + - \newcommand*{\LIBS}{\fonticon{boxes-packing}{LIBS}} + - \newcommand*{\SWLC}{\fonticon{arrows-spin}{SWLC}} + - \newcommand*{\SWREPOS}{\fonticon{code-pull-request}{SWREPOS}} + - \newcommand*{\MOD}{\fonticon{laptop-code}{MOD}} + - \newcommand*{\NEW}{\fonticon{lightbulb}{NEW}} + - \newcommand*{\RC}{\fonticon{graduation-cap}{RC}} + - \newcommand*{\SRU}{\fonticon{recycle}{SRU}} + - \newcommand*{\SP}{\fonticon{newspaper}{SP}} + - \newcommand*{\DOMREP}{\fonticon{folder}{DOMREP}} + - \newcommand*{\TEAM}{\fonticon{user-group}{TEAM}} + - \newcommand*{\TEACH}{\fonticon{chalkboard-user}{TEACH}} + - \newcommand*{\PM}{\fonticon{clipboard-list}{PM}} + - \newcommand*{\USERS}{\fonticon{comments}{USERS}} - \usepackage[acronym,toc,shortcuts,nogroupskip]{glossaries} - \newglossary[skills.glg]{skills}{skills.gls}{skills.glo}{Skill codes} - \makeglossaries - \input{glossary.tex} - - \newglossaryentry{DOCBB}{name={DOCBB},type={skills},description={Creating documented code building blocks}} - - \newglossaryentry{LIBS}{name={LIBS},type={skills},description={Building distributable libraries}} - - \newglossaryentry{SWLC}{name={SWLC},type={skills},description={Adapting to the software life-cycle}} - - \newglossaryentry{SWREPOS}{name={SWREPOS},type={skills},description={Use repositories}} - - \newglossaryentry{MOD}{name={MOD},type={skills},description={Software behaviour awareness and analysis}} - - \newglossaryentry{NEW}{name={NEW},type={skills},description={Curiosity}} - - \newglossaryentry{RC}{name={RC},type={skills},description={Understanding the research cycle}} - - \newglossaryentry{SRU}{name={SRU},type={skills},description={Software re-use}} - - \newglossaryentry{SP}{name={SP},type={skills},description={Software publication and citation}} - - \newglossaryentry{DOMREP}{name={DOMREP},type={skills},description={Using domain repositories/directories}} - - \newglossaryentry{TEAM}{name={TEAM},type={skills},description={Working in a team}} - - \newglossaryentry{TEACH}{name={TEACH},type={skills},description={Teaching}} - - \newglossaryentry{PM}{name={PM},type={skills},description={Project management}} - - \newglossaryentry{USERS}{name={USERS},type={skills},description={Interaction with users and other stakeholders}} + - \newglossaryentry{DOCBB}{name={\DOCBB},type={skills},description={Creating documented code building blocks}} + - \newglossaryentry{LIBS}{name={\LIBS},type={skills},description={Building distributable libraries}} + - \newglossaryentry{SWLC}{name={\SWLC},type={skills},description={Adapting to the software life-cycle}} + - \newglossaryentry{SWREPOS}{name={\SWREPOS},type={skills},description={Use repositories}} + - \newglossaryentry{MOD}{name={\MOD},type={skills},description={Software behaviour awareness and analysis}} + - \newglossaryentry{NEW}{name={\NEW},type={skills},description={Curiosity}} + - \newglossaryentry{RC}{name={\RC},type={skills},description={Understanding the research cycle}} + - \newglossaryentry{SRU}{name={\SRU},type={skills},description={Software re-use}} + - \newglossaryentry{SP}{name={\SP},type={skills},description={Software publication and citation}} + - \newglossaryentry{DOMREP}{name={\DOMREP},type={skills},description={Using domain repositories/directories}} + - \newglossaryentry{TEAM}{name={\TEAM},type={skills},description={Working in a team}} + - \newglossaryentry{TEACH}{name={\TEACH},type={skills},description={Teaching}} + - \newglossaryentry{PM}{name={\PM},type={skills},description={Project management}} + - \newglossaryentry{USERS}{name={\USERS},type={skills},description={Interaction with users and other stakeholders}} include-before: - \newpage include-after: @@ -215,7 +232,7 @@ However, we also recognise that many RSEs have chosen specifically to focus on a role as an alternative to a traditional research role because they enjoy and wish to focus on the development of research software. -**Researchers**: +**Researchers**: People who are using the services provided by Research Software Engineers. These not only include academics but also people from related fields such as librarians and technicians who are at most sporadically performing RSE actions. @@ -381,7 +398,7 @@ the different RSE specialisations (**RSE specialisations**). ## Software engineering skills \newcommand{\skillsection}[1]{\hypertarget{skills-#1}{% -\subsubsection{\glsentrydesc{#1} (\glsentrytext{#1})}\label{skills-#1}}} +\subsubsection{\glsentrydesc{#1} (\texorpdfstring{\glsentrytext{#1}}{#1})}\label{skills-#1}}} There are many \ac{SE} curricula out there, that try to define which tasks a software engineer should be able to perform. A recent example @@ -421,7 +438,7 @@ Initial development generally involves a creative process where requirements are followed by a formulation of a plan to fulfil them that is finally implemented. This is then followed by testing that things work as expected and that they continue to do so into the future. Often the development is iterated. -We emphasise that the life-cycle as described here is not complete, +We emphasise that the life-cycle as described here is not complete, as it includes periods of software maintenance and software retirement. Additionally, the research software life-cycle extends the traditional life-cycle with a \gls{software-publication} stage. @@ -1083,7 +1100,7 @@ New areas of expertise #### Research infrastructure RSE This RSE is interested in \glspl{SysOp} and system administration and sets up \ac{IT} infrastructures for and with researchers. Therefore, this specialisation on the one hand requires a deep knowledge of physical computer and network hardware and -on the other hand knowledge about setup and configuration of particular server software, +on the other hand knowledge about setup and configuration of particular server software, e.g., setup of virtual machines on hypervisors or the planning and setup of compute server clusters for \ac{ML}. As an interface between the researchers and the infrastructure, they take care of user management, access permissions, and configuration of required services. @@ -1372,7 +1389,7 @@ Her work so far has already been heavy on (\gls{TEAM}) skills, but now also the #### RSE-focused principal investigator -The job experience as a leading RSE for a large project was the last requirement necessary to be awarded the title of a "Certified Research Software Professional" (CRSP) +The job experience as a leading RSE for a large project was the last requirement necessary to be awarded the title of a "Certified Research Software Professional" (CRSP) from an institutionalised centre of RSE education. The certificate confirms her track record of valuable software contributions and of teaching and mentoring people, @@ -1428,7 +1445,7 @@ These frameworks eventually converged into the \ac{EMBL-EBI} Competency Hub [@CompetencyHub; @Lloret-Llinares2022], where typical RSE and bioinformatician profiles at different levels of seniority can be queried -(e.g., Junior RSE[^JuniorRSE], +(e.g., Junior RSE[^JuniorRSE], Senior Computational Chemist[^SeniorCC]) and compared against one another (e.g., Junior vs. Senior RSE[^Comp]). diff --git a/fonts/arrows-spin.svg b/fonts/arrows-spin.svg new file mode 100644 index 00000000..e88dded2 --- /dev/null +++ b/fonts/arrows-spin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/fonts/boxes-packing.svg b/fonts/boxes-packing.svg new file mode 100644 index 00000000..428d2de4 --- /dev/null +++ b/fonts/boxes-packing.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/fonts/chalkboard-user.svg b/fonts/chalkboard-user.svg new file mode 100644 index 00000000..516f2eda --- /dev/null +++ b/fonts/chalkboard-user.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/fonts/clipboard-list.svg b/fonts/clipboard-list.svg new file mode 100644 index 00000000..48c81ecd --- /dev/null +++ b/fonts/clipboard-list.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/fonts/code-pull-request.svg b/fonts/code-pull-request.svg new file mode 100644 index 00000000..875e2994 --- /dev/null +++ b/fonts/code-pull-request.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/fonts/comments.svg b/fonts/comments.svg new file mode 100644 index 00000000..69361416 --- /dev/null +++ b/fonts/comments.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/fonts/folder.svg b/fonts/folder.svg new file mode 100644 index 00000000..53c4a496 --- /dev/null +++ b/fonts/folder.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/fonts/graduation-cap.svg b/fonts/graduation-cap.svg new file mode 100644 index 00000000..6d34bbde --- /dev/null +++ b/fonts/graduation-cap.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/fonts/laptop-code.svg b/fonts/laptop-code.svg new file mode 100644 index 00000000..9278a70b --- /dev/null +++ b/fonts/laptop-code.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/fonts/lightbulb.svg b/fonts/lightbulb.svg new file mode 100644 index 00000000..696fa4e0 --- /dev/null +++ b/fonts/lightbulb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/fonts/newspaper.svg b/fonts/newspaper.svg new file mode 100644 index 00000000..15886c4a --- /dev/null +++ b/fonts/newspaper.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/fonts/recycle.svg b/fonts/recycle.svg new file mode 100644 index 00000000..6a955f28 --- /dev/null +++ b/fonts/recycle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/fonts/sitemap.svg b/fonts/sitemap.svg new file mode 100644 index 00000000..11732298 --- /dev/null +++ b/fonts/sitemap.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/fonts/user-group.svg b/fonts/user-group.svg new file mode 100644 index 00000000..fc06cfb1 --- /dev/null +++ b/fonts/user-group.svg @@ -0,0 +1 @@ + \ No newline at end of file