Switch to Hugo, restructure the page

This commit is contained in:
Ngô Ngọc Đức Huy 2021-04-12 11:19:57 +07:00
parent d02a380caa
commit 981e41a947
Signed by: huyngo
GPG Key ID: 904AF1C7CDF695C3
46 changed files with 510 additions and 630 deletions

View File

@ -1,20 +0,0 @@
name: Jekyll site CI
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Build the site in the jekyll/builder container
run: |
docker run \
-v ${{ github.workspace }}:/srv/jekyll -v ${{ github.workspace }}/_site:/srv/jekyll/_site \
jekyll/builder:latest /bin/bash -c "chmod 777 /srv/jekyll && jekyll build --future"

3
.gitmodules vendored Normal file
View File

@ -0,0 +1,3 @@
[submodule "themes/anubis"]
path = themes/anubis
url = https://github.com/mitrichius/hugo-theme-anubis.git

View File

@ -1,25 +0,0 @@
---
permalink: /404.html
layout: default
---
<style type="text/css" media="screen">
.container {
margin: 10px auto;
max-width: 600px;
text-align: center;
}
h1 {
margin: 30px 0;
font-size: 4em;
line-height: 1;
letter-spacing: -1px;
}
</style>
<div class="container">
<h1>404</h1>
<p><strong>Page not found :(</strong></p>
<p>The requested page could not be found.</p>
</div>

30
Gemfile
View File

@ -1,30 +0,0 @@
source "https://rubygems.org"
# Hello! This is where you manage which Jekyll version is used to run.
# When you want to use a different version, change it below, save the
# file and run `bundle install`. Run Jekyll with `bundle exec`, like so:
#
# bundle exec jekyll serve
#
# This will help ensure the proper Jekyll version is running.
# Happy Jekylling!
gem "jekyll", "~> 4.2.0"
# This is the default theme for new Jekyll sites. You may change this to anything you like.
gem "minima", git: "https://github.com/jekyll/minima"
# If you want to use GitHub Pages, remove the "gem "jekyll"" above and
# uncomment the line below. To upgrade, run `bundle update github-pages`.
# gem "github-pages", group: :jekyll_plugins
# If you have any plugins, put them here!
group :jekyll_plugins do
gem "jekyll-feed", "~> 0.12"
end
# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
# and associated library.
platforms :mingw, :x64_mingw, :mswin, :jruby do
gem "tzinfo", "~> 1.2"
gem "tzinfo-data"
end
# Performance-booster for watching directories on Windows
gem "wdm", "~> 0.1.1", :platforms => [:mingw, :x64_mingw, :mswin]

View File

@ -1,85 +0,0 @@
GIT
remote: https://github.com/jekyll/minima
revision: 3cdd14dff1216f561c68329e0b7420c2dc9b796a
specs:
minima (2.5.1)
jekyll (>= 3.5, < 5.0)
jekyll-feed (~> 0.9)
jekyll-seo-tag (~> 2.1)
GEM
remote: https://rubygems.org/
specs:
addressable (2.7.0)
public_suffix (>= 2.0.2, < 5.0)
colorator (1.1.0)
concurrent-ruby (1.1.7)
em-websocket (0.5.2)
eventmachine (>= 0.12.9)
http_parser.rb (~> 0.6.0)
eventmachine (1.2.7)
ffi (1.14.2)
forwardable-extended (2.6.0)
http_parser.rb (0.6.0)
i18n (1.8.7)
concurrent-ruby (~> 1.0)
jekyll (4.2.0)
addressable (~> 2.4)
colorator (~> 1.0)
em-websocket (~> 0.5)
i18n (~> 1.0)
jekyll-sass-converter (~> 2.0)
jekyll-watch (~> 2.0)
kramdown (~> 2.3)
kramdown-parser-gfm (~> 1.0)
liquid (~> 4.0)
mercenary (~> 0.4.0)
pathutil (~> 0.9)
rouge (~> 3.0)
safe_yaml (~> 1.0)
terminal-table (~> 2.0)
jekyll-feed (0.15.1)
jekyll (>= 3.7, < 5.0)
jekyll-sass-converter (2.1.0)
sassc (> 2.0.1, < 3.0)
jekyll-seo-tag (2.7.1)
jekyll (>= 3.8, < 5.0)
jekyll-watch (2.2.1)
listen (~> 3.0)
kramdown (2.3.0)
rexml
kramdown-parser-gfm (1.1.0)
kramdown (~> 2.0)
liquid (4.0.3)
listen (3.4.0)
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
mercenary (0.4.0)
pathutil (0.16.2)
forwardable-extended (~> 2.6)
public_suffix (4.0.6)
rb-fsevent (0.10.4)
rb-inotify (0.10.1)
ffi (~> 1.0)
rexml (3.2.4)
rouge (3.26.0)
safe_yaml (1.0.5)
sassc (2.4.0)
ffi (~> 1.9)
terminal-table (2.0.0)
unicode-display_width (~> 1.1, >= 1.1.1)
unicode-display_width (1.7.0)
PLATFORMS
x86_64-linux
DEPENDENCIES
jekyll (~> 4.2.0)
jekyll-feed (~> 0.12)
minima!
tzinfo (~> 1.2)
tzinfo-data
wdm (~> 0.1.1)
BUNDLED WITH
2.2.4

View File

@ -1,116 +0,0 @@
# Welcome to Jekyll!
#
# This config file is meant for settings that affect your whole blog, values
# which you are expected to set up once and rarely edit after that. If you find
# yourself editing this file very often, consider using Jekyll's data files
# feature for the data you need to update frequently.
#
# For technical reasons, this file is *NOT* reloaded automatically when you use
# 'bundle exec jekyll serve'. If you change this file, please restart the server process.
#
# If you need help with YAML syntax, here are some quick references for you:
# https://learn-the-web.algonquindesign.ca/topics/markdown-yaml-cheat-sheet/#yaml
# https://learnxinyminutes.com/docs/yaml/
#
# Site settings
# These are used to personalize your new site. If you look in the HTML files,
# you will see them accessed via {{ site.title }}, {{ site.email }}, and so on.
# You can create any custom variable you would like, and they will be accessible
# in the templates via {{ site.myvariable }}.
title: Huy Ngo's blog
author: Ngô Ngọc Đức Huy
email: huyngo@disroot.org
description: >- # this means to ignore newlines until "baseurl:"
This is Huy's blog, built with Jekyll. Its source code is released under MIT License.
Its content is released under CC-BY-SA-4.0.
baseurl: "" # the subpath of your site, e.g. /blog
url: "" # the base hostname & protocol for your site, e.g. http://example.com
timezone: Asia/Ho_Chi_Minh
# Build settings
theme: minima
kramdown:
toc_levels: 1..1
minima:
skin: dark
date_format: "%Y-%m-%d"
social_links:
mastodon:
- username: huy_ngo
instance: fosstodon.org
github: Huy-Ngo
twitter: false
plugins:
- jekyll-feed
# Exclude from processing.
# The following items will not be processed, by default.
# Any item listed under the `exclude:` key here will be automatically added to
# the internal "default list".
#
# Excluded items can be processed by explicitly listing the directories or
# their entries' file path in the `include:` list.
#
exclude:
- .sass-cache/
- .jekyll-cache/
- gemfiles/
- Gemfile
- Gemfile.lock
- node_modules/
- vendor/bundle/
- vendor/cache/
- vendor/gems/
- vendor/ruby/
- _drafts/
- README.md
- .gitignore
- .git/
- LICENSE
- newpost.sh
- webring.template
- create-webring.sh
defaults:
-
scope:
path: ""
values:
lang: en
link-str: Read this post in English
correct: >
If you find a mistake in my post,
please send me an email about that.
base-url: "/"
-
scope:
path: fr
values:
lang: fr
link-str: Lire ce post en français
correct: >
Si vous trouvez un erreur dans mon post,
envoyez-moi un email pour le corriger, s'il vous plait.
base-url: "/fr/"
-
scope:
path: de
values:
lang: de
link-str: Diesen Beitrag auf Deutsch lesen
correct: >
Wenn Sie finden eine Fehlung in meinem Beitrag,
schicken Sie mir darüber ein Email, bitte.
base-url: "/de/"
-
scope:
path: vi
values:
lang: vi
link-str: Đọc bài viết này bằng tiếng Việt
correct: >
Nếu bạn thấy có sai sót gì trong bài viết,
hãy nói với tôi qua email.
base-url: "/vi/"

View File

@ -1,26 +0,0 @@
---
layout: page
title: mEnglish
permalink: /menglish/
---
You may notice I sometimes use some weird or archaic English grammar or vocabulary.
This is intentional. I treat language like I treat software: If I don't like it, I modify
it, or I make a new one. Of course, the latter requires considerable effort, so while
I may enjoy the process, it may be not practical. Moreover, not many people would learn
my conlang if I made one.
I call this modification "mEnglish"; "m" stands for "me", "my", or "modified".
# Pronoun
## Thou
Originally,
## Ze
# Syntax
# Vocabulary
whence
: from where

View File

@ -1,5 +0,0 @@
<link rel="stylesheet" href="/assets/css/custom.css">
<link rel="apple-touch-icon" sizes="180x180" href="/assets/images/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/assets/images/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/assets/images/favicon-16x16.png">
<link rel="manifest" href="/assets/images/site.webmanifest">

View File

@ -1,51 +0,0 @@
<section class="webring">
<h2>
Articles from blogs I read
<small class="attribution">
Generated by
<a href="https://git.sr.ht/~sircmpwn/openring">openring</a>
</small>
</h2>
<section class="footer-col-wrapper">
<div class="footer-col article">
<h4 class="title">
<a href="https://stallman.org/archives/2021-jan-apr.html#13_March_2021_%28Yemeni_journalist_jailed%29" target="_blank" rel="noopener">Yemeni journalist jailed</a>
</h4>
<p class="summary">
Proxies of the UAE have jailed Yemeni journalist Adel al-Hasani,
who reported on ties between UAE and al-Qa&#39;ida.
</p>
<small class="source">
via <a href="https://stallman.org/archives/polnotes.html">Richard Stallman&#39;s Political Notes</a>
</small>
<small class="date">March 13, 2021</small>
</div>
<div class="footer-col article">
<h4 class="title">
<a href="https://www.eff.org/deeplinks/2021/03/seattle-and-portland-say-no-public-private-surveillance-networks" target="_blank" rel="noopener">Seattle and Portland: Say No to Public-Private Surveillance Networks</a>
</h4>
<p class="summary">An organization calling itself Safe Cities Northwest is aiming to create public-private surveillance networks in Portland, Oregon and Seattle, Washington. The organization claims that it is building off of a “successful model for public safety” that it bu…</p>
<small class="source">
via <a href="https://www.eff.org/rss/updates.xml">Deeplinks</a>
</small>
<small class="date">March 12, 2021</small>
</div>
<div class="footer-col article">
<h4 class="title">
<a href="https://news.opensuse.org/2021/03/11/opensuse-project-selected-for-gsoc-mentoring/" target="_blank" rel="noopener">openSUSE Project Selected for Google Summer of Code Mentoring</a>
</h4>
<p class="summary">Lets gehts los! The openSUSE Project is one of about 200 mentoring organizations selected for this years Google Summer of Code. The openSUSE Project has participated in several GSoC events since 2006 and the projects mentors have helped more than 60 st…</p>
<small class="source">
via <a href="https://news.opensuse.org">openSUSE News</a>
</small>
<small class="date">March 11, 2021</small>
</div>
</section>
</section>

View File

@ -1,38 +0,0 @@
{%- include custom-webring.html -%}
<footer class="site-footer h-card">
<data class="u-url" href="{{ "/" | relative_url }}"></data>
<div class="wrapper">
<div class="footer-col-wrapper">
<div class="footer-col">
<p class="feed-subscribe">
<a href="{{ 'feed.xml' | relative_url }}">
<svg class="svg-icon orange">
<use xlink:href="{{ 'assets/minima-social-icons.svg#rss' | relative_url }}"></use>
</svg><span>Subscribe</span>
</a>
</p>
{%- if site.author %}
<ul class="contact-list">
{% if site.author.name -%}
<li class="p-name">{{ site.author.name | escape }}</li>
{% endif -%}
{% if site.author.email -%}
<li><a class="u-email" href="mailto:{{ site.author.email }}">{{ site.author.email }}</a></li>
{%- endif %}
</ul>
{%- endif %}
</div>
<div class="footer-col">
<p>{{ site.description | escape }}</p>
</div>
</div>
<div class="social-links">
{%- include social.html -%}
</div>
</div>
</footer>

View File

@ -1,65 +0,0 @@
---
layout: default
---
{% assign postsTrans=site.posts | where:"ref", page.ref | sort: 'lang' %}
{% if postsTrans.size == 0 %}
{% assign postsTrans=site.pages | where:"ref", page.ref | sort: 'lang' %}
{% endif %}
<article class="post h-entry" itemscope itemtype="http://schema.org/BlogPosting">
<header class="post-header">
<h1 class="post-title p-name" itemprop="name headline">{{ page.title | escape }}</h1>
<p class="post-meta">
{%- assign date_format = site.minima.date_format | default: "%b %-d, %Y" -%}
<time class="dt-published" datetime="{{ page.date | date_to_xmlschema }}" itemprop="datePublished">
{{ page.date | date: date_format }}
</time>
{%- if page.modified_date -%}
~
{%- assign mdate = page.modified_date | date_to_xmlschema -%}
<time class="dt-modified" datetime="{{ mdate }}" itemprop="dateModified">
{{ mdate | date: date_format }}
</time>
{%- endif -%}
{%- if page.author -%}
• {% for author in page.author %}
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
<span class="p-author h-card" itemprop="name">{{ author }}</span></span>
{%- if forloop.last == false %}, {% endif -%}
{% endfor %}
{%- endif -%}</p>
</header>
{% if postsTrans.size != 1 %}
<div class="lang">
<ul>
{% for post in postsTrans %}
{% if post.lang != page.lang %}
<li>
<a class="{{ post.lang }}" href="{{ site.base-url }}{{ post.url }}">
{{ post.link-str }}
</a>
</li>
{% endif %}
{% endfor %}
</ul>
{{ page.correct }}
</div>
<hr>
{% endif %}
<div class="post-content e-content" itemprop="articleBody">
{{ content }}
</div>
{%- if site.disqus.shortname -%}
{%- include disqus_comments.html -%}
{%- endif -%}
<a class="u-url" href="{{ page.url | relative_url }}" hidden></a>
</article>

6
archetypes/default.md Normal file
View File

@ -0,0 +1,6 @@
---
title: "{{ replace .Name "-" " " | title }}"
date: {{ .Date }}
draft: true
---

65
config.toml Normal file
View File

@ -0,0 +1,65 @@
baseURL = "http://example.org/"
copyright = "CC-BY-SA 4.0"
defaultContentLanguage = "en"
languageCode = "en-us"
summaryLength = 0
title = "Huy's site"
theme = "anubis"
AvailableText = "This post is available in:"
[languages]
[languages.en]
about = "About"
languageName = "English"
[languages.fr]
about = "À propos"
languageName = "Français"
[[languages.fr.menu.main]]
identifier = "about"
name = "À propos"
url = "/about/"
weight = 1
[[languages.fr.menu.main]]
identifier = "tags"
name = "Étiquettes"
url = "/tags/"
weight = 2
[[languages.fr.menu.main]]
identifier = "archive"
name = "Archive"
url = "/posts/"
weight = 3
[menu]
[[menu.main]]
identifier = "about"
name = "About"
url = "/about/"
weight = 1
[[menu.main]]
identifier = "tags"
name = "Tags"
url = "/tags/"
weight = 2
[[menu.main]]
name = "Archive"
identifier = "archive"
url = "/posts/"
weight = 3
[params]
author = "Ngô Ngọc Đức Huy"
email = "huyngo@disroot.org"
style = "auto"
custom_css = ["css/custom.css"]
[markup.goldmark.renderer]
unsafe = true

View File

@ -1,30 +0,0 @@
---
layout: page
title: Conlang
language: en
ref: conlang
---
# Conlang
You can find my posts about conlanging here:
<ul>
{% for post in site.categories.conlang %}
{% if post.url %}
<li><a href="{{ post.url }}">{{ post.title }}</a></li>
{% endif %}
{% endfor %}
</ul>
# Hàësdáaga
You can find my posts about my conlang Hàësdáaga here:
<ul>
{% for post in site.categories.haesdaaga %}
{% if post.url %}
<li><a href="{{ post.url }}">{{ post.title }}</a></li>
{% endif %}
{% endfor %}
</ul>

View File

@ -1,48 +0,0 @@
---
layout: page
title: Contact
language: en
ref: contact
permalink: /about/contact
---
If you don't know me, it's probably best to contact me via [email][email].
# Language
- I prefer English as my working language, but feel free to use any other if it's relevant.
- Call me Huy, not Ngo. Vietnamese people don't refer to each other by family name.
- No need for Mr., just the name is fine.
# Attachment
- [Don't send Word documents][no-word], and don't tell me to use it.
- Similarly, don't send RAR archive. Maybe avoid sending archive in general.
- Avoid sending videos (send a PeerTube link instead for example),
executables (send link to source code instead with instruction to build).
# Send in plain text
I probably would not read HTML emails, which is problematic.
Read [this page][useplaintext] to see how to write mail in plain text file.
## What if I want to include an image?
Attach it as a file and refer to that. Maybe avoid images as a whole
## Links are usually long and I'm afraid it can be disruptive
You can use reference, like this:
Please read the post [1] for more information.
...
[1]: https://example.org/this-link-is-long-and-disruptive
[disroot]: mailto:huyngo@disroot.org
[email]: mailto:huyngo@disroot.org
[fosstodon]: https://fosstodon.org/@huy_ngo
[gmail]: mailto:duchuy29092000@gmail.com
[matrix]: https://matrix.to/#/@xarvos:matrix.org
[no-word]: https://www.gnu.org/philosophy/no-word-attachments.html
[useplaintext]: https://useplaintext.email

View File

@ -1,9 +1,25 @@
---
layout: page
title: About
language: en
ref: about
permalink: /about/
menu:
about:
identifier: about
name: About
url: /about/
weight: 1
social:
identifier: social
parent: about
name: Social media
url: /about/social/
weight: 2
works:
identifier: works
parent: about
name: Works
url: /about/works/
weight: 3
---
I am Huy. Use the pronoun "he" to refer to me in third person. I'm from
@ -41,10 +57,6 @@ This means you are free to share the posts and modify them, provided that you
attribute properly, link to the original content, and state your changes.
Additionally, you have to share those changes under the same license.
# Acknowledgement
This blog is built with [jekyll] and its [minima] theme. I used [openring] to generate others' blog posts from RSS feed.
# Donate
I receive donate on [liberapay/huy.ngo][liberapay] and [patreon/\_\_huy_ngo\_\_][patreon].

View File

@ -0,0 +1,7 @@
---
title: 'Our Difference'
button: 'About us'
weight: 2
---
Lorem ipsum dolor sit amet, et essent mediocritatem quo, choro volumus oporteat an mei. ipsum dolor sit amet, et essent mediocritatem quo,

View File

@ -0,0 +1,3 @@
---
headless: true
---

7
content/homepage/work.md Normal file
View File

@ -0,0 +1,7 @@
---
title: 'We Help Business Grow'
button: 'Our Work'
weight: 1
---
Lorem ipsum dolor sit amet, et essent mediocritatem quo, choro volumus oporteat an mei. Numquam dolores mel eu, mea docendi omittantur et, mea ea duis erat. Elit melius cu ius. Per ex novum tantas putant, ei his nullam aliquam apeirian. Aeterno quaestio constituto sea an, no eum intellegat assueverit.

View File

@ -0,0 +1,114 @@
---
category: blog
date: 2021-01-02 14:44:00 +0700
lang: fr
tags: [blog, wordpress, writing, selfhost]
title: "Je quitte WordPress"
translationKey: "give-up-wp"
---
Pendant la semaine dernière, j'installe à peine ma propre instance de WordPress,
parce que j'ai accès à un serveur et je peux utiliser un nom de domaine gratuit.
Mais c'était quel horreur. <!--more-->
# Pourquoir écrire un blog
J'écris pour le faire mieux (et pour me défier de écrire des articles en langues
à part anglais). Il y avait longtemps que je n'ai rien écrit que le code.
Mais écrire des essais c'est important pour moi : pour ma graduation, il faut écrire
des rapports et un thèse.
Mais ce n'est pas la seule raison. C'est aussi un moyen de m'exprimer. Le média sociel
peut m'aider à le faire, mais je quitte Facebook à cause du manque de confidentialité
premièrement et de la haine partout où je cherche le divertissement, et Mastodon a une
limitation de caractères pour une publication. Les catégories et les tags sont aussi
des aides pour mettre des publications en ordre.
# Choisir WordPress
WordPress c'est une plate-forme populaire pour blogger. Au debut je pensais de choisir
wordpress.com, car il est déjà hébergé. Mais j'ai découvert qu'il mettrais des ads
sur mes blogs sans mon approbation. De plus, si je héberge moi-même, j'ai du contrôle.
Je ne veux pas que mes lecteurs doivent voir les ads qui sont mis par un tier.
Le serveur fonctionne sous Ubuntu 16.04, qui est très vieux. Ainsi, il n'a pas les plus
récents paquets, y compris Apache, PHP, et WordPress, et je n'ose pas le mettre à niveau.
J'y avait déjà des autres services avec nginx, alors je préfère utiliser nginx comme
serveur web. Il y a [un guide][wp-nginx] pour exactement ça, mais malheureusement,
ces fichiers de la configuration sont longs et j'ai peur de mettre quelque chose en panne
cependant (et de plus, je suis paresseux ;) ).
Alors, c'est ça, j'utilise Apache, ce n'est pas une mauvaise chose, et j'utilise nginx
comme proxy inverse. Ça a marché.
# Utiliser Docker
J'ai aussi essaié docker. Je me demandais pourquoi je n'avais pas penser à
cette solution plus tôt.
J'ai récemment utilisé docker très fréquemment, e.g. pour CouchDB et RethinkDB, qui
ne sont pas paqueté pour Tumbleweed, our SQLServer et MongoDB, qui étaient nécessaire
pour mon cours de base de données.
Docker exécute des programmes dans un container ( « conteneur » ) que
l'on peut facilement configurer avec docker-compose ou par ligne de commande.
Surtout, on peut être sûr que ça marche.
Et ça marche merveilleusement.
# Redirection de port
Ce n'était pas un problème que WordPress a créé, c'était ma faute, mais comme la faute
est aussi une leçon, je la raconte quand même.
Pour ne pas faire la même faute à l'avenir: il faut lier les fichiers configs dans
`/etc/nginx/sites-available/` à `/etc/nginx/sites-enabled/` avec des paths absolus,
sinon le lien serait cassé et ne marcherait pas.
# Changer le nom casse les liens
WordPress utilise apparamment des liens absolus (`example.com/blog/quelque-chose`)
au lieu des liens relatifs (`/blog/quelque-chose`).
C'est pas un bon pratique : si je change le hébergeur ou le nom de domain
(qui arrivera sûrement, car les noms de domaine gratuits expiront tôt ou tard).
Je l'ai découvert quand je changeais de IP du hébergeur au nom de domaine.
# Des expériences déçues
WordPress n'est pas la chose pour moi. Il contient trop de drag-and-drop pour écrire
un post que je trouve difficile à utiliser. Il contient aussi beaucoup de widgets que
je ne jamais utiliser et qui prend trop de temps à charger.
Étant résultat, je n'ai pas envie d'y écrire.
# Write.as
Et puis quelqu'un sur Mastodon m'a fait savoir de write.as.
Cette service utilise Markdown pour rendre les posts, et comme Markdown est si facile
à écrire, je l'aimais immédiatement.
[WriteFreely][writefreely] est le logiciel grâce auquel write.as fonctionne. J'ai
hébergé une instance moi-même, et il marchait exactement comme j'en ai attendu.
# Mise à jour
J'ai essayé [jekyll][jekyll], et c'est merveilleux.
Maintenant mon blog est sur [GitHub](https://huy-ngo.github.io)
et [huyngo.cf](http://huyngo.cf). GitHub ne supporte pas des thèmes que j'utilise, alors
là le blog ne apparaît correctement.
Jekyll est meilleur que WriteFreely pour moi, parce que les posts sont stockés simplement
comme texte plain, par contre WriteFreely les stocke dans SQL, ce que je considère
un overhead. Le seul désavantage c'est que je n'ai jamais appris Ruby avant.
J'ai envie d'essayer [Hugo][hugo], qui est programmé dans Go, une langue que je connais
mieux que Ruby. En outre, Hugo supporte rendre des pages pour gemini, que je veux aussi
essayer.
Mais ça va attendre, je ne devrais pas dépenser trop de temps pour
la choice de techonologie.
[wp-nginx]: https://wordpress.org/support/article/nginx/
[writefreely]: https://github.com/writeas/writefreely
[jekyll]: https://jekyllrb.com/
[hugo]: https://gohugo.io

View File

@ -1,11 +1,10 @@
---
layout: post
title: "Giving up on WordPress!"
category: blog
date: 2021-01-02 14:44:00 +0700
tags: blog wordpress writing selfhost
lang: en
ref: give-up-wp
categories: blog
translationKey: "give-up-wp"
tags: [blog, wordpress, writing, selfhost]
title: "Giving up on WordPress!"
---
For the last week, I was trying to setting up my own WordPress instance, since I have access to a server and use a free domain name. It was such a hassle. <!--more-->

View File

@ -1,11 +1,10 @@
---
layout: post
title: "Moving away from Big Brother(s)"
category: blog
date: 2021-01-09 14:44:00 +0700
tags: software freedom surveillance communication privacy
lang: en
ref: big-bros
categories: freedom privacy
translationKey: "big-bros"
tags: [software, freedom, surveillance, communication, privacy]
title: "Moving away from Big Brother(s)"
---
Due to a [recent event][whatsapp], people have been actively moving away from it to Telegram[^1] or Signal.

View File

@ -0,0 +1,113 @@
---
category: blog
date: 2021-01-11 15:51:31 +0700
lang: fr
tags: [rss, blog, openring, tutorial]
title: "Ajouter des blogs qu'on suit avec openring"
translationKey: "openring-tutor"
---
J'ai ajouté une section près du bas de page : une liste d'articles de blogs auxquels
je m'abonne. Elle est générée par [openring], un outil qui réçoit le flux de RSS et
génère un webring.
Je l'ai découvert pendant lire [le blog de Drew DeVault][ddvault] (qui l'a créé).
Comme je pense qu'il est un moyen de soutenir les auteurs qu'on aime
et cependant partager des articles géniaux aux lecteurs, alors, je l'ai ajouté dans mon
blog.
Ce post va vous apprendre comment l'ajouter à votre blog.
# Installer openring
Je ne suis pas sûr qu'il y ait un paquet precompilé pour openring,
donc on va l'installer de la source.
## Installer des dépendances
Openring dépends de golang. Quand ça marche avec go1.14, la version la plus récente
sur la dépôt de mon distro Tumbleweed, mais je recommande installer la plus récente
sur [golang].
Vous pouvez lire l'instruction de [golang].
## Compiler openring de la source
D'abord, clonez le dépôt:
```bash
git clone https://git.sr.ht/~sircmpwn/openring
```
Après, compilez le paquet et copiez-le à `/usr/local/bin` pour l'exécuter:
```bash
go build -o openring
sudo cp openring /usr/local/bin/
```
# Customiser l'apparence
Selon le README de openring:
> This is a tool for generating a webring from RSS feeds, so you can link to other blogs you like on your own blog. It's designed to be fairly simple and integrate with any static site generator. The basic usage is:
>
> ```bash
> openring \
> -s https://drewdevault.com/feed.xml \
> -s https://emersion.fr/blog/rss.xml \
> -s https://danluu.com/atom.xml \
> < in.html \
> > out.html
> ```
Le fichier `in.html` est un modèle duquel openring génère le HTML pour le flux.
Je l'ai copié de [le blog de DeVault][ring-tmpl] (ne vous inquiétez pas, c'est partagé
avec un license MIT),
avec des modifications:
- J'ai mis le webring dans un `div.wrapper`.
La class `wrapper` est une class dans le thème minima
qui limite le largeur maximum, ce qui aide lisibilité
- J'ai ajouté `footer-col` pour chaque article. Cette classe rendre les articles
en colonne grâce à minima.
- J'ai ajouté une bordure pour les article avec sass
(le code est aussi basé sur celui de DeVault)
```scss
---
---
.webring {
margin-bottom: 1rem;
.attribution {
float: right;
font-size: .8rem;
line-height: 3;
}
.footer-col.article {
padding: 0.5rem;
margin: 0 0.5rem;
border: 0.01rem solid #333;
@media(max-width: 640px) {
margin: 0.5rem 0;
}
}
}
```
# Chose à faire?
Je génère le flux manuellement quand je mis mon blog à jour en ce moment.
C'est probablement pas une bonne chose si je veux que le webring soit à jour
même quand je ne suis pas actif.
Un cronjob peut résoudre ce problème, mais je le laisse comme exercice pour les lecteurs.
[openring]: https://git.sr.ht/~sircmpwn/openring
[ddvault]: https://drewdevault.com/
[golang]: https://golang.org/doc/install
[ring-tmpl]: https://git.sr.ht/~sircmpwn/drewdevault.com/tree/master/item/webring-in.template
[whence]: /menglish/

