My dissertation is finally finished. Before finishing my dissertation, I was eager to share it with my classmates so that they could read and give me suggestions. Normally, I would give them read-only access on the Git or Subversion repository containing my dissertation, so that they can check out the LaTeX source files, and then compile the dissertation. This procedure creates a hurdle for them, because LaTeX is normally not installed on mobile devices they might use.
For most people, the solution would be sending PDF attachments. However, when I add more and more text and pictures into my dissertation, the PDF becomes increaseingly large, and I don't want to send large files and use up the quota of my and my classmates' mailboxes. There is a better solution.
Netlify is a free hosting service for static web sites. It provides a Node.js client app, which can deploy a prepared website from the command line. It can also pick up commits into a git repository, and compile the website from source code.
While my dissertation is not a website, hosting it on Netlify is totally feasible. Although Netlify's continuous deployment does not support LaTeX, I can still compile the PDF locally, and upload it to Netlify. To do so, I added a Makefile rule:
REVISION = `git rev-parse HEAD`
dissertation.pdf:
# normal build steps
upload: dissertation.pdf
rm -f www/*.pdf
cp dissertation.pdf www/$(REVISION).pdf
echo '<!doctype html><title>paper</title><h1>Named Data Networking in Local Area Networks dissertation</h1><a href="'$(REVISION)'.pdf">revision '$(REVISION)'</a>' > www/index.html
netlify deploy -t ndn-lan-thesis -p www
The Makefile rule copies an up-to-date PDF file into www/
folder, generates a homepage with my dissertation title, and deploys the www/
folder as https://ndn-lan-thesis.netlify.com
website.
The PDF file is named after the git commit, so that my classmates could tell me which draft version they are reading when they send me a suggestion.
I also appended the following to .gitignore, so that dynamically generated files would not be committed into the git repository:
.netlify
www/index.html
www/*.pdf
With this simple technique, I can easily share a draft of my dissertation or any other PDF document compiled from LaTeX.
Typing make upload
instantly uploads the PDF to a website on Netlify, so that my classmates could read the latest draft of my PDF document.