1 Commits

70 changed files with 235 additions and 1078 deletions

View File

@ -2,100 +2,8 @@ name: Audit
on:
push:
branches:
- master
pull_request:
jobs:
lighthouse:
runs-on: ubuntu-latest
steps:
- name: Setup Hugo
uses: peaceiris/actions-hugo@v2
with:
hugo-version: latest
extended: true
- name: Checkout (pull_request)
if: github.event.pull_request
uses: actions/checkout@v2
with:
submodules: recursive
fetch-depth: 0
ref: ${{ github.event.pull_request.base.ref }}
- name: Checkout (push)
if: github.event_name == 'push'
uses: actions/checkout@v2
with:
submodules: recursive
fetch-depth: 0
ref: ${{ github.event.before }}
- name: Build previous commit
run: |
hugo --printI18nWarnings --printPathWarnings --baseURL https://localhost -d old/
- name: Checkout current commit
uses: actions/checkout@v2
with:
submodules: recursive
fetch-depth: 0
clean: false
- name: Build current commit
run: |
hugo --printI18nWarnings --printPathWarnings --baseURL https://localhost
cp -r public/ new/
# copy, so that public/ stays, it will be needed for Caddy to serve
- name: Save full diff
run: diff -r old/ new/ | tee changes.diff || true
- name: Upload full diff
uses: actions/upload-artifact@v3
with:
name: diff
path: changes.diff
- name: Find changed URLs
id: changed_urls
env:
SCHEME: https
DOMAIN: localhost
run: |
urls="$(./changed-urls.sh)"
urls="${urls//'%'/'%25'}"
urls="${urls//$'\n'/'%0A'}"
urls="${urls//$'\r'/'%0D'}"
echo "::set-output name=urls::$urls"
- name: Install Caddy
if: "${{ steps.changed_urls.outputs.urls != '' }}"
run: |
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo tee /etc/apt/trusted.gpg.d/caddy-stable.asc
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy
sudo systemctl disable --now caddy
- name: Compress
if: "${{ steps.changed_urls.outputs.urls != '' }}"
run: time ./compress.sh
- name: Audit using Lighthouse
if: "${{ steps.changed_urls.outputs.urls != '' }}"
uses: treosh/lighthouse-ci-action@v9
with:
uploadArtifacts: true
configPath: ./lighthouserc.yaml
runs: 3
serverBaseUrl: https://lhci.bbaovanc.com/
# this should be safe since it only allows adding (not deleting) data
serverToken: 926a24f2-90e4-48b1-809f-055b9408cf4b
urls: ${{ steps.changed_urls.outputs.urls }}
audit:
runs-on: ubuntu-latest
steps:

View File

@ -1,7 +1,7 @@
name: Pull Request Cleanup
on:
pull_request_target:
pull_request:
types:
- closed

View File