View File

@ -1,11 +1,10 @@
---
layout: post
title: "Using openring to add blogs you follow"
category: blog
date: 2021-01-11 15:51:31 +0700
tags: rss blog openring tutorial
lang: en
ref: openring-tutor
categories: tech tutorial
translationKey: "openring-tutor"
tags: [rss, blog, openring, tutorial]
title: "Using openring to add blogs you follow"
---
You may notice that now my blog now has a new section near the footer: a list of articles

View File

@ -1,10 +1,10 @@
---
layout: post
title: "Enough for first name/last name BS"
category: blog
date: 2021-02-08 17:14:08 +0700
tags: name culture inclusion awareness
lang: en
ref: first-name-last-name
translationKey: "first-name-last-name"
tags: [name, culture, inclusion, awareness]
title: "Enough for first name/last name BS"
---
I keep seeing registration where I have to input my "First name" and my "Last name".

View File

@ -1,9 +1,23 @@
---
layout: page
title: Social Media
language: en
ref: social
permalink: /about/social
slug: /about/social/
menu:
about:
name: About
url: /about/
weight: 1
social:
parent: about
name: Social media
url: /about/social/
weight: 2
works:
parent: about
name: Works
url: /about/works/
weight: 3
---
I practically left Facebook et al. Currently I am federated social networks, namely:

View File

@ -1,9 +1,23 @@
---
layout: page
title: Work
language: en
ref: work
permalink: /about/work
ref: works
slug: /about/works/
menu:
about:
name: About
url: /about/
weight: 1
social:
parent: about
name: Social media
url: /about/social/
weight: 2
works:
parent: about
name: Works
url: /about/works/
weight: 3
---
I am a web backend developer, though I'm open to experiment in other fields as

View File

@ -6,4 +6,4 @@ openring \
-s https://stallman.org/rss/rss.xml \
-s https://www.eff.org/rss/updates.xml \
< webring.template \
> _includes/custom-webring.html
> layouts/partials/custom-webring.html

View File

@ -1,32 +0,0 @@
---
layout: page
title: Glossary
language: en
ref: gloss
---
This list contains some words I use even though it is not
considered as standard English, or rarely used in English.
whence
: from where
thou
: singular second-person pronoun
ze
: singular gender-neutral third-person pronoun
pronunciation /ziː/, similar to German *sie*\
objective **zem**, possessive **zer**, reflexive **zemself**
I derived it from English determiner *this*, since modern pronouns
also come from Old English words for *this*. Logically, it would more likely
becomes *de* or *fe*. *Fe* seems out of place for me, and *de* may make me
look like appropriating AAVE.
*They* as a singular pronoun kinda works, but it causes confusion.
I prefer clarity, which is also the reason why I use the archaic *thou*
when the situation allows. Of course, I respect everyone's pronoun preference
so this is only used when I don't know it.

