73; 12022 H.E.
NOTE
|
Everything below is the legacy version of the website that has been building up for good two to three years. On the night of March 13th, darkness took over sandyuraz.com, reducing average build time from 7-8s to <100ms. There will be a link to darkness on the home page. The legacy version can be accessed on a separate branch
|
I love typesetting tools. In my experience, I have used and written articles and papers using the following list of tools: LaTeX
, groff
, markdown
, Org-Mode
, asciidoctor
, HTML
, plain text
. I had to decompress Word files and wrestle with raw XML files there, what a trip that was.
You might be interested in how this website is built. Basically, the whole of this website is a collection of Org Mode files, couple of sed scripts, some shell, and a master makefile. Makefile converts my raw org mode files into asciidoctor with pandoc, sed scripts modify the asciidoctor files, then asciidoctor binary is called to generate HTML, and another sed script to modify the generated files, like adding CSS and some custom meta tags.
The repository is hosted on Github. source
branch is the one that contains all the source org files, on every commit push, a github workflow is triggered that runs everything above and deploys the generated website to master
branch, where it triggers Github Pages to build the branch and deploy it here.
Below is a good flow graph of files and operations. Just to solidify the structure of the website, here is the source org file for this webpage.
βββββββββββββββ
βββ/ \βββ
/ \
( Commit push triggers )
\ github workflow /
βββ\ /βββ
ββββββββ/ββββββ
/
Makefile /
β
/
ββββββββββββoβββββ pandoc
β org files ββββββββββββββββββ
βββββββββ¬βββββββββ β
β β
β β
β pandoc β
β β
βββββββββ΄ββββββββββββ βββββββββββ΄ββββββββββββ
β asciidoctor files β β README.md files β
βββββββββββ¬ββββββββββ βββββββββββββββββββββββ
β
β
\ sed script
β
ββββββββββoββββββββββ
β modified asciid. β
ββββββββββ¬βββββββββββ
β
β
\ asciidoctor
β
ββββββββββoββββββββββ
β generated HTML β
ββββββββββ¬βββββββββββ
β
β
/ sed scripts
β
ββββββββoββββββββββββ
β pretty HTML files β
βββββββββββββββββββββ
β/
β/
ββ βββββββββββββββ
oββββ/ \ββββ
/ Push files to \
( master and deploy to Pages)
\ /
ββββ\ /ββββ
βββββββββββββββ
Thatβs the kind of workflow I have for my website. Whenever I do want to add a new page or update existing ones, all I have to do is edit org mode files, which are native to Emacs and push committed updates. Thatβs all the magic!
On a quick note, you were probably curious about the fortunes page. The simplicity of website updates allows some room for automation. Please meet astrie! My personal assistant for my website.
Astrie talks to me through Telegram, where I send her various commands, such as adding quotes and she patiently abides. Iβm quite proud of her, as all we need for all that complexity is a ~100 loc Go package with a very small shell script that runs continuous git submodule updates and pushes.
In a bigger picture, I must say that I would love to be able to typeset beautiful documents and books like the ones below βΌοΈ