diff --git a/source/_posts/aliexpress-no-login-firefox.md b/source/_posts/aliexpress-no-login-firefox.md
index 84991dc..d26a71f 100644
--- a/source/_posts/aliexpress-no-login-firefox.md
+++ b/source/_posts/aliexpress-no-login-firefox.md
@@ -4,7 +4,7 @@ subtitle: AliExpress login doesn't show up on Firefox when there is a strict cro
date: 2019-02-28
lastUpdated: 2019-04-29
tags:
-- Firefox
+- firefox
---
AliExpress login doesn't show up on Firefox when there is a strict cross-origin policy (i.e. `network.http.referer.XOriginPolicy`). Here's how to whitelist it.
diff --git a/source/_posts/binaries-alpine-docker.md b/source/_posts/binaries-alpine-docker.md
index bab8163..4a5c1aa 100644
--- a/source/_posts/binaries-alpine-docker.md
+++ b/source/_posts/binaries-alpine-docker.md
@@ -3,8 +3,8 @@ title: Default binaries in Alpine docker image
subtitle: Here is the list of binaries shipped with the Docker image of Alpine Linux.
date: 2018-10-10
tags:
-- Linux
-- Alpine
+- linux
+- alpine
---
Here is the list of binaries shipped with the Docker image of Alpine Linux `alpine:3.8`
diff --git a/source/_posts/disable-control-alt-s-mate-shortcut.md b/source/_posts/disable-control-alt-s-mate-shortcut.md
index 59b7752..da01979 100644
--- a/source/_posts/disable-control-alt-s-mate-shortcut.md
+++ b/source/_posts/disable-control-alt-s-mate-shortcut.md
@@ -3,7 +3,7 @@ title: How to disable Control+Alt+S shortcut in MATE
subtitle: The shortcut conflicts with Notepad++, here's how to disable it.
date: 2018-10-24
tags:
-- Linux
+- linux
---
Control+Alt+S shortcut is used for toggling shaded state in MATE desktop environment. Once toggled, a window's content is hidden except for the title bar. It's useful for peeking at the content behind a window. I personally never use it as I usually just Alt+Tab or place two windows side by side. I prefer to disable it so I can use the 'Save As' shortcut in Notepad++.
diff --git a/source/_posts/doh-tls-privacy.md b/source/_posts/doh-tls-privacy.md
index 9d1fda5..3631b67 100644
--- a/source/_posts/doh-tls-privacy.md
+++ b/source/_posts/doh-tls-privacy.md
@@ -3,9 +3,9 @@ title: DNS-over-TLS/DNS-over-HTTPS does not protect your privacy
subtitle: DoT/DoH does not completely eliminate ISP surveillance.
date: 2019-04-04
tags:
-- Privacy
-- Security
-- DoH
+- privacy
+- security
+- doh
---
Recently I stumbled upon this [bug report](https://lists.zx2c4.com/pipermail/wireguard/2019-February/003902.html), and as a side note, the reporter wants to use DNS-over-TLS (DoT) for privacy reasons; to prevent the ISP from knowing visited website. It turns out many also believe this after a brief search for news articles on DoT or DNS-over-HTTPS (DoH). Actually, DoT/DoH does not completely eliminate ISP surveillance.
diff --git a/source/_posts/edit-multiple-questions-limesurvey.md b/source/_posts/edit-multiple-questions-limesurvey.md
index 90d4e98..f50e2dd 100644
--- a/source/_posts/edit-multiple-questions-limesurvey.md
+++ b/source/_posts/edit-multiple-questions-limesurvey.md
@@ -4,8 +4,8 @@ subtitle: List Questions view allows you to edit multiple questions at the same
date: 2018-10-18
lastUpdated: 2018-10-26
tags:
-- Stats
-- LimeSurvey
+- stats
+- limesurvey
---
On LimeSurvey, making minor edits to multiple questions can be quite a chore. `List Questions` view allows you to edit multiple questions at the same time.
diff --git a/source/_posts/embed-svg-img.md b/source/_posts/embed-svg-img.md
index ff419a9..298f13c 100644
--- a/source/_posts/embed-svg-img.md
+++ b/source/_posts/embed-svg-img.md
@@ -3,8 +3,8 @@ title: Embed SVG without using img tag
subtitle: Using img tag prevents the use of CSS to change property of SVG. There is a workaround.
date: 2019-06-01
tags:
-- SVG
-- Web
+- svg
+- web
---
Website usually embed SVG using ` ` tag or directly use the `` tag. Using ` ` tag prevents the use of CSS to change property of SVG. As for inline ``, I prefer to have a separate file that is easier to keep track.
diff --git a/source/_posts/engadget-redirect-guce.md b/source/_posts/engadget-redirect-guce.md
index 79e3ac7..fcbb177 100644
--- a/source/_posts/engadget-redirect-guce.md
+++ b/source/_posts/engadget-redirect-guce.md
@@ -3,8 +3,8 @@ title: Prevent Engadget from redirect to guce
subtitle: Block its cookies
date: 2019-06-09
tags:
-- Firefox
-- Web
+- firefox
+- web
---
> Skip to [solution](#Block-cookie).
diff --git a/source/_posts/facebook-instagram-whatsapp-china.md b/source/_posts/facebook-instagram-whatsapp-china.md
index e4e726f..a27db17 100644
--- a/source/_posts/facebook-instagram-whatsapp-china.md
+++ b/source/_posts/facebook-instagram-whatsapp-china.md
@@ -4,7 +4,7 @@ subtitle: Data roaming, commercial VPN provider to rolling your own VPN.
date: 2018-12-31
lastUpdated: 2019-01-13
tags:
-- Security
+- security
---
Facebook/Instagram/Whatsapp/Google are blocked in China. You can either use data roaming or VPN to access them. Roll your own VPN if you don't trust commercial VPN provider.
diff --git a/source/_posts/firefox-doh-cloudflare.md b/source/_posts/firefox-doh-cloudflare.md
index 02a7e73..fbf2f18 100644
--- a/source/_posts/firefox-doh-cloudflare.md
+++ b/source/_posts/firefox-doh-cloudflare.md
@@ -3,10 +3,10 @@ title: Cloudflare in Firefox is not the end of the world
subtitle: It's not enabled by default and you can easily switch to other providers.
date: 2019-05-25
tags:
-- Firefox
-- Privacy
-- Security
-- DoH
+- firefox
+- privacy
+- security
+- doh
---
Many criticise Firefox for using Cloudflare by default in DNS-over-HTTPS. In reality, it's **not enabled** by default and you can **easily switch** to other providers.
diff --git a/source/_posts/firefox-instances-profiles.md b/source/_posts/firefox-instances-profiles.md
index bea3865..0692b81 100644
--- a/source/_posts/firefox-instances-profiles.md
+++ b/source/_posts/firefox-instances-profiles.md
@@ -3,8 +3,8 @@ title: How to run more than one Firefox instance
subtitle: Using Firefox profiles, you can use more than two instances.
date: 2019-04-07
tags:
-- Firefox
-- Privacy
+- firefox
+- privacy
---
Running more than one Firefox instance allows you to use multiple cookies for a website. By default, you are limited to two separate cookies through *regular* and *private* windows. Using Firefox's **profiles**, you can use more than two.
diff --git a/source/_posts/gnu-vs-busybox-tools.md b/source/_posts/gnu-vs-busybox-tools.md
index d78d3cf..3b0b500 100644
--- a/source/_posts/gnu-vs-busybox-tools.md
+++ b/source/_posts/gnu-vs-busybox-tools.md
@@ -4,8 +4,8 @@ subtitle: Alpine uses BusyBox while Ubuntu uses GNU tools, and they behave diffe
date: 2018-10-13
lastUpdated: 2018-10-31
tags:
-- Linux
-- Alpine
+- linux
+- alpine
---
## Intro
diff --git a/source/_posts/hexo-blog-github.md b/source/_posts/hexo-blog-github.md
index f6a4602..bd893f2 100644
--- a/source/_posts/hexo-blog-github.md
+++ b/source/_posts/hexo-blog-github.md
@@ -3,7 +3,7 @@ title: How to create a Hexo blog on GitHub Pages
subtitle: Host your Hexo blog for free on GitHub Pages.
date: 2018-11-10
tags:
-- Hexo
+- hexo
---
In {% post_link how-to-create-a-hexo-blog 'previous post' %}, I showed you how to create a blog using [Hexo](https://hexo.io) and host it on [GitLab Pages](https://about.gitlab.com/features/pages/). Here's how to host it on [GitHub Pages](https://pages.github.com/):
diff --git a/source/_posts/hide-folders-caja-side-pane.md b/source/_posts/hide-folders-caja-side-pane.md
index 559406a..de27113 100644
--- a/source/_posts/hide-folders-caja-side-pane.md
+++ b/source/_posts/hide-folders-caja-side-pane.md
@@ -3,7 +3,7 @@ title: Hide folders of Caja side pane
subtitle: How to hide them.
date: 2018-10-02
tags:
-- Linux
+- linux
---
Caja is a file manager originally forked from Nautilus. It's used in MATE desktop environment, found in Ubuntu MATE or Linux Mint. Since it shares similar base with Nautilus, following guide also applies to Nautilus too (I haven't tested it though).
diff --git a/source/_posts/how-to-create-a-hexo-blog.md b/source/_posts/how-to-create-a-hexo-blog.md
index d4b195b..ba947b6 100644
--- a/source/_posts/how-to-create-a-hexo-blog.md
+++ b/source/_posts/how-to-create-a-hexo-blog.md
@@ -4,8 +4,8 @@ subtitle: Create a website/blog using Hexo on GitLab Pages for free using this d
date: 2018-09-21
lastUpdated: 2018-11-10
tags:
-- Hexo
-- GitLab
+- hexo
+- gitlab
---
Create a website/blog using Hexo on [GitLab Pages](https://about.gitlab.com/features/pages/) for free using the following guide. Refer to my {% post_link hexo-blog-github 'another guide' %} for [GitHub Pages](https://pages.github.com/).
diff --git a/source/_posts/how-to-remove-windows-10-default-apps.md b/source/_posts/how-to-remove-windows-10-default-apps.md
index 2561314..8885907 100644
--- a/source/_posts/how-to-remove-windows-10-default-apps.md
+++ b/source/_posts/how-to-remove-windows-10-default-apps.md
@@ -4,7 +4,7 @@ subtitle: How to get rid of these bloatware.
date: 2018-09-26
lastUpdated: 2019-03-01
tags:
-- Microsoft
+- microsoft
---
Windows 10 comes bundled with many unused apps. Worse, it even install third-party apps from time to time by *itself* (even after you remove it!). Here's how to get rid of these bloatware.
diff --git a/source/_posts/make-hexo-blog-smaller.md b/source/_posts/make-hexo-blog-smaller.md
index 14bebeb..22e2e47 100644
--- a/source/_posts/make-hexo-blog-smaller.md
+++ b/source/_posts/make-hexo-blog-smaller.md
@@ -4,7 +4,7 @@ subtitle: Static site serves html, css, javascript and images. These files can b
date: 2018-09-28
lastUpdated: 2018-10-06
tags:
-- Hexo
+- hexo
---
# Minify
diff --git a/source/_posts/make-pdf-files-smaller.md b/source/_posts/make-pdf-files-smaller.md
index 09d8d6d..bcec378 100644
--- a/source/_posts/make-pdf-files-smaller.md
+++ b/source/_posts/make-pdf-files-smaller.md
@@ -3,7 +3,7 @@ title: Make PDF files smaller
subtitle: Convert to grayscale and reduce the resolution.
date: 2019-01-05
tags:
-- PDF
+- pdf
---
The most effective ways of reducing the file size of a PDF is by converting to grayscale and reduce the resolution.
diff --git a/source/_posts/microg-google-play-replacement.md b/source/_posts/microg-google-play-replacement.md
index 879af80..84c514d 100644
--- a/source/_posts/microg-google-play-replacement.md
+++ b/source/_posts/microg-google-play-replacement.md
@@ -4,7 +4,7 @@ subtitle: The core of the Android OS is open source, but much of the core apps,
date: 2019-01-12
lastUpdated: 2019-04-30
tags:
-- Android
+- android
---
[microG](https://microg.org/) is an open source re-implementation of Google Play Service/Services Framework. While the core of the Android OS is still open source, much of the core apps, libraries and APIs are proprietary. Refer to [this article](https://arstechnica.com/gadgets/2018/07/googles-iron-grip-on-android-controlling-open-source-by-any-means-necessary/) for more info.
diff --git a/source/_posts/recommended-android-apps.md b/source/_posts/recommended-android-apps.md
index 6ce9629..4036a29 100644
--- a/source/_posts/recommended-android-apps.md
+++ b/source/_posts/recommended-android-apps.md
@@ -4,7 +4,7 @@ subtitle: Apps I'm currently using and recommend to everyone.
date: 2019-01-07
lastUpdated: 2019-04-30
tags:
-- Android
+- android
---
Following my switch to [microG](https://microg.org/) (an open source re-implementation of Google Play), some Google Apps stopped working ({% post_link microg-google-play-replacement 'read here' %}). During my search for replacements, I discover many open source alternatives. These are the apps I'm currently using and recommend to everyone.
diff --git a/source/_posts/replace-truecrypt-keepassx-adblock-plus.md b/source/_posts/replace-truecrypt-keepassx-adblock-plus.md
index f85cb22..bea68c9 100644
--- a/source/_posts/replace-truecrypt-keepassx-adblock-plus.md
+++ b/source/_posts/replace-truecrypt-keepassx-adblock-plus.md
@@ -3,8 +3,8 @@ title: You should switch to these replacements of TrueCrypt/KeePassX/Adblock Plu
subtitle: Some have been discontinued while others have been commercialised.
date: 2019-01-15
tags:
-- Linux
-- Web
+- linux
+- web
---
TrueCrypt and KeePassX have been discontinued while Adblock Plus has been [commercialised](https://en.wikipedia.org/wiki/Adblock_Plus#Controversy_over_ad_filtering_and_ad_whitelisting). Their replacements are [VeraCrypt](https://www.veracrypt.fr/), [KeePassXC](https://keepassxc.org/) and [uBlock Origin](https://github.com/gorhill/uBlock/) respectively.
diff --git a/source/_posts/running-locally-installed-node-packages.md b/source/_posts/running-locally-installed-node-packages.md
index c19806c..5cdfb20 100644
--- a/source/_posts/running-locally-installed-node-packages.md
+++ b/source/_posts/running-locally-installed-node-packages.md
@@ -3,7 +3,7 @@ title: Running locally installed node packages
subtitle: How to run binaries of locally installed node packages.
date: 2018-10-24
tags:
-- Node
+- node
---
Installing a package with `--global` introduce more trouble than convenience. Here's how to run binaries of locally installed node packages.
diff --git a/source/_posts/secure-node-modules-snyk.md b/source/_posts/secure-node-modules-snyk.md
index 717af46..3e5b829 100644
--- a/source/_posts/secure-node-modules-snyk.md
+++ b/source/_posts/secure-node-modules-snyk.md
@@ -4,9 +4,9 @@ subtitle: The package dependency on Node can cause security issue. Here's how to
date: 2018-10-01
lastUpdated: 2019-06-11
tags:
-- Node
-- Snyk
-- Security
+- node
+- snyk
+- security
---
## Intro
diff --git a/source/_posts/snyk-patch-alpine-docker.md b/source/_posts/snyk-patch-alpine-docker.md
index 8354e03..4a668f0 100644
--- a/source/_posts/snyk-patch-alpine-docker.md
+++ b/source/_posts/snyk-patch-alpine-docker.md
@@ -4,10 +4,10 @@ subtitle: Synk depends on GNU version of patch utility.
date: 2018-10-31
lastUpdated: 2019-03-09
tags:
-- Snyk
-- Linux
-- Security
-- Alpine
+- snyk
+- linux
+- security
+- alpine
---
Snyk initially runs fine on Alpine, until you try to `snyk protect` to patch the modules. Turns out Synk depends on GNU version of `patch` utility.
diff --git a/source/_posts/spellcheck-language-ghostwriter.md b/source/_posts/spellcheck-language-ghostwriter.md
index 45c183b..4de15f3 100644
--- a/source/_posts/spellcheck-language-ghostwriter.md
+++ b/source/_posts/spellcheck-language-ghostwriter.md
@@ -4,7 +4,7 @@ subtitle: It supports Hunspell dictionaries for spellcheck of other languages.
date: 2018-10-14
lastUpdated: 2019-06-06
tags:
-- Markdown
+- markdown
---
Ghostwriter is a Markdown editor with html preview. Previously I used [StackEdit](https://stackedit.io/app), but it's web-based.
diff --git a/source/_posts/statistical-test.md b/source/_posts/statistical-test.md
index 398b35d..0be078a 100644
--- a/source/_posts/statistical-test.md
+++ b/source/_posts/statistical-test.md
@@ -3,7 +3,7 @@ title: Which statistical test should I use?
subtitle: Choosing a suitable statistical test depends on the design of the experiment, notably the number and the type of variables.
date: 2019-02-09
tags:
-- Stats
+- stats
---
Note: The previews are displayed in dark theme, but hi-res downloads are in light theme.
diff --git a/source/_posts/unix-tools-line-endings.md b/source/_posts/unix-tools-line-endings.md
index ceaa0ab..3b76290 100644
--- a/source/_posts/unix-tools-line-endings.md
+++ b/source/_posts/unix-tools-line-endings.md
@@ -3,7 +3,7 @@ title: Use Unix line endings in Unix tools
subtitle: Before you use any Unix tools to process some file, make sure the file only use Unix line endings.
date: 2018-11-08
tags:
-- Linux
+- linux
---
Before you use any Unix tools to process some file, make sure the file only use Unix [line endings](https://en.wikipedia.org/wiki/Newline#Representation).
diff --git a/source/_posts/validity-gitlab-ci-config.md b/source/_posts/validity-gitlab-ci-config.md
index b87bfee..94d6282 100644
--- a/source/_posts/validity-gitlab-ci-config.md
+++ b/source/_posts/validity-gitlab-ci-config.md
@@ -3,7 +3,7 @@ title: How to check validity of GitLab CI config
subtitle: How to verify/lint the config.
date: 2018-10-25
tags:
-- GitLab
+- gitlab
---
It can be frustrating after you push the changes you made to `.gitlab-ci.yml`, only to discover later that it's invalid on gitlab.com. Here's how to verify/lint the config.
diff --git a/source/_posts/word-break-limesurvey.md b/source/_posts/word-break-limesurvey.md
index 14d032d..da1d4c8 100644
--- a/source/_posts/word-break-limesurvey.md
+++ b/source/_posts/word-break-limesurvey.md
@@ -3,8 +3,8 @@ title: Prevent word break in array question on LimeSurvey
subtitle: In array type question, when you add many answer options, some words might break into next line, especially when the word is long.
date: 2018-10-31
tags:
-- Stats
-- LimeSurvey
+- stats
+- limesurvey
---
When you have many answer options, the word can break into next line, like this:
diff --git a/themes/typing/layout/_partial/post/tag.ejs b/themes/typing/layout/_partial/post/tag.ejs
index 61e4379..9937c99 100644
--- a/themes/typing/layout/_partial/post/tag.ejs
+++ b/themes/typing/layout/_partial/post/tag.ejs
@@ -1,6 +1,7 @@
<% if (post.tags && post.tags.length) { %>
<%- list_tags(post.tags, {
show_count: false,
- class: 'article-tag'
+ class: 'article-tag',
+ transform: titlecase
}) %>
<% } %>
diff --git a/themes/typing/scripts/sitemap/.sitemap.xml b/themes/typing/scripts/sitemap/.sitemap.xml
index e698078..246cfd2 100644
--- a/themes/typing/scripts/sitemap/.sitemap.xml
+++ b/themes/typing/scripts/sitemap/.sitemap.xml
@@ -13,7 +13,7 @@
{# home page #}
- {{ config.url + '/' + config.archive_dir + '/' }}
+ {{ config.url + '/' + config.archive_dir + '/' | uriencode }}
{{ sNow }}
daily
1.0
@@ -22,7 +22,7 @@
{# tag pages #}
{% for tag in tags %}
- {{ tag.permalink }}
+ {{ tag.permalink | uriencode }}
{{ sNow }}
daily
0.6
@@ -32,7 +32,7 @@
{# categories pages #}
{% for cat in categories %}
- {{ cat.permalink }}
+ {{ cat.permalink | uriencode }}
{{ sNow }}
daily
0.6