diff --git a/knowledge base/docker.md b/knowledge base/docker.md
index e8ec798..8d6e311 100644
--- a/knowledge base/docker.md
+++ b/knowledge base/docker.md
@@ -399,7 +399,7 @@ docker load …
[containerd]: containerd.md
[dive]: dive.placeholder
[podman]: podman.md
-[testcontainers]: testcontainers.placeholder
+[testcontainers]: testcontainers.md
[building multi-arch images for arm and x86 with docker desktop]: https://www.docker.com/blog/multi-arch-images/
diff --git a/knowledge base/homebrew.md b/knowledge base/homebrew.md
index ae3c8a5..bc81049 100644
--- a/knowledge base/homebrew.md
+++ b/knowledge base/homebrew.md
@@ -187,6 +187,8 @@ See also [How to manually download brew package for installation?].
- [manpage]
- Homebrew [bundle]
+- [Mas]
+- [Whalebrew]
## Sources
@@ -195,9 +197,16 @@ See also [How to manually download brew package for installation?].
- [How to manually download brew package for installation?]
+
+
+[mas]: mas.md
+[whalebrew]: whalebrew.md
+
+
[bundle]: https://github.com/Homebrew/homebrew-bundle
[manpage]: https://docs.brew.sh/Manpage
diff --git a/knowledge base/mas.md b/knowledge base/mas.md
new file mode 100644
index 0000000..da00102
--- /dev/null
+++ b/knowledge base/mas.md
@@ -0,0 +1,50 @@
+# Mas
+
+TODO
+
+1. [TL;DR](#tldr)
+1. [Further readings](#further-readings)
+
+## TL;DR
+
+
+ Installation and configuration
+
+```sh
+brew install 'mas'
+sudo port install 'mas'
+```
+
+
+
+
+
+
+
+## Further readings
+
+- [Github]
+- [Homebrew]
+
+
+
+
+
+[homebrew]: homebrew.md
+
+
+
+[github]: https://github.com/mas-cli/mas
+
+
diff --git a/knowledge base/renovate.md b/knowledge base/renovate.md
new file mode 100644
index 0000000..4d71157
--- /dev/null
+++ b/knowledge base/renovate.md
@@ -0,0 +1,45 @@
+# Renovate
+
+TODO
+
+Automated dependency updater.
+
+1. [TL;DR](#tldr)
+1. [Further readings](#further-readings)
+
+## TL;DR
+
+
+
+
+
+
+
+## Further readings
+
+- [Github]
+
+
+
+
+
+
+
+[github]: https://github.com/renovatebot/renovate
+
+
diff --git a/knowledge base/renovatebot.placeholder b/knowledge base/renovatebot.placeholder
deleted file mode 100644
index 8da6e9c..0000000
--- a/knowledge base/renovatebot.placeholder
+++ /dev/null
@@ -1 +0,0 @@
-https://github.com/renovatebot/renovate
diff --git a/knowledge base/shasum.md b/knowledge base/shasum.md
new file mode 100644
index 0000000..3fe7cf6
--- /dev/null
+++ b/knowledge base/shasum.md
@@ -0,0 +1,46 @@
+# Shasum
+
+1. [TL;DR](#tldr)
+
+## TL;DR
+
+
+ Installation and configuration
+
+```sh
+brew install 'coreutils'
+```
+
+
+
+
+ Usage
+
+```sh
+# Print the checksum of given files.
+sha512sum 'path/to/file'
+sha1sum 'path/to/file.1' 'path/to/file.N'
+
+# Check files given their checksum and name in one or more files.
+sha256sum -c 'expected.sha256'
+sha512sum -cw 'expected.1.sha512' 'expected.N.sha512'
+```
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/knowledge base/shasum.placeholder b/knowledge base/shasum.placeholder
deleted file mode 100644
index 4b5428c..0000000
--- a/knowledge base/shasum.placeholder
+++ /dev/null
@@ -1,18 +0,0 @@
-# Shasum
-
-1. [TL;DR](#tldr)
-
-## TL;DR
-
-```sh
-# Install the tools.
-brew install 'coreutils'
-
-# Print the checksum of given files.
-sha512sum 'path/to/file'
-sha1sum 'path/to/file.1' 'path/to/file.N'
-
-# Check files given their checksum and name in one or more files.
-sha256sum -c 'expected.sha256'
-sha512sum -cw 'expected.1.sha512' 'expected.N.sha512'
-```
diff --git a/knowledge base/sops.md b/knowledge base/sops.md
new file mode 100644
index 0000000..ae62163
--- /dev/null
+++ b/knowledge base/sops.md
@@ -0,0 +1,47 @@
+# sops
+
+TODO
+
+1. [TL;DR](#tldr)
+1. [Further readings](#further-readings)
+
+## TL;DR
+
+
+
+
+
+
+
+## Further readings
+
+- [Github]
+- [Goodbye Sealed Secrets, hello SOPS]
+- [Manage Kubernetes secrets with SOPS]
+
+
+
+
+
+
+
+[github]: https://github.com/getsops/sops
+
+
+[goodbye sealed secrets, hello sops]: https://itnext.io/goodbye-sealed-secrets-hello-sops-3ee6a92662bb
+[manage kubernetes secrets with sops]: https://fluxcd.io/flux/guides/mozilla-sops/
diff --git a/knowledge base/sops.placeholder b/knowledge base/sops.placeholder
deleted file mode 100644
index 0507130..0000000
--- a/knowledge base/sops.placeholder
+++ /dev/null
@@ -1,3 +0,0 @@
-https://github.com/getsops/sops
-https://fluxcd.io/flux/guides/mozilla-sops/
-https://itnext.io/goodbye-sealed-secrets-hello-sops-3ee6a92662bb
diff --git a/knowledge base/spiffe.md b/knowledge base/spiffe.md
new file mode 100644
index 0000000..f061966
--- /dev/null
+++ b/knowledge base/spiffe.md
@@ -0,0 +1,45 @@
+# SPIFFE
+
+TODO
+
+Universal identity control plane for distributed systems.
+
+1. [TL;DR](#tldr)
+1. [Further readings](#further-readings)
+
+## TL;DR
+
+
+
+
+
+
+
+## Further readings
+
+- [Website]
+
+
+
+
+
+
+
+[website]: https://spiffe.io/
+
+
diff --git a/knowledge base/spiffe.placeholder b/knowledge base/spiffe.placeholder
deleted file mode 100644
index 46c5d96..0000000
--- a/knowledge base/spiffe.placeholder
+++ /dev/null
@@ -1,3 +0,0 @@
-# SPIFFE
-
-https://spiffe.io/
diff --git a/knowledge base/teller.md b/knowledge base/teller.md
new file mode 100644
index 0000000..59f0640
--- /dev/null
+++ b/knowledge base/teller.md
@@ -0,0 +1,43 @@
+# Teller
+
+TODO
+
+1. [TL;DR](#tldr)
+1. [Further readings](#further-readings)
+
+## TL;DR
+
+
+
+
+
+
+
+## Further readings
+
+- [Website]
+
+
+
+
+
+
+
+[website]: https://tlr.dev/
+
+
diff --git a/knowledge base/teller.placeholder b/knowledge base/teller.placeholder
deleted file mode 100644
index 3c096e8..0000000
--- a/knowledge base/teller.placeholder
+++ /dev/null
@@ -1 +0,0 @@
-https://tlr.dev/
diff --git a/knowledge base/template.md b/knowledge base/template.md
index cd29032..fe794d0 100644
--- a/knowledge base/template.md
+++ b/knowledge base/template.md
@@ -1,5 +1,7 @@
# Title
+TODO
+
Intro
## Further readings
+- [Website]
+- [Github]
+
### Sources
+[github]: https://github.com/project/
+[website]: https://website/
+
diff --git a/knowledge base/testcontainers.md b/knowledge base/testcontainers.md
new file mode 100644
index 0000000..a8097f4
--- /dev/null
+++ b/knowledge base/testcontainers.md
@@ -0,0 +1,43 @@
+# Testcontainers
+
+TODO
+
+1. [TL;DR](#tldr)
+1. [Further readings](#further-readings)
+
+## TL;DR
+
+
+
+
+
+
+
+## Further readings
+
+- [Website]
+
+
+
+
+
+
+
+[website]: https://testcontainers.com/
+
+
diff --git a/knowledge base/testcontainers.placeholder b/knowledge base/testcontainers.placeholder
deleted file mode 100644
index 1576436..0000000
--- a/knowledge base/testcontainers.placeholder
+++ /dev/null
@@ -1 +0,0 @@
-https://testcontainers.com/
diff --git a/knowledge base/todomd.md b/knowledge base/todomd.md
new file mode 100644
index 0000000..a7ccb52
--- /dev/null
+++ b/knowledge base/todomd.md
@@ -0,0 +1,41 @@
+# todomd
+
+1. [TL;DR](#tldr)
+1. [Further readings](#further-readings)
+
+## TL;DR
+
+
+
+
+
+
+
+## Further readings
+
+- [Github]
+
+
+
+
+
+
+
+[github]: https://github.com/todomd/todo.md
+
+
diff --git a/knowledge base/todomd.placeholder b/knowledge base/todomd.placeholder
deleted file mode 100644
index bee79ca..0000000
--- a/knowledge base/todomd.placeholder
+++ /dev/null
@@ -1,3 +0,0 @@
-# todomd
-
-[website]: https://github.com/todomd/todo.md
diff --git a/knowledge base/whalebrew.md b/knowledge base/whalebrew.md
new file mode 100644
index 0000000..052b200
--- /dev/null
+++ b/knowledge base/whalebrew.md
@@ -0,0 +1,44 @@
+# Whalebrew
+
+1. [TL;DR](#tldr)
+1. [Further readings](#further-readings)
+
+## TL;DR
+
+
+
+
+
+
+
+## Further readings
+
+- [Github]
+- [Homebrew]
+
+
+
+
+
+[homebrew]: homebrew.md
+
+
+
+[github]: https://github.com/whalebrew/whalebrew
+
+
diff --git a/knowledge base/whalebrew.placeholder b/knowledge base/whalebrew.placeholder
deleted file mode 100644
index e96ed14..0000000
--- a/knowledge base/whalebrew.placeholder
+++ /dev/null
@@ -1 +0,0 @@
-https://github.com/whalebrew/whalebrew