Up to Main Index                          Up to Journal for February, 2025

                   JOURNAL FOR SATURDAY 1ST FEBRUARY, 2025
______________________________________________________________________________

SUBJECT: Writing documents and CVs (Résumé)
   DATE: Sat  1 Feb 18:51:31 GMT 2025

I do a lot of writing. When writing and producing documents I have three main
workflows. None of my workflows involve a word processor — which I hate.

The first method is the humble text file. This can be plain ASCII upto 0x7E
‘~’ for simple documents. For more complex documents I use Unicode. I use Vim
as my editor and entering digraphs such as “Ctrl-k O O” for ‘•’ is simple and I
remember quite a few common characters I use. I also have some custom digraphs
such as "`, "', `` and '' for double and single curly quotes “” ‘’.

This method is used to write the journal, with Unicode and curly quotes.

The second method I use, when I want the document to look presentable, is
troff. I actually use groff as the processor, but I handwrite everything using
Vim and my style is archaic troff :) It’s nice to typeset text instead of
fighting with a word processor, wasting time trying to get the formatting just
right. Usually I’ll write a plain text version, and then add the troff markup.
The final output can be text, with Unicode, a PostScript file or a PDF. An
example of processing the .roff file might be as simple as:

  groff -Tpdf cv.roff > cv.pdf

The third method I’ve started using recently is Markdown. I write a .md file
using Vim, and then use lowdown to process it. To make it look pretty I have
some standard CSS style sheets I’ve written. The output is an HTML file, which
I open in a browser and print to a PDF file. An example of processing the
Markdown might be:

  lowdown -s -M "css=./doc.css" \
    --html-no-escapehtml --html-no-skiphtml < doc.md > doc.html

All three of the above methods start with a plain text file. This is important
so that I can use the wealth of tools available to me. This includes things
like a syntax highlighting, dictionary word lookup, spellcheckers and recently
I’ve integrated some AI into Vim. I can also store revisions of my work in
Git. The first and third methods I use when collaborating with other people.
Writing troff is not for the faint of heart, and I wouldn’t force other people
to use it.

Here is a simple .troff document:


  .nh
  .ce
  \fBA Simple troff example\fR
  .sp 1
  Zaeta jactus proident aliqua, blanditum laborum werra laboris zythum wadiarius
  fugiat. Placeat ea magna repellenda sunt xandici cum nobis mollit zythum beatae
  est dolore in werra xandici id.
  .sp 1
  .in 2
  \(bu Zaeta jactus proident
  .br
  \(bu Anim disti cillum
  .in -2
  .sp 1
  Anim disti cillum, anim ex yata cupidatat iure zio kalo culpa jecur magna enim
  sed warra nulla zonarius reprehenderit werra. Yatum sunt liber xvir laboris
  duis qui liber voluptate cillum elit placeat commodo zonarius occaecat maxim
  warra.


Processing it for Unicode UTF-8 output, “groff -Tutf8 sample.roff”, produces:


                       A Simple troff example

  Zaeta  jactus  proident  aliqua,  blanditum laborum werra laboris
  zythum wadiarius fugiat. Placeat ea magna repellenda sunt xandici
  cum nobis mollit zythum beatae est dolore in werra xandici id.

    • Zaeta jactus proident
    • Anim disti cillum

  Anim disti cillum, anim ex yata cupidatat  iure  zio  kalo  culpa
  jecur  magna  enim  sed warra nulla zonarius reprehenderit werra.
  Yatum sunt liber xvir laboris duis  qui  liber  voluptate  cillum
  elit placeat commodo zonarius occaecat maxim warra.


Here is the same content in Markdown:


  # A Simple troff example

  Zaeta jactus proident aliqua, blanditum laborum werra laboris zythum
  wadiarius fugiat. Placeat ea magna repellenda sunt xandici cum nobis mollit
  zythum beatae est dolore in werra xandici id.

   * Zaeta jactus proident
   * Anim disti cillum

  Anim disti cillum, anim ex yata cupidatat iure zio kalo culpa jecur magna
  enim sed warra nulla zonarius reprehenderit werra. Yatum sunt liber xvir
  laboris duis qui liber voluptate cillum elit placeat commodo zonarius
  occaecat maxim warra.


Processing it for Unicode UTF-8 output, “lowdown -Tterm sample.md”, produces:


  A Simple troff example

      Zaeta jactus proident aliqua, blanditum laborum werra laboris zythum
      wadiarius fugiat. Placeat ea magna repellenda sunt xandici cum nobis
      mollit zythum beatae est dolore in werra xandici id.

        · Zaeta jactus proident
        · Anim disti cillum

      Anim disti cillum, anim ex yata cupidatat iure zio kalo culpa jecur
      magna enim sed warra nulla zonarius reprehenderit werra. Yatum sunt
      liber xvir laboris duis qui liber voluptate cillum elit placeat commodo
      zonarius occaecat maxim warra.


Markdown does not have a simple way of centring text. If I was generating HTML
my stylesheet would take care of that. Note also, if the journal showed ANSI
attributes the title would be bold in both of the above examples.

I have some additional tooling around Vim as well. For example, I usually have
documents monitored for changes, triggering the generation of a PostScript or
PDF file which I view in gv or mupdf which automatically refreshes. This gives
me a live preview when I save the current document.

Now why do I mention all of this? Well I’m still job hunting and need a CV.
Some people call it a résumé, in the UK CV or curriculum vitæ is more common.
I have an old CV written in troff. I thought I’d update it to Markdown so it’s
easier to tailor for each application. I spent a few hours on the rewrite and
had a nice looking CV.

I then found out my CV should be Applicant Tracking System (ATS) friendly.
Basically this means that a submitted CV is going to be fed to a automated
system that will try to extract all of the information from the CV and store
it into a database. If the automated system cannot understand the CV there is
a good chance it will never make it to a human, resulting in automatic, and
usually silent, rejection :(

Now for the most egregious part. The most common document format understood by
an AST is Microsoft Word. It is highly suggested to avoid PDF as “ATS systems
may struggle with their formatting”. A common font should also be used: Ariel,
Calibri, Garamond, Helvetica or Times New Roman.

Luckily, depending on your view, I found this resource for ATS friendly CV
templates: https://create.microsoft.com/en-us/templates/ats-resumes

For anyone wanting more information on troff and other text tools, I recommend
“Unix Text Processing” by Dale Dougherty and Tim O’Reilly. The book is now out
of print, but scanned PDFs are available[1]. There is a community effort to
recreate the troff source of the book[2] and produce it as a nice PDF with
hyperlinks :)

Now I guess it’s back to job hunting…

--
Diddymus

  [1] Unix Text Processing; Dale Dougherty and Tim O’Reilly:
      https://www.oreilly.com/openbook/utp/

  [2] Community UTP revival project:
      https://github.com/larrykollar/Unix-Text-Processing


  Up to Main Index                          Up to Journal for February, 2025