View File

@ -1,6 +0,0 @@
---
# Feel free to add content and custom Front Matter to this file.
# To modify the layout, see https://jekyllrb.com/docs/themes/#overriding-theme-defaults
layout: home
---

View File

@ -0,0 +1,26 @@
{{ define "main" }}
{{ if .Menus }}
<nav class="post-navigation">
{{ range .Menus }}
<a href="{{ .URL | absLangURL }}" title="{{ .Title }}">{{ .Name }}</a>
{{ end }}
</nav>
{{ end }}
<article class="post h-entry">
<header class="post-header">
<h1 class="p-name post-title{{ if .Params.favorite }} favorite{{end}}{{ if .Params.draft }} draft{{end}}">{{ trim .Title " " }}</h1>
</header>
<div class="content e-content">
{{ .Content }}
</div>
{{ partial "postInfo.html" . }}
</article>
{{ if and (.Site.Params.paginationSinglePost) (ne .Type "page") }}
{{ partial "paginationPost.html" . }}
{{ end }}
{{ partial "custom-webring.html" }}
{{ end }}

View File

@ -0,0 +1,12 @@
<footer>
<a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">
<img alt="Creative Commons License" style="border-width:0"
src="https://i.creativecommons.org/l/by-sa/4.0/88x31.png" />
</a>
<br>
The content for this site is
<a href="https://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>.
<br>
The <a href="https://git.sr.ht/~sircmpwn/drewdevault.com">code for this site</a>
is <a href="https://opensource.org/licenses/MIT">MIT</a>.
</footer>

