Jeg har en stund hatt lyst å lage en blog om mine elektrorelaterte prosjekt. Samtidig ville jeg unngå enkelte problem. Jeg har tidligere skrevet nettsider i kun HTML og CSS, og visste at jeg ikke liker å designe dem. Den typen statiske nettsider ville dessuten i blog-format innebært alt for mye repetitivt arbeid. Jeg ønsket meg en løsning som tok seg av å legge til, sortere og vise innhold uten for mye fiksfaks. CMS-er som Wordpress dessverre også krever sitt av fiksfaks. Jeg har i noen år hatt ansvaret for en bedrifts nettside og tok i bruk Wordpress der. Det var enkelt å installere og bruke, men krevde en initiell investering av tid for å få på plass alt vi ønsket. I tillegg bekymrer jeg meg stadig for bl.a sikkerhetshull, inkompatibilitet mellom oppdateringer og spam.

Jekyll lover å genererer statiske nettsider for meg som jeg bare trenger å fylle med tekst. Min erfaring var at det installerte nesten seg selv og at jeg umiddelbart kunne begynne å skrive. Jeg hadde riktignok allerede mye av utviklingsmiljøet på plass fra tidligere i form av Windows Subsystems for Linux sin Ubuntu-variant og er komfortabel med å arbeide i terminalen. Prosessen er nok likevel over middels tilgjengelig for de fleste som ville vurdert å selv sette opp sin egen blogg.

Man skriver i markdown, som nesten ikke krever noe av brukeren. Det er bare å skrive, og teksten er der. Dersom man trenge noe mer enn vanlig tekst, som å understreke noe, så kan man bare søke det opp. Bruker man Discord og har gjort litt tekstformatering der så kan man allerede mye markdown! Selv ønsket jeg muligheten for å lage fine LaTeX-ligninger til nettsiden, og søkte meg fort frem til en populær og enkel løsning. Den funksjonaliteten krevde riktignok javascript for å laste inn MathJax fra et annet domene. Et kompromiss ble å gjøre slik at Jekyll kun inkludererer javascriptet i innlegg hvor det faktisk finnes ligninger. Det var enkelt å få på plass. Dette er den originale kodesnutten som man putter i _layouts/posts.html:

<script type="text/x-mathjax-config">
MathJax.Hub.Config({
tex2jax: {
    inlineMath: [['$','$'], ['\\(','\\)']],
    processEscapes: true
}
});
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script>

Ved å i steden lage et eget layout med denne kodesnutten (altså, ikke ha den overforstående kodensnutten med i default layout for alle “posts”) kan jeg enkelt velge det ønskede layoutet ved starten av et passende dokument. Jeg bruker minima-layoutet, så for å finne hvor filene til layoutet lå skrev jeg bundle show minima. Deretter kopierte jeg ../_layouts/post.html til nettsidens _layouts-mappe med en nytt navn (mathpost.html i mitt tilfelle) og la til javascriptet der. Nå, ved starten av hvert dokument med ligninger, skriver jeg helt enkelt layout: mathpost. Slik blir $$ F=\frac{1}{4\pi \epsilon_0}\frac{q_1 q_2}{r^2} $$ til:

\[F=\frac{1}{4\pi \epsilon_0}\frac{q_1 q_2}{r^2}\]

Mens jeg nå skriver dette merker jeg dessuten at jeg vil ha en bedre måte å presentere kode på. Det tok meg ingen tid som helst å implementere. Med et raskt søk fant jeg at rouge brukes, som installeres ved å skrive gem install rouge og legge highlight: rouge i _config.yml. Nå kan jeg automagisk presentere javascriptet slik:

<script type="text/x-mathjax-config">
    MathJax.Hub.Config({
    tex2jax: {
        inlineMath: [['$','$'], ['\\(','\\)']],
        processEscapes: true
    }
    });
    </script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script>

Så langt virker Jekyll veldig lovende!