
Instead, I wrote a script which generates that PDF for me whenever the site is built. I also, crucially, didn't want to have to go through the steps to create that PDF myself every time I corrected a typo or tweaked a phrase. I wanted to make sure that the generated pdf would display the two-column desktop view, scaled so that it could fit on a single page of A4. Using the print command to generate a PDF defaults to a single column mobile layout, spread across two pages! Users are also given a huge number of dials to tweak before saving, with options and defaults varying from systems to system and browser to browser! There was no way for me to enforce the style that I'd worked so hard on. First, I couldn't guarantee that every user would know how to save a PDF from the print dialog. However, this solution came with all sorts of issues. The simplest change I could make was to add a link at the bottom of the page, which, when clicked, would instruct the user's browser to open the print dialog, from which they would be able to save the page as a pdf. Rather than maintaining two versions of the same content, I wanted to generate a PDF version of the CV using the HTML on the site. Application forms almost always requires a PDF copy of a CV, so without a PDF option, a pretty page of HTML isn't enough. However, for one reason or another, CVs are one of the last documents in my life which people insist must conform to a standard printable paper size. Making it available online as rich, indexable HTML also makes it much easier to find by people searching for me or my skillset! Updating the CV is now just as easy as editing or publishing a new blog post, and any improvements I make to my site also carry over to the CV.

The design is responsive, so it's readable on any device. The content is all written and stored in prismic, and is then structured and styled for my site by next.js and tailwind CSS respectively. You can see the result here, which I was very happy with! It's clean, concise, fast, and accessible. HTML, CSS, and typescript might have their own problems, but at least I had some use for them in other areas of my life. I decided to scrap the LaTeX version, and moved the content into a framework which matched the rest of this website.


But in the years since, I'd grown frustrated with the ugly language, the fiddly and never-ending typesetting tweaks, and the archaic versioning, compiling, and publishing patterns. Coming from a background in physics, I used to write my CV in LaTeX, the typesetting tool of choice for dorks everywhere.