View File

@ -0,0 +1,5 @@
<link rel="stylesheet" href="/css/custom.css">
<link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/images/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/images/favicon-16x16.png">
<link rel="manifest" href="/images/site.webmanifest">

View File

@ -0,0 +1,10 @@
{{ if .IsTranslated }}
<h4>{{ i18n "translations" }}</h4>
<ul>
{{ range .Translations }}
<li>
<a href="{{ .Permalink }}">{{ .Language.LanguageName }}: {{ .Title }}{{ if .IsPage }} ({{ i18n "wordCount" . }}){{ end }}</a>
</li>
{{ end }}
</ul>
{{ end }}

View File

@ -1,21 +0,0 @@
printf "Blog title: "
read title
printf "Tags: "
read tags
printf "Categories: "
read categories
printf "Ref: "
read ref
name="_posts/$(date -I)-${ref}.md"
_date=$(date "+%Y-%m-%d %T %z")
echo $name
echo "---" > "$name"
echo "layout: post" >> "$name"
echo "title: \"$title\"" >> "$name"
echo "date: $_date" >> "$name"
echo "tags: $tags" >> "$name"
echo "categories: $categories" >>"$name"
echo "lang: en" >>"$name"
echo "ref: $ref" >>"$name"
echo "---" >> "$name"
vim $name