@ -1,15 +1,57 @@
# Contributing to bobatheme
## Where to put questions/issues/etc
## Where to put stuff
Please use the [proper section on
bobaforum](https://forum.bbaovanc.com/t/my-website) for issues, questions, or
discussions.
### Discussions
The best place to ask questions or have discussions is the (relatively new)
discussions feature on GitHub, available
[here](https://github.com/BBaoVanC/bbaovanc.com/discussions). It's not too big
of an issue though because discussions and issues can easily be converted
between eachother.
### Issues
Issues should be used only for, well, issues. Ignore all the placeholder ones
prefixed with "Translate:" and tagged with the "translation" tag as they are
placeholders used in the projects tab. I might mark them as closed in the future
to clean it up but I'll worry about that later.
### Translations
Discussion relating to translations should either go as comments or reviews on
the pull request adding the translation, or as a discussion under the
[Translations category](https://github.com/BBaoVanC/bbaovanc.com/discussions/categories/translations).
## Writing translations
Translations should aim to get the meaning as close as possible to original
document. The changes in a translation pull request *should*:
- only update one page (multiple pages should be split into separate pull
requests)
- only contain changes for a single new file (no changes unrelated to
translation)
- thoroughly compared to the original text in order to get the same meaning
across
## Pull requests
### Commit messages
It's not too big of a deal what you put in your commit messages, but try to give
each commit a rough description of what it changes. I'll use squash merges most
of the time anyways.
### Description
If the pull request doesn't require any extra information in addition to the
title, you can probably leave the description blank. Otherwise you can put some
information, just try to keep it concise; it's better to read a couple sentences
than an entire essay with the same amount of information.
## Building
Just in case you need it.
## Automatic deploy previews with GitHub Actions
My GitHub Actions workflows will automatically build each pull request into a
@ -19,10 +61,9 @@ public deploy preview on demo.bbaovanc.com, and will link it in a comment.
You can also build the site yourself using Hugo, including a live local preview.
1. Make sure you install the latest version of Hugo, or hopefully at least the
1. Make sure you install the latest version of Hugo, or at least the
`min_version` listed in
[theme.toml](https://github.com/BBaoVanC/bobatheme/blob/master/theme.toml#L11).
Let me know if that minimum version isn't enough and I'll fix it.
2. Clone the repo
3. Make sure to download and checkout the submodules (use `git submodule update
--init --recursive`). The `--recursive` flag is especially important because

View File

@ -1,9 +0,0 @@
# vim: ft=caddyfile
https://localhost {
header Cache-Control no-cache
root * public/
file_server {
precompressed br gzip
}
}

View File

@ -1,8 +1,3 @@
# bbaovanc.com
My personal website, generated using [Hugo](https://gohugo.io)
## Discussions
Use [bobaforum](https://forum.bbaovanc.com) for questions, ideas, discussions,
etc. relating to me or my website.

View File

@ -1,3 +0,0 @@
function share_event(service) {
plausible("Share", {props: {Network: service}});
}

View File

@ -1,8 +0,0 @@
#!/bin/sh
diff -qrN old/ new/ |
grep -oP '(?<=\s)new\/\S*' |
xargs -d '\n' ls -1d 2>/dev/null |
grep 'index.html$' |
sed 's/index.html$//' |
sed "s/^new/${SCHEME:=http}:\/\/${DOMAIN:=example.com}/"

View File

@ -16,27 +16,13 @@ author:
markup: # this just keeps the bobatheme markup styling
_merge: deep
related:
includeNewer: true
indices:
#- name: keywords
# weight: 100
- name: categories
weight: 80
- name: tags
weight: 80
- name: date
weight: 10
threshold: 80
toLower: true
params:
# these are for the OpenGraph/Twitter embeds in Hugo
description: My personal website
# these are for favicons in bobatheme (disabled by default)
faviconSVG: favicon.svg
appleTouchPNG: apple-touch-icon.png
# these are for favicons in bobatheme (unset by default)
faviconICO: favicon.ico
faviconPNG: favicon.png
# show reading time (enabled by default)
readingtime: true
@ -44,28 +30,9 @@ params:
# used for "View source" (unset by default)
gitFileURL: https://github.com/BBaoVanC/bbaovanc.com/blob/master
gitFileIcon: code
gitHistoryURL: https://github.com/BBaoVanC/bbaovanc.com/commits/master
# display a "Latest Posts" section on the homepage below its content
homepageLatestPosts: true
# social media share icons
shareButtons:
twitter: true
facebook: true
linkedin: true
reddit: true
telegram: true
print: true
# show "Latest Posts" section at bottom of content pages
latestPostsOnContent: true
footer: >-
See the [anonymous and privacy-friendly
analytics](https://plausible.bbaovanc.com/bbaovanc.com) for this site,
powered by [Plausible](https://plausible.io).
talkyardServerUrl: "https://talkyard.bbaovanc.com"
talkyardScriptUrl: "https://talkyard.bbaovanc.com/-/talkyard-comments.min.js"
# see https://gohugo.io/about/hugo-and-gdpr/#all-privacy-settings
# you probably want to keep this default
@ -77,12 +44,10 @@ languages:
languageName: English
title: bbaovanc's Website
weight: 1
menu:
main:
- identifier: forum
name: Forum
url: https://forum.bbaovanc.com
- identifier: status-page
name: Status Page
url: https://status.bbaovanc.com
es:
languageName: Español
title: sitio web de bbaovanc
weight: 2
params:
description: Mi sitio web personal

View File

@ -3,31 +3,22 @@
title: Home
description: >-
This is my personal website, home to my blog. It's powered by my own custom
theme named bobatheme, which is available at
This is my website, home to my blog and other personal pages. It's powered by
my own custom theme named bobatheme, available at
https://github.com/BBaoVanC/bobatheme.
---
## My Website
This is my personal website. I wrote it myself from scratch using [my own
theme][bobatheme-github] and a static site generator named [Hugo][hugo-website].
I occasionally write blog posts under the [blog section][blog-section].
This is my website. Pretty self-explanatory.
[bobatheme-github]: https://github.com/BBaoVanC/bobatheme
[hugo-website]: https://gohugo.io
[blog-section]: {{< ref "/blog/" >}}
## A fresh new theme
## Topics I write about
My website uses my own custom theme named
[bobatheme](https://github.com/BBaoVanC/bobatheme). Although it's not quite
finished yet, the current style will probably stay for the forseeable future.
I write mostly about technology, including:
- Linux
- Open Source Software
- Programming
- Web Development
## My other website
## Another website
I also run another website: https://boba.best.

View File

@ -1,7 +1,6 @@
---
title: bbaovanc
issoUserID: 284513e38f5c
---

View File

@ -0,0 +1,8 @@
---
title: Blog
description: >-
El hogar de mi blog.
---

View File

@ -2,7 +2,6 @@
title: Allow non root processes to bind to privileged ports in Linux
date: 2021-03-28T21:29:52-05:00
lastmod: 2022-05-02T01:05:44-05:00
toc: true
comments: true
@ -12,24 +11,20 @@ authors:
aliases:
- posts/allow-non-root-processes-to-bind-to-privileged-ports/
categories:
- guides
- linux
tags:
- gitea
- systemd
- guide
- linux
---
In Linux, processes cannot bind to privileged ports (&lt;=1024) unless they are
In Linux, processes cannot bind to privileged ports (<=1024) unless they are
running as root. Here's how to allow any process to bind to privileged ports.
<!--more-->
## Introduction
In Linux, processes cannot bind to privileged ports (&lt;=1024) unless they are
In Linux, processes cannot bind to privileged ports (<=1024) unless they are
running as root. I learned about this when I was trying to add SSH cloning to my
[Gitea](https://gitea.io) instance. This can be bypassed by giving
`CAP_NET_BIND_SERVICE` capabilities to either the systemd service, or the
@ -39,9 +34,9 @@ executable itself.
### Using systemd (preferred)
The best way is to tell systemd to give `CAP_NET_BIND_SERVICE` capabilities to
the service. In fact, the Gitea systemd service has two
lines[^systemd-set-capabilities] that are commented out:
The best way is to tell systemd to give `CAP_NET_BIND_SERVICE`
capabilities to the service. In fact, the Gitea systemd service has two
lines[^1] that are commented out:
```systemd
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
@ -53,7 +48,7 @@ Uncommenting these two lines was all I had to do for Gitea.
### Using `setcap`
You can add `CAP_NET_BIND_SERVICE` to the executable directly using `setcap`,
allowing it to bind to any port. Run the following command[^setcap-command]:
allowing it to bind to any port. Run the following command[^2]:
```bash
setcap 'cap_net_bind_service=+ep' /path/to/program
@ -62,7 +57,7 @@ setcap 'cap_net_bind_service=+ep' /path/to/program
Note that this means that anyone with permission to run this program will be
able to run it and bind to any privileged ports.
Other caveats[^caveats-quote]:
Other caveats[^2]:
> 1. You will need at least a 2.6.24 kernel
> 2. This won't work if your file is a script. (ie, uses a #! line to launch an
@ -75,10 +70,6 @@ Other caveats[^caveats-quote]:
> privileges like setcap or suid. So if your program uses its own .../lib/,
> you might have to look into another option like port forwarding.
[^systemd-set-capabilities]: See [these two lines in the Gitea systemd service
file](https://github.com/go-gitea/gitea/blob/3416e2a82586fca4cd452b93237b979300f55d62/contrib/systemd/gitea.service#L69)
and [this Stack Overflow answer](https://stackoverflow.com/a/47065825).
[^setcap-command]: https://stackoverflow.com/a/414258
[^caveats-quote]: https://stackoverflow.com/a/414258
[^1]: https://github.com/go-gitea/gitea/blob/3416e2a82586fca4cd452b93237b979300f55d62/contrib/systemd/gitea.service#L69
and https://stackoverflow.com/a/47065825
[^2]: https://stackoverflow.com/a/414258

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

View File

@ -1,144 +0,0 @@
---
title: Using GitHub Actions to audit my website with Google Chrome Lighthouse
date: 2022-05-07T00:54:11-05:00
lastmod: 2022-05-07T00:54:11-05:00
toc: true
comments: true
authors:
- bbaovanc
categories:
- devops
- meta
tags:
- caddy
- github-actions
- google-lighthouse
# this will be shown for the article in list pages and in the page metadata
# it can be either an image or video (this might change in the future, however)
resources:
- name: feature
src: dashboard-performance-graph.webp
title: Picture of the `Performance` section on the Lighthouse CI dashboard
- name: youtube-embed-performance-comparison
src: youtube-embed-performance-comparison.webp
title: >-
Performance hit caused by adding a YouTube embed. You can see the
comparison itself [on this comparison
page](https://lhci.bbaovanc.com/app/projects/bbaovanc.com/compare/01d2064b6fac?baseUrl=https%3A%2F%2Flocalhost%2Fblog%2Fthe-redesign-of-my-website%2F&compareUrl=https%3A%2F%2Flocalhost%2Fblog%2Fyoutube-url-structures-you-should-know%2F&baseBuild=01d2064b-6fac-40df-b4e6-373037ae1f9e).
---
The other day I set up automatic testing of my website using [Google Chrome
Lighthouse][google-lighthouse]. I'm also running my own Lighthouse CI server to
store test result history and show trends. Here's an outline of what this means,
some of the results I've obtained so far, and my thoughts on the usefulness of
Lighthouse.
[google-lighthouse]: https://developers.google.com/web/tools/lighthouse
<!--more-->
## What is Lighthouse?
Lighthouse is a tool developed by Google which audits websites and gives them a
score in four categories: *Performance*, *Accessibility*, *Best Practices*, and
*SEO (search engine optimization)*. It's also built into the developer console
in Chrome, so you can run it manually on any website you want directly inside
your browser.
I have already been using Lighthouse manually to do occasional tests on my
website and its theme, [bobatheme][bobatheme]. However, I recently came across
[this GitHub Action][lhci-action]. It caught my eye because I was [already using
GitHub Actions][old-audit-workflow] to perform a few basic Hugo[^hugo]-related
audits found [in a thread on the Hugo forum][hugo-audits-thread].
[^hugo]: [Hugo](https://gohugo.io) is the framework that my website is built on. It's
a static site generator which generates my site according to my own custom
templates that make up my theme.
[bobatheme]: https://github.com/BBaoVanC/bobatheme
[lhci-action]: https://github.com/marketplace/actions/lighthouse-ci-action
[old-audit-workflow]: https://github.com/BBaoVanC/bbaovanc.com/blob/31e25c2578a789afe71ce90352747eb427ca3c0e/.github/workflows/audit.yml#L31-L59
[hugo-audits-thread]: https://discourse.gohugo.io/t/audit-your-published-site-for-problems/35184
## Setting it all up
My goal is to run Lighthouse's audits on an environment as similar to my real
website's deployment as possible.
First, I [created a separate `lighthouse` job on my audit
workflow][lighthouse-actions-job] on GitHub Actions. This job will do all of the
testing. Since it's a separate job, it runs in parallel with my existing audit
task.
[lighthouse-actions-job]: https://github.com/BBaoVanC/bbaovanc.com/blob/3668b6cfb11d09149b5da347219cdc75d0ce0985/.github/workflows/audit.yml#L7
Next, I copied [my existing build steps verbatim][production-build-steps]. This
makes the site effectively identical to my real deployment on bbaovanc.com. One
of the crucial steps is to pre-compress all the files so their compressed
versions can be served without the server having to compress them on-the-fly,
saving valuable processing power.
[production-build-steps]: https://github.com/BBaoVanC/bbaovanc.com/blob/db65e9fc23b840429f5c9ad2b43d7dd01a024f36/.github/workflows/deploy.yml#L22-L33
Serving the compressed files is crucial because it simulates the real world
transfer size of the files. In addition, Lighthouse will recommend that you
serve the files compressed.
Inside the audit environment I use the same webserver (Caddy) and a [similar
configuration][audit-caddy-config] (compared to the [one running on
bbaovanc.com][production-caddy-config]) to what I have running on bbaovanc.com.
Caddy also is able to easily run the demo site with HTTPS, even on localhost.
That allows it to test certain elements (such as the comment section) that
wouldn't be allowed to load if it were plain, unsecured HTTP.
[audit-caddy-config]: https://github.com/BBaoVanC/bbaovanc.com/blob/3668b6cfb11d09149b5da347219cdc75d0ce0985/Caddyfile
[production-caddy-config]: https://git.bbaovanc.com/configs/caddy/src/commit/e3227eb2a2679e27545c2417c2565941f03fb744/conf.d/bbaovanc.com
{{< see-also "/blog/caddy-is-the-best-webserver" >}}
I selected [a few significant pages on my website][lighthouse-urls] so
Lighthouse can test a wide range of the features in my website's theme. The
results of these tests are then uploaded to [my Lighthouse CI
server][lhci-dashboard]. There you can view the audit history and see
differences in results between builds.
[lighthouse-urls]: https://github.com/BBaoVanC/bbaovanc.com/blob/3668b6cfb11d09149b5da347219cdc75d0ce0985/lighthouserc.yaml#L4-L19
[lhci-dashboard]: https://lhci.bbaovanc.com/app/projects/bbaovanc.com/dashboard
## What I found from the tests
### Performance impact of a YouTube video
I found that embedding a YouTube video using the built-in shortcode in Hugo
made the website drastically slower. It's a lot clearer in the audit environment
where everything is throttled down a bunch, so the performance impact is more
clear. Below is a screenshot of the difference in score between my blog post
with a YouTube embed and a similarly sized blog post which has no video.
{{< figure src="youtube-embed-performance-comparison" >}}
I can probably optimize this a little by making a copy of the built-in Hugo
YouTube shortcode, and modifying it to defer the loading of the remote scripts.
That will have to be a future project, and I'll probably write a post if I ever
end up testing it.
## My thoughts on Lighthouse
You can make the argument that the results from Lighthouse don't really mean
much in the real world. On modern devices and a decent internet speed most
websites will load just fine.
Although most pages on my site have a perfect score from Lighthouse, I'm not
going to go way out of my way in order to keep it that way. After all,
Lighthouse is just a tool intended for "improving the quality of web
pages."[^improve-quality-quote] That doesn't mean it needs to be perfect.
[^improve-quality-quote]: Source: [Google
Developers](https://developers.google.com/web/tools/lighthouse)

View File

@ -1,96 +0,0 @@
---
title: Newsletter for my blog posts
date: 2022-04-30T01:00:14-05:00
lastmod: 2022-04-30T01:00:14-05:00
toc: true
comments: true
authors:
- bbaovanc
categories:
- meta
tags:
- bobanews
- listmonk
- mailing-list
- newsletter
# this will be shown for the article in list pages and in the page metadata
# it can be either an image or video (this might change in the future, however)
resources:
- name: feature
src: listmonk-bobatheme-template.webp
title: My custom newsletter template based on my website's custom theme.
- name: listmonk-splash
src: listmonk-splash.webp
title: >-
Dashboard on listmonk ---
[source](https://listmonk.app/static/images/splash.png)
---
I created a newsletter for blog posts on my website so you can sign up for email
notifications when I post new ones, so I have more than just an RSS feed.
<!--more-->
**See the ["Signing Up" section]({{< ref "#signing-up" >}}) for instructions on
how to sign up for the newsletter.**
## Choosing the right mailing list manager
For my newsletter manager, I chose [listmonk](https://listmonk.app/). As I was
searching for self-hosted newsletter managers, it caught my eye because of how
modern and beautiful its interface looks. In fact, it was the only self-hosted
newsletter/mailing list manager I looked at that doesn't have an overall old and
ugly interface. Additionally, it has a live demo, so I was able to test it out
and see if it would be able to meet my (relatively low) requirements.
{{< figure src="listmonk-splash" >}}
I also tried out [GNU Mailman 3](https://www.list.org/) about a year ago.
However, I could not get it to integrate cleanly with my email
server[^mailman-mailcow]. listmonk can operate over SMTP, just like any other
program that sends mail. That makes the setup much less complicated, and I was
also able to set up the [official Docker
image](https://listmonk.app/docs/installation/#docker) using Docker Compose
setup just like the other programs I use.
If you're interested, the Docker Compose configuration files I ended up writing
are available at [configs/listmonk on my Gitea
instance](https://git.bbaovanc.com/configs/listmonk).
## Newsletter formatting
I ended up writing my own template for listmonk from scratch, based on the CSS
used in [bobatheme](https://github.com/BBaoVanC/bobatheme), the theme that my
website uses. Here's a screenshot of how it currently looks:
{{< figure src="feature" >}}
## Signing up
You can sign up to get emails about new posts on the [newsletter signup form
here](https://lists.bbaovanc.com/subscription/form). Make sure the box next to
the list labeled `bbaovanc.com Blog Posts` is checked. You'll need to provide an
email address, and optionally a nickname (or your real name if you want).
Right now there's only one list with public signup enabled, but that may change
if you're reading this in the future. In that case, you can sign up for as many
or as few lists as you want.
[^mailman-mailcow]: Mailman requires access to the mail server over
[LMTP](https://en.wikipedia.org/wiki/Local_Mail_Transfer_Protocol). However,
giving it access to my mail server over LMTP is not very easy because of the
setup that [Mailcow](https://mailcow.email) (my email server) uses. There *is*
an existing project called
[dockerized-mailcow-mailman](https://github.com/g4rf/dockerized-mailcow-mailman),
but it uses the Apache web server to serve the frontend. I'm not familiar with
Apache, and also I don't really want to complicate my Mailcow setup switching
to an almost completely different setup just for one little program.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

View File

@ -2,21 +2,16 @@
title: Caddy is literally the best webserver
date: 2021-11-13T00:43:35-06:00
lastmod: 2022-05-02T00:54:43-05:00
toc: true
comments: true
authors:
- bbaovanc
categories:
- linux
- sysadmin
- software
tags:
- caddy
- linux
- webserver
- caddy
resources:
- name: feature
@ -42,14 +37,14 @@ for general use.
## Built-in automatic HTTPS
Caddy can fetch certificates from Let's Encrypt and ZeroSSL out of the box.
HTTPS is enabled by default for eligible domains[^hostname-requirements], unless
you explicitly tell it not to.
HTTPS is enabled by default for eligible domains[^1], unless you explicitly tell
it not to.
### Incredible cipher security
Caddy has incredible defaults for TLS/SSL ciphers. Any site you host on Caddy
gets a perfect score from [Qualys SSL Labs](https://www.ssllabs.com/ssltest/)
out of the box.[^caddy-qualys-score]
out of the box.[^2]
## Dead simple configuration files: Caddy vs NGINX
@ -199,7 +194,7 @@ templates](https://pkg.go.dev/text/template). This means you can make simple
dynamic content while only using Caddy!
In fact, the [official Caddy website](https://caddyserver.com) is generated
entirely using Caddy's and Go templates![^caddy-templating]
entirely using Caddy's and Go templates![^3]
#### Error pages using HTTP Cats
@ -222,14 +217,12 @@ border around the image.
{{< figure src="caddy-browse" >}}
[^hostname-requirements]: For the rules on what domains have automatic HTTPS by
default, see ["Hostname requirements" on the Caddy
documentation](https://caddyserver.com/docs/automatic-https#hostname-requirements).
[^1]: The rules for what domains have automatic HTTPS by default are
[here](https://caddyserver.com/docs/automatic-https#hostname-requirements)
[^caddy-qualys-score]: SSL Labs caps the score to an A if HSTS isn't enabled.
After enabling it, then you get a perfect A+ score. See [my website's
score](https://www.ssllabs.com/ssltest/analyze.html?d=bbaovanc.com&latest)
[^2]: SSL Labs caps the score to an A if HSTS isn't enabled. After enabling it,
then you get a perfect A+ score. See
https://www.ssllabs.com/ssltest/analyze.html?d=bbaovanc.com&latest
([archived](https://archive.today/4JJDN)) for an example (bbaovanc.com).
[^caddy-templating]: See more info about templating [on the Caddy
docs](https://caddyserver.com/docs/caddyfile/directives/templates#examples)
[^3]: See more info [on the Caddy docs](https://caddyserver.com/docs/caddyfile/directives/templates#examples)

View File

@ -2,7 +2,6 @@
title: Checkra1n GUI on other Linux distros
date: 2021-03-25T21:19:51-05:00
lastmod: 2021-10-16T21:25:38-05:00
toc: true
comments: true
@ -12,13 +11,11 @@ authors:
aliases:
- posts/checkra1n-gui-on-other-distros/
categories:
- guides
- jailbreak
- linux
tags:
- arch-linux
- guide
- linux
- archlinux
- jailbreak
- checkra1n
resources:

View File

@ -3,7 +3,6 @@
# this is the title it generated. not even joking
title: Copilot
date: 2021-11-07T16:17:15-06:00
lastmod: 2021-11-07T16:17:15-06:00
toc: true
comments: true
@ -11,13 +10,11 @@ authors:
- GitHub Copilot
- bbaovanc
categories:
tags:
- github-copilot
series:
- github-copilot-experiments
- GitHub Copilot Experiments
---

View File

@ -0,0 +1,40 @@
---
title: Poner `(edited)` en medio de un mensaje de Discord
date: 2021-03-25T18:48:34-05:00
toc: false
comments: true
authors:
- bbaovanc
tags:
- tutorial
- discord
- discord-tricks
resources:
- name: feature
src: example.webp
title: Imagen ejemplo
---
Usando (a bit of trickery) con el carácter [RLE -- right to left embedding],
puedes poner el texto `(edited)` dentro del mensaje.
<!--more-->
## Tutorial
1. Copie el carácter [RLE -- same as above] (U+202A) a tu portapapeles.
2. Edite el mensaje anterior
3. Elimina todo el texto
4. Pega la carácter
5. Escribe el texto que quieres a la derecha de `(edited)`
6. Pulsa espacio y pega la carácter
7. Escribe el texto que quieres a la izquierda de `(edited)`
*Esto entrada de blog fue adaptado de [gitea:bbaovanc/discord-tricks][1]*
[1]: https://git.bbaovanc.com/bbaovanc/discord-tricks

View File

@ -1,8 +1,7 @@
---
title: How to put `(edited)` in the middle of a message in Discord
title: Put `(edited)` in the middle of a message in Discord
date: 2021-03-25T18:48:34-05:00
lastmod: 2022-04-08T23:29:41-05:00
toc: true
comments: true
@ -12,11 +11,8 @@ authors:
aliases:
- posts/edited-in-middle-of-message-discord/
categories:
- guides
- tips-and-tricks
tags:
- tutorial
- discord
- discord-tricks
@ -27,11 +23,9 @@ resources:
---
You might have seen a trick on Discord where the little `(edited)` caption
appears in the middle of a message instead of at the end. With a small hack
involving the [right-to-left embedding character
(U+202B)](https://unicode-explorer.com/c/202B), the `(edited)` text can be moved
to any location inside the message.
With a bit of trickery using the RLE character (U+202B), you can get the
`(edited)` text on a message to be somewhere other than at the end of the
message.
<!--more-->
@ -42,23 +36,24 @@ Before you start, copy the "right-to-left embedding" character
### Method 1
With this method you write a placeholder message, and then replace it completely
with a new message containing the `(edited)` text inside it all at once.
This method allows you to create a placeholder message, and then replace it with
a new message with the `(edited)` text inside it all at once.
1. Send a message with some random text (this text will be replaced entirely)
1. Send a message with some random text since you have to edit an existing
message for the trick to work.
2. Start editing the message you just created and delete all the text inside
3. Type the text you want on the left of `(edited)`.
4. Type a space, then paste the character twice, and type another space.
5. Type the text you want on the right of `(edited)`.
6. Save the message.
You can also start at step 3 instead, send the message, and then perform any
edit on the message afterwards to add the `(edited)` text.
You can also start at step 3 instead, send the message, and then edit the
message afterwards to add the `(edited)` text.
### Method 2
This method works by adding `(edited)` to the end of an existing message, and
then extra text to the right.
This method allows you to add `(edited)` to the end of an existing message, and
then add even more text to the right of that.
1. Send a message containing the text you want on the left of `(edited)`.
2. Start editing the message you just created

View File

@ -1,23 +1,18 @@
---
title: Experimenting with GitHub Copilot
title: GitHub Copilot experiments
date: 2021-11-06T23:56:47-05:00
lastmod: 2021-11-08T21:46:39-06:00
toc: true
comments: true
authors:
- bbaovanc
categories:
- programming
- tinkering
tags:
- github-copilot
series:
- github-copilot-experiments
- GitHub Copilot Experiments
resources:
- name: feature

View File

@ -12,13 +12,10 @@ aliases:
- /blog/posts/sed-text-substitution-in-discord/
- /blog/posts/text-substitution-in-discord-using-sed/
categories:
- tips-and-tricks
tags:
- tutorial
- discord
- discord-tricks
- sed
resources:
- name: feature

View File

@ -2,20 +2,17 @@
title: The redesign of my website
date: 2021-10-18T14:03:05-05:00
lastmod: 2021-10-27T09:51:43-05:00
toc: true
comments: true
authors:
- bbaovanc
categories:
- meta
tags:
- bobatheme
- announcement
- blog
- hugo
- web-development
- bobatheme
resources:
- name: feature

View File

@ -2,21 +2,18 @@
title: Using Github Copilot to write a blog post
date: 2021-11-07T16:17:15-06:00
lastmod: 2021-11-08T21:46:39-06:00
toc: true
comments: true
authors:
- bbaovanc
categories:
tags:
- github-copilot
- markdown
- blog
series:
- github-copilot-experiments
- GitHub Copilot Experiments
# this will be shown for the article in list pages and in the page metadata
# it can be either an image or video (this might change in the future, however)

View File

@ -2,20 +2,15 @@
title: Youtube URL structures you should know
date: 2021-10-30T21:20:38-05:00
lastmod: 2022-05-02T00:59:25-05:00
toc: true
comments: true
authors:
- bbaovanc
categories:
- tips-and-tricks
tags:
- query-parameters
- url-structures
- youtube
- url-structures
resources:
- name: feature
@ -65,7 +60,7 @@ Here's the video I'll be using as an example:
{{< youtube F6va6tg62qg >}}
I embedded that video on my website with this code:[^hugo-shortcode]
I embedded that video on my website with this code:[^1]
```text
{{</* youtube F6va6tg62qg */>}}
@ -126,9 +121,5 @@ As far as I know, it's not possible to link to a playlist using `youtu.be`.
[This Stack Exchange answer](https://webapps.stackexchange.com/a/9881) is a good
reference for some other YouTube parameters.
[^hugo-shortcode]: I use a static site generator called
[Hugo](https://gohugo.io) for my website. It has a built in "shortcode" which
is a feature that allows me to embed certain code blocks into a page. One of
its shortcodes, named `youtube`, allows me to embed a YouTube video into my
post. You can read more info about [shortcodes on the Hugo
docs](https://gohugo.io/content-management/shortcodes/#use-hugos-built-in-shortcodes)
[^1]: I use a static site generator called [Hugo](https://gohugo.io) for my
website.

View File

@ -1,11 +0,0 @@
---
title: DevOps
---
Posts about toolchain and software pipeline stuff. The abbreviation means
software development (Dev) plus IT operations (Ops). Includes things such as
CI/CD (GitHub Actions).
<!--more-->

View File

@ -1,9 +0,0 @@
---
title: Guides
---
Any kind of guide or tutorial.
<!--more-->

View File

@ -1,9 +0,0 @@
---
title: Jailbreak
---
Anything related to jailbreaking (iOS or other Apple devices).
<!--more-->

View File

@ -1,9 +0,0 @@
---
title: Linux
---
Anything relating to Linux (the kernel or operating systems).
<!--more-->

View File

@ -1,9 +0,0 @@
---
title: Meta
---
Posts talking about my website.
<!--more-->

View File

@ -1,9 +0,0 @@
---
title: Programming
---
Any posts relating to programming and/or software development.
<!--more-->

View File

@ -1,9 +0,0 @@
---
title: Software
---
Posts that discuss/review various programs.
<!--more-->

View File

@ -1,10 +0,0 @@
---
title: Sysadmin
---
Anything relating to managing servers (usually relating to Linux). "Sysadmin" is
short for "system administrator".
<!--more-->

View File

@ -1,9 +0,0 @@
---
title: Tinkering
---
Posts where I experiment with things.
<!--more-->

View File

@ -1,10 +0,0 @@
---
title: Tips and Tricks
---
Random little tips and/or tricks that I want to share. Will probably be mostly
short articles (but that's not a bad thing).
<!--more-->

View File

@ -3,7 +3,7 @@
title: Contact
menu: main
toc: false
comments: true
comments: false
authors:
- bbaovanc
@ -13,8 +13,5 @@ description: >-
---
- Email: bbaovanc@bbaovanc.com
- If needed, encrypt your email with [my PGP
key](https://keyserver.ubuntu.com/pks/lookup?search=bbaovanc%40bbaovanc.com&fingerprint=on&op=index)
- bobaforum (ask me questions publicly, I guess like a Q&A):
https://forum.bbaovanc.com/t/ask-me
- Email: [contact@bbaovanc.com](mailto:contact@bbaovanc.com)
- Matrix: [@bbaovanc:boba.best](https://matrix.to/#/@bbaovanc:boba.best)

View File

@ -3,7 +3,7 @@
title: Donate
menu: main
toc: false
comments: true
comments: false
authors:
- bbaovanc

View File

@ -3,7 +3,7 @@
title: Links
menu: main
toc: true
comments: true
comments: false
authors:
- bbaovanc
@ -18,58 +18,41 @@ description: >-
## Other
- [GitHub](https://github.com/BBaoVanC/) - my GitHub profile
- [GitHub](https://github.com/BBaoVanC/)
- [boba.best](https://boba.best/)
## My Website
- [bbaovanc.com source code](https://github.com/BBaoVanC/bbaovanc.com)
- [bobatheme](https://github.com/BBaoVanC/bobatheme) - theme for this
website
- [bobaforum](https://forum.bbaovanc.com) - my public forum
- [Searx Instance](https://search.bbaovanc.com/) - privacy-respecting search
engine
- [Gitea Instance](https://git.bbaovanc.com/) - mostly just mirrors of my GitHub
repos
- [Homepage](https://bbaovanc.com/) - theme:
[bobatheme](https://github.com/BBaoVanC/bobatheme)
- [Blog](https://bbaovanc.com/blog/)
- [Status Page](https://status.bbaovanc.com/)
- [Searx Instance](https://search.bbaovanc.com/) -
[source code](https://github.com/BBaoVanC/searx)
- [Gitea Instance](https://git.bbaovanc.com/)
## My Projects
## My Software
- [smines](https://github.com/BBaoVanC/smines) - TUI minesweeper in C, made for
practice
- [imgupload.py](https://github.com/imgupload-py/imgupload.py) - simple image
uploading server written with Python Flask
- [mojiman](https://github.com/BBaoVanC/mojiman) - program I made to learn Rust
- [pynamegen](https://git.bbaovanc.com/bbaovanc/pynamegen) - name generator
written in Python
- [smines](https://github.com/BBaoVanC/smines)
- [imgupload.py](https://github.com/imgupload-py/imgupload.py)
- [mojiman](https://github.com/BBaoVanC/mojiman)
- [pynamegen](https://git.bbaovanc.com/bbaovanc/pynamegen)
- [libnamegen](https://git.bbaovanc.com/bbaovanc/libnamegen)
- [liblistloader](https://git.bbaovanc.com/bbaovanc/liblistloader)
- [libprogress](https://git.bbaovanc.com/bbaovanc/libprogress)
- [RokuRemote](https://github.com/BBaoVanC/RokuRemote) - keyboard-based remote
control for Roku
- [RokuRemote](https://github.com/BBaoVanC/RokuRemote)
## My Configurations
- [dotfiles](https://github.com/BBaoVanC/dotfiles) - main repository with my
configs
- [docker-dotfiles](https://github.com/BBaoVanC/docker-dotfiles) - Docker image
that contains my dotfiles
- [onehalf](https://github.com/BBaoVanC/onehalf) - the theme I use on my
terminal
- [dotfiles](https://github.com/BBaoVanC/dotfiles)
- [dwm](https://github.com/BBaoVanC/.dwm)
- [dwm-flexipatch](https://github.com/BBaoVanC/dwm-flexipatch)
- [dwmblocks](https://github.com/BBaoVanC/dwmblocks)
- [dmenu](https://github.com/BBaoVanC/dmenu)
### Archived
- [dwm](https://github.com/BBaoVanC/.dwm) - outer repo with submodules for my
various dwm-related configs
- [dwm-flexipatch](https://github.com/BBaoVanC/dwm-flexipatch) - see
https://github.com/bakkeby/dwm-flexipatch
- [dwmblocks](https://github.com/BBaoVanC/dwmblocks) - DWM status bar, see
https://github.com/torrinfail/dwmblocks
- [dmenu](https://github.com/BBaoVanC/dmenu) - dynamic menu, see
https://tools.suckless.org/dmenu/
- [st](https://github.com/BBaoVanC/st) - simple terminal, see
https://st.suckless.org
- [slstatus](https://github.com/BBaoVanC/slstatus) - suckless status, see
https://tools.suckless.org/slstatus/
- [dwm](https://github.com/BBaoVanC/dwm) - dynamic window manager, see
https://dwm.suckless.org/
- [xmonad](https://github.com/BBaoVanC/.xmonad) - see https://xmonad.org
- [dwm](https://github.com/BBaoVanC/dwm)
- [st](https://github.com/BBaoVanC/st)
- [slstatus](https://github.com/BBaoVanC/slstatus)
- [xmonad](https://github.com/BBaoVanC/.xmonad)

View File

@ -2,9 +2,8 @@
title: Github Copilot Experiments
description: >-
Make sure to read the last two posts where I made GitHub Copilot write a blog
post itself.
---
Make sure to read the last two posts where I made GitHub Copilot write a blog
post itself.
<!--more-->

View File

@ -1,10 +0,0 @@
---
title: Arch Linux
---
A Linux distribution which aims to be lightweight, flexible, and simple. See
https://archlinux.org for more information.
<!--more-->

View File

@ -1,12 +0,0 @@
---
title: bobanews
---
The main name for my newsletter. I recommend you read the [blog post I wrote
about it][newsletter-post].
[newsletter-post]: {{< ref "/blog/blog-post-newsletter" >}}
<!--more-->

View File

@ -1,12 +0,0 @@
---
title: bobatheme
---
Posts about bobatheme, my custom [Hugo][hugo-website] theme which I use on this
website.
[hugo-website]: https://gohugo.io
<!--more-->

View File

@ -1,14 +0,0 @@
---
title: Caddy
---
Caddy is a powerful and open source webserver written in [Golang][golang] which
includes some fancy features such as built-in automatic HTTPS. It's by far my
favorite webserver. See my [blog post about Caddy][caddy-blog-post] for why.
[golang]: https://go.dev/
[caddy-blog-post]: {{< ref "/blog/caddy-is-the-best-webserver" >}}
<!--more-->

View File

@ -1,13 +0,0 @@
---
title: checkra1n
---
An [iOS jailbreak][ios-jailbreaking] which supports the iPhone 4s to the iPhone
X. See the [official checkra1n website][checkra1n-website] for more information.
[ios-jailbreaking]: https://en.wikipedia.org/wiki/IOS_jailbreaking
[checkra1n-website]: https://checkra.in/
<!--more-->

View File

@ -1,9 +0,0 @@
---
title: Discord Tricks
---
Tips and tricks I have learned about Discord.
<!--more-->

View File

@ -1,14 +0,0 @@
---
title: Discord
---
An extremely popular chat platform. You have to live under a rock to not know
what Discord is.
<!--more-->
See also: the [discord-tricks tag][discord-tricks-tag].
[discord-tricks-tag]: {{< ref "/tags/discord-tricks/" >}}

View File

@ -1,13 +0,0 @@
---
title: Gitea
---
Gitea is a lightweight self-hosted Git service similar to GitHub. I use it on
[bbaovanc's Gitea][bbaovanc-gitea] and [bobatea][bobatea].
[bbaovanc-gitea]: https://git.bbaovanc.com
[bobatea]: https://git.boba.best
<!--more-->

View File

@ -1,11 +0,0 @@
---
title: Github Actions
---
Any posts that talk about GitHub's CI/CD platform. This is what I use for
automatic tasks on my website, such as automatic audits, and automatic building
and deploying.
<!--more-->

View File

@ -1,14 +0,0 @@
---
title: GitHub Copilot
---
An extension made by GitHub which provides artificial intelligence powered
autocomplete, trained on real open source code. It is intended to give smarter
results than a typical autocomplete solution can, such as automatically
generating [boilerplate code][boilerplate-code].
[boilerplate-code]: https://en.wikipedia.org/wiki/Boilerplate_code
<!--more-->

View File

@ -1,11 +0,0 @@
---
title: Google Lighthouse
---
Lighthouse is a tool that can audit websites based on performance,
accessibility, SEO, and more. It also provides useful suggestions on how a
website can be improved.
<!--more-->

View File

@ -1,9 +0,0 @@
---
title: Hugo
---
Hugo is a static site generator which I use to generate this website.
<!--more-->

View File

@ -1,12 +0,0 @@
---
title: listmonk
---
A self-hosted newsletter manager which I use to handle my blog post newsletter.
Read [this blog post][newsletter-blog-post] for more information.
[newsletter-blog-post]: {{< ref "/blog/blog-post-newsletter" >}}
<!--more-->

View File

@ -1,11 +0,0 @@
---
title: Markdown
---
Markdown is a simple and easy to use markup language which is actually used to
write the content on this website. Writing it only requires learning a very
basis syntax, and using a plain-text editor.
<!--more-->

View File

@ -1,15 +0,0 @@
---
title: Newsletter
---
Blog posts related to my newsletter.
<!--more-->
You can sign up for my newsletter [using this signup form][signup-form]. Make
sure that you tick the box labeled `bbaovanc.com Blog Posts`. A nickname (or
your real name if you prefer) is optional.
[signup-form]: https://lists.bbaovanc.com/subscription/form

View File

@ -1,11 +0,0 @@
---
title: sed
---
Short for "stream editor", `sed` is a utility used to edit text on Unix systems.
It is usually used with regular expressions (regex for short). If you're
interested, look up "regex basics" and "sed basics", or something similar.
<!--more-->

View File

@ -1,10 +0,0 @@
---
title: systemd
---
`systemd` is by far the most popular service manager (known as an "init system")
used on Linux.
<!--more-->

View File

@ -1,9 +0,0 @@
---
title: URL Structures
---
Posts about URL conventions on certain websites or services.
<!--more-->

View File

@ -1,9 +0,0 @@
---
title: Web Development
---
Posts about developing for the internet.
<!--more-->

View File

@ -1,9 +0,0 @@
---
title: Webserver
---
Blog posts about webservers (software that runs websites).
<!--more-->

View File

@ -1,10 +0,0 @@
---
title: YouTube
---
One of the most popular video and social media platforms. If you don't know what
YouTube is, I don't know what to tell you.
<!--more-->

View File

@ -1,4 +1,3 @@
{{ if eq .Site.BaseURL "https://bbaovanc.com" }}
<script defer data-domain="bbaovanc.com" src="https://plausible.bbaovanc.com/js/bobalytics.outbound-links.js"></script>
<script>window.plausible = window.plausible || function() { (window.plausible.q = window.plausible.q || []).push(arguments) }</script>
<script defer data-domain="bbaovanc.com" src="https://plausible.bbaovanc.com/js/bobalytics.js"></script>
{{ end }}

View File

@ -1,155 +1,34 @@
<!-- idk why this is even required
vim: ft=html
-->
<style>
#isso-thread > h4 {
color: var(--text-1);
margin-bottom: 8px;
}
{{ if ne .Site.BaseURL "https://bbaovanc.com" }}
<i>Comment section is not available during development previews.</i>
{{ else }}
<noscript>
<small>
<i>Enable JavaScript to see the comment section.</i>
</small>
</noscript>
#isso-root .isso-comment:not(:first-of-type),
.isso-follow-up .isso-comment {
border-color: var(--background-highlight);
}
.isso-comment > .isso-text-wrapper > .isso-comment-header .isso-author,
.isso-comment > .isso-text-wrapper > .isso-comment-header .isso-page-author-suffix,
.isso-comment > .isso-text-wrapper > .isso-comment-footer,
.isso-comment > .isso-text-wrapper > .isso-comment-footer .isso-votes {
color: var(--text-1);
opacity: 80%;
}
.isso-comment.isso-is-page-author > .isso-text-wrapper {
background-color: var(--background-accent);
}
.isso-comment.isso-is-page-author > .isso-text-wrapper > .isso-comment-header > .isso-author {
color: var(--link-color);
}
.isso-postbox > .isso-form-wrapper .isso-preview {
color: var(--text-1);
background: var(--background-1);
}
.isso-comment > .isso-text-wrapper > .isso-comment-footer a,
.isso-comment > .isso-text-wrapper > .isso-comment-footer a:hover {
color: var(--link-color) !important;
}
.isso-comment > .isso-text-wrapper > .isso-comment-footer a:hover {
text-decoration: underline;
}
.isso-postbox > .isso-form-wrapper > .isso-auth-section .isso-input-wrapper input,
.isso-postbox > .isso-form-wrapper > .isso-auth-section .isso-post-action > input,
#isso-thread .isso-textarea,
.isso-postbox > .isso-form-wrapper .isso-preview {
color: var(--text-1);
background-color: var(--background-1);
border-color: var(--background-2) !important;
}
.isso-postbox > .isso-form-wrapper > .isso-auth-section .isso-post-action > input:hover {
background-color: var(--background-2);
}
.isso-postbox > .isso-form-wrapper > .isso-auth-section .isso-post-action > input:active {
background-color: var(--background-highlight);
}
#isso-thread .isso-textarea {
margin-bottom: 4px;
}
.isso-postbox > .isso-form-wrapper > .isso-auth-section .isso-input-wrapper {
display: inline-flex;
flex-direction: column;
margin-right: 4px;
}
.isso-postbox > .isso-form-wrapper > .isso-auth-section .isso-input-wrapper input {
order: 1;
}
.isso-postbox > .isso-form-wrapper > .isso-auth-section .isso-input-wrapper label {
order: 2;
font-size: small;
}
.isso-postbox > .isso-form-wrapper > .isso-auth-section .isso-post-action {
margin-left: 4px;
margin-top: 0;
}
@media screen and (max-width: 600px) {
.isso-postbox > .isso-form-wrapper > .isso-auth-section .isso-input-wrapper {
display: block;
margin-right: 0;
}
}
@media print {
.comments {
break-before: always;
}
.isso-comment > .isso-text-wrapper {
break-inside: avoid;
}
.isso-postbox,
.isso-feedlink {
display: none;
}
}
</style>
<h2 style="margin-bottom: 0;">Comments</h2>
<small>
<p style="margin: 0;">
If you provide an email address, you can enable notifications for
replies to your comment. It will not be shown publicly.
</p>
</small>
<noscript>
<i>Enable JavaScript to see the comment section.</i>
</noscript>
{{ $url := .Permalink }}
{{ if .IsTranslated }}
{{ with index .AllTranslations 0 }}
{{ $url = .Permalink }}
{{ end }}
{{ end }}
<script data-isso-id="{{ $url }}"
data-isso-default-lang="{{ .Language.Lang }}"
data-isso-css="true"
data-isso-max-comments-top="10"
data-isso-max-comments-nested="5"
data-isso-reveal-on-click="5"
{{/*
data-isso-avatar-bg="#111"
data-isso-avatar-fg="#9abf88 #5698c4 #e279a3 #9163b6 ..."
*/}}
data-isso-vote="true"
{{/*
data-isso-vote-levels=""
*/}}
data-isso-feed="true"
data-isso-require-email="false"
data-isso-reply-notifications="true"
data-isso-reply-notifications-default-enabled="true"
{{ with (.GetTerms "authors") }}
{{ $authorHashes := slice }}
{{ range . }}
{{ with .Params.issoUserID }}
{{ $authorHashes = $authorHashes | append . }}
{{ end }}
{{ $id := "" }}
{{ with .Params.discussionId }}
{{ $id = . }}
{{ else }}
{{ if .IsTranslated }}
{{ with index .AllTranslations 0 }}
{{ $id = .Permalink }}
{{ end }}
data-isso-page-author-hashes="{{ delimit $authorHashes "," }}"
{{ else }}
{{ $id = .Permalink }}
{{ end }}
{{ end }}
src="https://isso.bbaovanc.com/js/embed.min.js">
</script>
<section id="isso-thread"></section>
<script>talkyardServerUrl='{{ .Site.Params.talkyardServerUrl }}';</script>
<script async defer src="{{ .Site.Params.talkyardScriptUrl }}"></script>
<!-- You can specify a per page discussion id on the next line, if your URLs might change. -->
<div class="talkyard-comments" data-discussion-id="{{ $id }}" style="margin-top: 45px;">
</div>
<div class="comments-footer" style="text-align: right;">
<small>
<p style="margin: 0;">Comments powered by <a href="https://www.talkyard.io">Talkyard</a>.</p>
<p style="margin: 0;">Discussion ID: <code>{{ $id }}</code></p>
</small>
</div>
{{ end }}

View File

@ -1,5 +0,0 @@
ci:
collect:
startServerCommand: sudo caddy run
settings:
chromeFlags: "--ignore-certificate-errors --throttling.cpuSlowdownMultiplier=2.4"

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

BIN
static/favicon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB