commit: a45405bd697bdce079e76cd7e77ef98d949b84dc
parent: 58a8278fe5d1aa21845c52a077203c8bd0e74527
author: Chris Noxz <chris@noxz.tech>
date: Wed, 23 Oct 2019 18:04:40 +0200
Guide for writing a resume in groff
4 files changed, 296 insertions(+), 1 deletion(-)
diff --git a/Makefile b/Makefile
@@ -19,7 +19,7 @@ all: clean builder
@
@echo creating tar archive 'web.tar'
@find ./ -type f -regex \
- ".*\.\(jpg\|png\|svg\|html\|css\|asc\|pub\|rss\|xml\|swps\|txt\|patch\|ggb\|pdf\)" \
+ ".*\.\(jpg\|png\|svg\|html\|css\|asc\|pub\|rss\|xml\|swps\|txt\|patch\|ggb\|pdf\|ms\)" \
-exec tar -rf web.tar {} \;
builder: config.h builder.c
diff --git a/noxz.tech/guides/groff/writing_a_resume_in_groff/example.png b/noxz.tech/guides/groff/writing_a_resume_in_groff/example.png
diff --git a/noxz.tech/guides/groff/writing_a_resume_in_groff/index.md b/noxz.tech/guides/groff/writing_a_resume_in_groff/index.md
@@ -0,0 +1,170 @@
+Writing a resume in groff
+=========================
+Writing a curriculum in groff can seem difficult, but rest assured it can
+easily be accomplished and in this guide I will show how a simple resume can be
+created. In this guide I will use the macro set *ms*, so remember to compile
+the document using *-ms*. This guide will also use the *tbl* program to create
+tables, so remember to first compile the document in *tbl*.
+
+{: class="center"}
+![](example.png)
+
+Settings
+--------
+To begin with let's add some settings in the head of the document.
+
+ .fam T
+ .nr PS 10p
+ .nr VS 15p
+ .ds CH
+
+In the section above we have specified the font family *T*, a point size of
+*10p*, a line spacing of *15p* and also disabled the page numbering (by letting
+the center of the header to be blank).
+
+Coloring
+--------
+Next let's define some of the coloring that we are going to use later.
+
+ .defcolor headingcolor rgb 0.5f 0.5f 0.5f
+ .defcolor linecolor rgb 0.6f 0.6f 0.6f
+
+Above the *headingcolor* will be used for a horizontal ruler under each
+heading. The *linecolor* will be used for a vertical line in each section (more
+on that later).
+
+Macros
+------
+To avoid a lot of typing for each heading we will create a macro instead.
+
+ .de heading
+ . nf
+ . ps 14
+ . B "\\$1"
+ \h'0n'\v'-1.2n'\
+ \m[headingcolor]\
+ \l'\\n(.lu\(ul'\
+ \m[default]
+ . ps 10
+ . sp -.2
+ . fi
+ ..
+
+In the macro *heading* above we start by telling groff not to fill output
+lines. We set the point size to *14*, print the input parameter in bold and the
+continue by drawing. When drawing we first move horizontally to the position
+*0n*, move vertically up *1.2n* and change the pen color to the previously
+defined *headingcolor*. After that we just draw an underline *\\(ul* from where
+we are to the most right of the documents writing area. Finally we change the
+color back to *default*, revert the point size back to *10*, decrease the
+vertical spacing by *0.2* and tell groff to once again fill output lines.
+
+Header
+------
+Every resume needs a detailed header with name and contact information.
+
+ .ce 2
+ .ps 18
+ .B "John F. Smith"
+ .ps 10
+ john.fictional.smith@mail.com
+ .TS
+ tab(;) nospaces;
+ l rx.
+ Main Road 66;
+ Awesometown, 66788;T{
+ .I "+12 42 99 666"
+ T}
+ Wonderland;T{
+ .I "https://my-little-page.com"
+ T}
+ .TE
+
+In the example above we tell groff to center the following two lines where we
+print the name *John F. Smith* (with the point size of *18*), and his email
+address (with the point size of *10*). Then we create a table using *.TS*
+(table start) ending with .TE (table ending). We define the tab separation,
+that will separate each cell, as *';'* and tell *tbl* to ignore spaces. The
+format of the table is *'l rx.'* which means that the first cell is left
+aligned, the second cell is right aligned and extended (to fill the writing
+area) and the dot tells *tbl* to end the format there.
+
+The content are then specified with each row on one line (with some caveats)
+and cells separated using *';'*. As we tell groff to use italics *.I* on the
+phone number and the URL, we must tell *tbl* to treat the content as text
+blocks using *'T{'* and *'T}'*. The symbol *'T{'* must be after the *';'* and
+*'T}'* must be on its own line.
+
+A short summary
+---------------
+We will of course need a short summary in our resume. You can of course write
+what ever you want here, and not necessarily *lorem ipsum dolor sit amet...*
+
+ .heading "Summary"
+ .LP
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
+ tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
+ veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
+ commodo consequat. Duis aute irure dolor in reprehenderit in voluptate
+ velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
+ cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id
+ est laborum.
+
+In the example above we have taken advantage of our macro named *heading* to
+format the heading *Summary*. As a placeholder for our paragraph *.LP* we have
+just added the standard *Lorem Ipsum passage*, used since the 1500s.
+
+Sections
+--------
+At last we create some sections for our various topics in the resume. These can
+of course vary depending on the person or position in mind. I will just create
+some examples.
+
+ .heading "Professional Experience"
+ .TS
+ tab(;) nospaces;
+ rW15|lx.
+ \m[default]2019 - today\m[linecolor];T{
+ .B "Development Engineer at Creative Pros"
+ \(en Awesometown, Wonderland
+ .br
+ Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium
+ doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore
+ veritatis et quasi architecto beatae vitae dicta sunt explicabo.
+ .sp .5
+ T}
+ \m[default]2010 - 2019\m[linecolor];T{
+ .B "Professional Expert at Dreamworx"
+ \(en Somefareaway, Neverland
+ .br
+ Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed
+ quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt.
+ .sp .5
+ T}
+ .TE
+ \m[default]
+
+In the example above we are once again using the macro *heading* to create a
+new heading for our experiences. The content is rendered inside a table, but
+this time the table formatting is a bit different. In this case *'rW15|lx.'*
+means that the first cell is right aligned with a fixed width of *15* (you
+might have to change this to work for your resume). The two cells will be
+divided by a line, specified using the *'|'*, and the second cell will be left
+aligned and extended (to fill the writing area).
+
+Here we use the previously defined color *linecolor* for printing the
+separation line. First we make sure the default color is selected, define the
+first cell (here containing a date) and the set the new color *linecolor*. For
+our content we once again use a text block to enable us to use formatting and
+longer texts.
+
+In our text block we first define the position, employer and location separated
+with an *en* line. We break the line using *.br* and add some descriptive text
+for the position. Finally we add some vertical spacing with the value *0.5*.
+After the table is ended we make sure the default color is set.
+
+Conclusion
+----------
+Together with all information above we can now create a final document to
+compile into our resume. I've created a template [here](template.ms) based on
+this guide. Feel free to use it and change it in what ever way you want.
diff --git a/noxz.tech/guides/groff/writing_a_resume_in_groff/template.ms b/noxz.tech/guides/groff/writing_a_resume_in_groff/template.ms
@@ -0,0 +1,125 @@
+.fam T
+.nr PS 10p
+.nr VS 15p
+.ds CH
+.
+.
+.defcolor linecolor rgb 0.6f 0.6f 0.6f
+.defcolor headingcolor rgb 0.5f 0.5f 0.5f
+.
+.
+.de heading
+. nf
+. ps 14
+. B "\\$1"
+\h'0n'\v'-1.2n'\
+\m[headingcolor]\
+\l'\\n(.lu\(ul'\
+\m[default]
+. ps 10
+. sp -.2
+. fi
+..
+
+.ce 2
+.ps 18
+.B "John F. Smith"
+.ps 10
+john.fictional.smith@mail.com
+.TS
+tab(;) nospaces;
+l rx.
+Main Road 66;
+Awesometown, 66788;T{
+.I "+12 42 99 666"
+T}
+Wonderland;T{
+.I "https://my-little-page.com"
+T}
+.TE
+
+.heading "Summary"
+.LP
+Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor
+incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis
+
+.heading "Professional Experience"
+.TS
+tab(;) nospaces;
+rW15|lx.
+\m[default]2019 - today\m[linecolor];T{
+.B "Development Engineer at Creative Pros"
+\(en Awesometown, Wonderland
+.br
+Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium
+doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore
+veritatis et quasi architecto beatae vitae dicta sunt explicabo.
+.sp .5
+T}
+\m[default]2010 - 2019\m[linecolor];T{
+.B "Professional Expert at Dreamworx"
+\(en Somefareaway, Neverland
+.br
+Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed
+quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt.
+.sp .5
+T}
+.TE
+\m[default]
+.heading "Education"
+.TS
+tab(;) nospaces;
+rW15|lx.
+2000 - 2005\m[linecolor];T{
+.B "The Great University"
+\(en West-town, Wonderland
+.br
+MSc in Computer Science
+.sp .5
+T}
+\m[default]1995 - 2000\m[linecolor];T{
+.B "The Fair University"
+\(en East-Town, Wonderland
+.br
+BSc in Economics
+.sp .5
+T}
+.TE
+\m[default]
+.heading "Language"
+.TS
+tab(;) nospaces;
+rW15|lx.
+English\m[linecolor];T{
+\m[default]Professional working proficency
+.br
+.sp .2
+T}
+T{
+\m[default]
+.B "Spanish"
+\m[linecolor]
+T};T{
+.B
+\m[default]Native proficency
+.R
+.br
+.sp .2
+T}
+.TE
+\m[default]
+.heading "Skills"
+.TS
+tab(;) nospaces;
+rW15|lx.
+Concepts\m[linecolor];T{
+Hacking, Programming, Web development
+.br
+Economics, Microeconomics, Behavioural economics
+.br
+.sp .5
+T}
+\m[default]Prog. Languages\m[linecolor];T{
+x86 Assembly, C, Haskell, Python
+.sp .5
+T}