68
static/css/custom.css Normal file
View File

@ -0,0 +1,68 @@
---
---
body {
font-family: serif;
}
.webring {
margin-top: 2rem;
}
.webring h2 {
font-size: 1.2rem;
}
.webring .articles {
width: 100%;
display: flex;
}
.webring .title {
margin: 0;
}
.webring .article {
flex: 1 1 0;
display: flex;
flex-direction: column;
padding: 0.5rem;
border: 1px solid #333;
margin: 0 0.5rem;
}
@media(max-width: 640px) {
.webring .articles {
flex-direction: column;
}
.webring .article {
margin: 0.5rem 0;
}
}
.webring .article:first-child {
margin-left: 0;
}
.webring .article:last-child {
margin-right: 0;
}
.webring .summary {
font-size: 0.8rem;
flex: 1 1 0;
}
.webring .attribution {
float: right;
font-size: 0.8rem;
color: #555;
line-height: 3;
}
dl dt {
font-weight: bold;
}
dl dd {
text-indent: 1em;
}

BIN
static/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 217 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 296 B

BIN
static/images/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -0,0 +1 @@
{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"}

1
themes/anubis Submodule

@ -0,0 +1 @@
Subproject commit 1ddecf607dc7f59db7cc64e17f75d67d2a3b08aa

View File

@ -6,7 +6,7 @@
<a href="https://git.sr.ht/~sircmpwn/openring">openring</a>
</small>
</h2>
<section class="footer-col-wrapper">
<section class="articles">
{{range .Articles}}
<div class="footer-col article">
<h4 class="title">