diff --git a/knowledge base/cloud computing/dapr.md b/knowledge base/cloud computing/dapr.md
new file mode 100644
index 0000000..8f9fed4
--- /dev/null
+++ b/knowledge base/cloud computing/dapr.md
@@ -0,0 +1,68 @@
+# DAPR
+
+> TODO
+
+Portable, event-driven runtime for building distributed applications across cloud and edge.
+
+
+
+1. [TL;DR](#tldr)
+1. [Further readings](#further-readings)
+ 1. [Sources](#sources)
+
+## TL;DR
+
+
+
+
+
+
+
+## Further readings
+
+- [Website]
+- [Codebase]
+
+### Sources
+
+- [Documentation]
+
+
+
+
+
+
+
+[codebase]: https://github.com/dapr/dapr
+[documentation]: https://docs.dapr.io/
+[website]: https://dapr.io/
+
+
diff --git a/knowledge base/cloud computing/dapr.placeholder b/knowledge base/cloud computing/dapr.placeholder
deleted file mode 100644
index 2278993..0000000
--- a/knowledge base/cloud computing/dapr.placeholder
+++ /dev/null
@@ -1 +0,0 @@
-https://dapr.io/
diff --git a/knowledge base/cloud computing/radius.md b/knowledge base/cloud computing/radius.md
new file mode 100644
index 0000000..af3b0c2
--- /dev/null
+++ b/knowledge base/cloud computing/radius.md
@@ -0,0 +1,72 @@
+# Radius
+
+> TODO
+
+Intro
+
+
+
+1. [TL;DR](#tldr)
+1. [Further readings](#further-readings)
+ 1. [Sources](#sources)
+
+## TL;DR
+
+
+
+
+
+
+
+## Further readings
+
+- [Website]
+- [Codebase]
+
+### Sources
+
+- [Documentation]
+- [The Microsoft Azure Incubations Team launches Radius, a new open application platform for the cloud]
+- [Radius a new open-source application platform for the cloud | BRK402]
+
+
+
+
+
+
+
+[codebase]: https://github.com/radius-project/radius
+[documentation]: https://docs.radapp.io/
+[website]: https://radapp.io/
+
+
+[radius a new open-source application platform for the cloud | brk402]: https://www.youtube.com/watch?v=gaG77PiYv5w
+[the microsoft azure incubations team launches radius, a new open application platform for the cloud]: https://azure.microsoft.com/en-us/blog/the-microsoft-azure-incubations-team-launches-radius-a-new-open-application-platform-for-the-cloud/
diff --git a/knowledge base/cloud computing/radius.placeholder b/knowledge base/cloud computing/radius.placeholder
deleted file mode 100644
index a489c97..0000000
--- a/knowledge base/cloud computing/radius.placeholder
+++ /dev/null
@@ -1,3 +0,0 @@
-https://azure.microsoft.com/en-us/blog/the-microsoft-azure-incubations-team-launches-radius-a-new-open-application-platform-for-the-cloud/
-https://radapp.io/
-https://www.youtube.com/watch?v=gaG77PiYv5w
diff --git a/knowledge base/create png images from svg files.placeholder b/knowledge base/create png images from svg files.placeholder
deleted file mode 100644
index e0ce097..0000000
--- a/knowledge base/create png images from svg files.placeholder
+++ /dev/null
@@ -1,8 +0,0 @@
-```sh
-brew install 'librsvg'
-
-rsvg-convert -ah '96' 'icon.svg' > 'icon-96.png'
-rsvg-convert -ah '96' 'icon.svg' -o 'icon-96.png'
-```
-
-[convert an svg to png with right click on macos]: https://medium.com/@instanceofMA/convert-an-svg-to-png-with-right-click-on-macos-2353d151f4eb
diff --git a/knowledge base/dagger.md b/knowledge base/dagger.md
new file mode 100644
index 0000000..7f27128
--- /dev/null
+++ b/knowledge base/dagger.md
@@ -0,0 +1,68 @@
+# Dagger
+
+> TODO
+
+Programmable tool aiming to replace scripts with a modern API and cross-language scripting engine.
+
+
+
+1. [TL;DR](#tldr)
+1. [Further readings](#further-readings)
+ 1. [Sources](#sources)
+
+## TL;DR
+
+
+
+
+
+
+
+## Further readings
+
+- [Website]
+- [Codebase]
+
+### Sources
+
+- [Documentation]
+
+
+
+
+
+
+
+[codebase]: https://github.com/dagger/dagger
+[documentation]: https://docs.dagger.io/
+[website]: https://dagger.io/
+
+
diff --git a/knowledge base/dagger.placeholder b/knowledge base/dagger.placeholder
deleted file mode 100644
index a66e405..0000000
--- a/knowledge base/dagger.placeholder
+++ /dev/null
@@ -1 +0,0 @@
-https://github.com/dagger/dagger
diff --git a/knowledge base/devops.md b/knowledge base/devops.md
new file mode 100644
index 0000000..15a6874
--- /dev/null
+++ b/knowledge base/devops.md
@@ -0,0 +1,21 @@
+# The DevOps approach
+
+It is a _culture_, an _approach_, not a set of tools or a job title.
+
+## Further readings
+
+- [How Agile failed software developers and why SCRUM is a bad idea]
+- [Scripts don't scale; they give you scriptitis]
+- [Are you a DevOps engineer?]
+- [DevOps is Bullshit]
+
+
+
+
+[are you a devops engineer?]: https://artero.dev/posts/are-you-a-devops-engineer/
+[devops is bullshit]: https://blog.massdriver.cloud/posts/devops-is-bullshit/
+[how agile failed software developers and why scrum is a bad idea]: https://www.youtube.com/watch?v=KJ5u_Kui1sU
+[scripts don't scale; they give you scriptitis]: https://artero.dev/posts/scripts-do-not-scale/
diff --git a/knowledge base/devops.placeholder b/knowledge base/devops.placeholder
deleted file mode 100644
index cb18f0d..0000000
--- a/knowledge base/devops.placeholder
+++ /dev/null
@@ -1,8 +0,0 @@
-# The DevOps approach
-
-It is a _culture_, an _approach_, not a set of tools or a job title.
-
-https://www.youtube.com/watch?v=KJ5u_Kui1sU
-https://artero.dev/posts/scripts-do-not-scale/
-https://artero.dev/posts/are-you-a-devops-engineer/
-https://blog.massdriver.cloud/posts/devops-is-bullshit/
diff --git a/knowledge base/dive.md b/knowledge base/dive.md
new file mode 100644
index 0000000..c7b8e1f
--- /dev/null
+++ b/knowledge base/dive.md
@@ -0,0 +1,63 @@
+# Dive
+
+> TODO
+
+Tool for exploring each layer in a Docker image.
+
+
+
+1. [TL;DR](#tldr)
+1. [Further readings](#further-readings)
+ 1. [Sources](#sources)
+
+## TL;DR
+
+
+
+
+
+
+
+## Further readings
+
+- [Codebase]
+
+### Sources
+
+
+
+
+
+
+
+[codebase]: https://github.com/wagoodman/dive
+
+
diff --git a/knowledge base/dive.placeholder b/knowledge base/dive.placeholder
deleted file mode 100644
index 764fbdc..0000000
--- a/knowledge base/dive.placeholder
+++ /dev/null
@@ -1 +0,0 @@
-https://github.com/wagoodman/dive
diff --git a/knowledge base/dotfiles.md b/knowledge base/dotfiles.md
new file mode 100644
index 0000000..807a8bb
--- /dev/null
+++ b/knowledge base/dotfiles.md
@@ -0,0 +1,68 @@
+# Dotfiles
+
+> TODO
+
+Intro
+
+
+
+1. [TL;DR](#tldr)
+1. [Further readings](#further-readings)
+ 1. [Sources](#sources)
+
+## TL;DR
+
+
+
+
+
+
+
+## Further readings
+
+- [Website]
+- [Codebase]
+
+### Sources
+
+- [Documentation]
+
+
+
+
+
+
+
+[codebase]: https://github.com/project/
+[documentation]: https://website/docs/
+[website]: https://website/
+
+
diff --git a/knowledge base/dotfiles.placeholder b/knowledge base/dotfiles.placeholder
deleted file mode 100644
index 62ac67e..0000000
--- a/knowledge base/dotfiles.placeholder
+++ /dev/null
@@ -1 +0,0 @@
-# Dotfiles
diff --git a/knowledge base/etcd.md b/knowledge base/etcd.md
new file mode 100644
index 0000000..fbe63c9
--- /dev/null
+++ b/knowledge base/etcd.md
@@ -0,0 +1,71 @@
+# etcd
+
+> TODO
+
+Strongly consistent, distributed key-value store.
+
+Aims to provide a reliable way to store data that needs to be accessed by a distributed system or cluster of machines.
+Gracefully handles leader elections during network partitions and can tolerate machine failure, including the leader node.
+
+
+
+1. [TL;DR](#tldr)
+1. [Further readings](#further-readings)
+ 1. [Sources](#sources)
+
+## TL;DR
+
+
+
+
+
+
+
+## Further readings
+
+- [Website]
+- [Codebase]
+
+### Sources
+
+- [Documentation]
+
+
+
+
+
+
+
+[codebase]: https://github.com/etcd-io/etcd
+[documentation]: https://etcd.io/docs/
+[website]: https://etcd.io/
+
+
diff --git a/knowledge base/etcd.placeholder b/knowledge base/etcd.placeholder
deleted file mode 100644
index 0facedb..0000000
--- a/knowledge base/etcd.placeholder
+++ /dev/null
@@ -1,8 +0,0 @@
-# etcd
-
-Strongly consistent, distributed key-value store.
-
-Aims to provide a reliable way to store data that needs to be accessed by a distributed system or cluster of machines.
-Gracefully handles leader elections during network partitions and can tolerate machine failure, including the leader node.
-
-[website]: https://etcd.io/
diff --git a/knowledge base/expect.md b/knowledge base/expect.md
new file mode 100644
index 0000000..c01ca0b
--- /dev/null
+++ b/knowledge base/expect.md
@@ -0,0 +1,68 @@
+# Expect
+
+> TODO
+
+Intro
+
+
+
+1. [TL;DR](#tldr)
+1. [Further readings](#further-readings)
+ 1. [Sources](#sources)
+
+## TL;DR
+
+
+
+
+
+
+
+## Further readings
+
+- [Website]
+- [Codebase]
+
+### Sources
+
+- [Documentation]
+
+
+
+
+
+
+
+[codebase]: https://github.com/project/
+[documentation]: https://website/docs/
+[website]: https://website/
+
+
diff --git a/knowledge base/expect.placeholder b/knowledge base/expect.placeholder
deleted file mode 100644
index e69de29..0000000
diff --git a/knowledge base/fhs.placeholder b/knowledge base/fhs.placeholder
deleted file mode 100644
index 540f9cf..0000000
--- a/knowledge base/fhs.placeholder
+++ /dev/null
@@ -1,3 +0,0 @@
-# Filesystem hierarchy standard
-
-https://refspecs.linuxfoundation.org/fhs.shtml
diff --git a/knowledge base/filesystem hierarchy standard.md b/knowledge base/filesystem hierarchy standard.md
new file mode 100644
index 0000000..be0e135
--- /dev/null
+++ b/knowledge base/filesystem hierarchy standard.md
@@ -0,0 +1,63 @@
+# Filesystem hierarchy standard
+
+> TODO
+
+Intro
+
+
+
+1. [TL;DR](#tldr)
+1. [Further readings](#further-readings)
+ 1. [Sources](#sources)
+
+## TL;DR
+
+
+
+
+
+
+
+## Further readings
+
+- [Website]
+
+### Sources
+
+
+
+
+
+
+
+[website]: https://refspecs.linuxfoundation.org/fhs.shtml
+
+
diff --git a/knowledge base/gen3.md b/knowledge base/gen3.md
new file mode 100644
index 0000000..112cea1
--- /dev/null
+++ b/knowledge base/gen3.md
@@ -0,0 +1,63 @@
+# Gen3
+
+> TODO
+
+Data platform for building data commons and data meshes.
+
+
+
+1. [TL;DR](#tldr)
+1. [Further readings](#further-readings)
+ 1. [Sources](#sources)
+
+## TL;DR
+
+
+
+
+
+
+
+## Further readings
+
+- [Website]
+
+### Sources
+
+
+
+
+
+
+
+[website]: https://gen3.org/
+
+
diff --git a/knowledge base/gen3.placeholder b/knowledge base/gen3.placeholder
deleted file mode 100644
index d77c3ae..0000000
--- a/knowledge base/gen3.placeholder
+++ /dev/null
@@ -1,3 +0,0 @@
-# gen3
-
-https://gen3.org/
diff --git a/knowledge base/harvester hci.placeholder b/knowledge base/harvester hci.placeholder
deleted file mode 100644
index da0251e..0000000
--- a/knowledge base/harvester hci.placeholder
+++ /dev/null
@@ -1,10 +0,0 @@
-# Harverster
-
-Hyperconverged infrastructure (HCI) solution by SUSE built for bare metal servers leveraging [Kubernetes], [KubeVirt] and [Longhorn].
-
-[website]: https://harvesterhci.io/
-
-[kubernetes]: kubernetes/README.md
-[kubevirt]: kubernetes/kubevirt.placeholder
-[kvm]: kvm.md
-[longhorn]: kubernetes/longhorn.placeholder
diff --git a/knowledge base/harvester.md b/knowledge base/harvester.md
new file mode 100644
index 0000000..ea19c11
--- /dev/null
+++ b/knowledge base/harvester.md
@@ -0,0 +1,74 @@
+# Harvester
+
+> TODO
+
+Hyperconverged infrastructure solution by SUSE built for bare metal servers.
+Leverages [Kubernetes], [KubeVirt], [KVM] and [Longhorn].
+
+
+
+1. [TL;DR](#tldr)
+1. [Further readings](#further-readings)
+ 1. [Sources](#sources)
+
+## TL;DR
+
+
+
+
+
+
+
+## Further readings
+
+- [Website]
+- [Codebase]
+
+### Sources
+
+- [Documentation]
+
+
+
+
+
+[kubernetes]: kubernetes/README.md
+[kubevirt]: kubernetes/kubevirt.placeholder
+[kvm]: kvm.md
+[longhorn]: kubernetes/longhorn.placeholder
+
+
+
+[codebase]: https://github.com/harvester/harvester
+[documentation]: https://docs.harvesterhci.io/
+[website]: https://harvesterhci.io/
+
+
diff --git a/knowledge base/html.md b/knowledge base/html.md
new file mode 100644
index 0000000..1865790
--- /dev/null
+++ b/knowledge base/html.md
@@ -0,0 +1,62 @@
+# HTML
+
+TODO
+
+Intro
+
+
+
+1. [TL;DR](#tldr)
+1. [Further readings](#further-readings)
+ 1. [Sources](#sources)
+
+## TL;DR
+
+
+
+
+
+
+
+## Further readings
+
+- [Color names chart]
+
+### Sources
+
+
+
+
+
+
+
+
+[color names chart]: https://htmlcolorcodes.com/color-names/
diff --git a/knowledge base/html.placeholder b/knowledge base/html.placeholder
deleted file mode 100644
index 1c0a827..0000000
--- a/knowledge base/html.placeholder
+++ /dev/null
@@ -1 +0,0 @@
-[color names chart]: https://htmlcolorcodes.com/color-names/
diff --git a/knowledge base/javascript.md b/knowledge base/javascript.md
new file mode 100644
index 0000000..4b7fc5f
--- /dev/null
+++ b/knowledge base/javascript.md
@@ -0,0 +1,76 @@
+# JavaScript
+
+> TODO
+
+Intro
+
+
+
+1. [TL;DR](#tldr)
+1. [Further readings](#further-readings)
+ 1. [Sources](#sources)
+
+## TL;DR
+
+
+
+
+
+
+
+```js
+let now = new Date()
+
+let oneYearFromNow = new Date()
+oneYearFromNow.setDate(oneYearFromNow.getDate() + 365)
+
+console.log(now.toISOString())
+console.log(oneYearFromNow.toISOString())
+```
+
+## Further readings
+
+- [Playcode]
+
+### Sources
+
+- [Documentation]
+
+
+
+
+
+
+
+[documentation]: https://developer.mozilla.org/en-US/docs/Web/JavaScript
+
+
+[playcode]: https://playcode.io/empty_javascript
diff --git a/knowledge base/javascript.placeholder b/knowledge base/javascript.placeholder
deleted file mode 100644
index f91e4a4..0000000
--- a/knowledge base/javascript.placeholder
+++ /dev/null
@@ -1,11 +0,0 @@
-```js
-let now = new Date()
-
-let oneYearFromNow = new Date()
-oneYearFromNow.setDate(oneYearFromNow.getDate() + 365)
-
-console.log(now.toISOString())
-console.log(oneYearFromNow.toISOString())
-```
-
-https://playcode.io/empty_javascript
diff --git a/knowledge base/kubernetes/spegel.md b/knowledge base/kubernetes/spegel.md
new file mode 100644
index 0000000..3b2553f
--- /dev/null
+++ b/knowledge base/kubernetes/spegel.md
@@ -0,0 +1,68 @@
+# Spegel
+
+> TODO
+
+Stateless, peer-to-peer OCI registry mirror for efficient image distribution inside a cluster.
+
+
+
+1. [TL;DR](#tldr)
+1. [Further readings](#further-readings)
+ 1. [Sources](#sources)
+
+## TL;DR
+
+
+
+
+
+
+
+## Further readings
+
+- [Website]
+- [Codebase]
+
+### Sources
+
+- [Documentation]
+
+
+
+
+
+
+
+[codebase]: https://github.com/XenitAB/spegel
+[documentation]: https://spegel.dev/docs/
+[website]: https://spegel.dev/
+
+
diff --git a/knowledge base/kubernetes/spegel.placeholder b/knowledge base/kubernetes/spegel.placeholder
deleted file mode 100644
index 2d53e6f..0000000
--- a/knowledge base/kubernetes/spegel.placeholder
+++ /dev/null
@@ -1 +0,0 @@
-https://github.com/XenitAB/spegel
diff --git a/knowledge base/notary.md b/knowledge base/notary.md
new file mode 100644
index 0000000..c5f0810
--- /dev/null
+++ b/knowledge base/notary.md
@@ -0,0 +1,66 @@
+# Notary
+
+Project allowing anyone to have trust over arbitrary collections of data.
+
+
+
+1. [TL;DR](#tldr)
+1. [Further readings](#further-readings)
+ 1. [Sources](#sources)
+
+## TL;DR
+
+
+
+
+
+
+
+## Further readings
+
+- [Website]
+- [Codebase]
+
+### Sources
+
+- [Ensure content trust on Kubernetes using Notary and Open Policy Agent]
+
+
+
+
+
+
+
+[codebase]: https://github.com/notaryproject/notary
+[website]: https://website/
+
+
+[ensure content trust on kubernetes using notary and open policy agent]: https://siegert-maximilian.medium.com/ensure-content-trust-on-kubernetes-using-notary-and-open-policy-agent-485ab3a9423c
diff --git a/knowledge base/notary.placeholder b/knowledge base/notary.placeholder
deleted file mode 100644
index 720fc1e..0000000
--- a/knowledge base/notary.placeholder
+++ /dev/null
@@ -1,2 +0,0 @@
-https://github.com/notaryproject/notary
-https://siegert-maximilian.medium.com/ensure-content-trust-on-kubernetes-using-notary-and-open-policy-agent-485ab3a9423c
diff --git a/knowledge base/reviewdog.md b/knowledge base/reviewdog.md
new file mode 100644
index 0000000..4624bc4
--- /dev/null
+++ b/knowledge base/reviewdog.md
@@ -0,0 +1,63 @@
+# ReviewDog
+
+> TODO
+
+Automated code review tool working with any lint tools and supporting local runs.
+
+
+
+1. [TL;DR](#tldr)
+1. [Further readings](#further-readings)
+ 1. [Sources](#sources)
+
+## TL;DR
+
+
+
+
+
+
+
+## Further readings
+
+- [Codebase]
+
+### Sources
+
+
+
+
+
+
+
+[codebase]: https://github.com/reviewdog/reviewdog
+
+
diff --git a/knowledge base/reviewdog.placeholder b/knowledge base/reviewdog.placeholder
deleted file mode 100644
index f7bfaf1..0000000
--- a/knowledge base/reviewdog.placeholder
+++ /dev/null
@@ -1 +0,0 @@
-https://github.com/reviewdog/reviewdog
diff --git a/knowledge base/ruby.md b/knowledge base/ruby.md
new file mode 100644
index 0000000..6d6f8b7
--- /dev/null
+++ b/knowledge base/ruby.md
@@ -0,0 +1,67 @@
+# Ruby
+
+> TODO
+
+Intro
+
+
+
+1. [TL;DR](#tldr)
+1. [Further readings](#further-readings)
+ 1. [Sources](#sources)
+
+## TL;DR
+
+
+ Setup
+
+```sh
+brew install 'ruby'
+
+SSL_CERT_FILE='path/to/ssl.cert'
+```
+
+
+
+
+
+
+
+## Further readings
+
+- [Website]
+
+### Sources
+
+- [Documentation]
+
+
+
+
+
+
+
+[documentation]: https://docs.ruby-lang.org/en/master/
+[website]: https://www.ruby-lang.org/en/
+
+
diff --git a/knowledge base/ruby.placeholder b/knowledge base/ruby.placeholder
deleted file mode 100644
index f5c65b1..0000000
--- a/knowledge base/ruby.placeholder
+++ /dev/null
@@ -1,7 +0,0 @@
-# Ruby
-
-```sh
-brew install 'ruby'
-
-SSL_CERT_FILE='path/to/ssl.cert'
-```
diff --git a/knowledge base/safe.md b/knowledge base/safe.md
new file mode 100644
index 0000000..affa7c7
--- /dev/null
+++ b/knowledge base/safe.md
@@ -0,0 +1,64 @@
+# Scaled Agile FramEwork
+
+> TODO
+
+Intro
+
+
+
+1. [TL;DR](#tldr)
+1. [Further readings](#further-readings)
+ 1. [Sources](#sources)
+
+## TL;DR
+
+
+
+
+
+
+
+## Further readings
+
+### Sources
+
+- [The SAFe Delusion]
+- [The Illusion of SAFe: Unmasking the Flaws of Scaled Agile]
+
+
+
+
+
+
+
+
+[The Illusion of SAFe: Unmasking the Flaws of Scaled Agile]: https://medium.com/agileinsider/the-illusion-of-safe-unmasking-the-flaws-of-scaled-agile-5b0df6ef77e3
+[The SAFe Delusion]: https://safedelusion.com/
diff --git a/knowledge base/safe.placeholder b/knowledge base/safe.placeholder
deleted file mode 100644
index 2a09487..0000000
--- a/knowledge base/safe.placeholder
+++ /dev/null
@@ -1,5 +0,0 @@
-# Scaled Agile FramEwork
-
-https://freedium.cfd/
-https://medium.com/agileinsider/the-illusion-of-safe-unmasking-the-flaws-of-scaled-agile-5b0df6ef77e3
-https://safedelusion.com/
diff --git a/knowledge base/template.md b/knowledge base/template.md
index 7e7d652..155b459 100644
--- a/knowledge base/template.md
+++ b/knowledge base/template.md
@@ -1,6 +1,6 @@
# Title
-TODO
+> TODO
Intro
@@ -50,6 +50,8 @@ Intro
### Sources
+- [Documentation]
+
[codebase]: https://github.com/project/
+[documentation]: https://website/docs/
[website]: https://website/
diff --git a/knowledge base/the update framework.md b/knowledge base/the update framework.md
new file mode 100644
index 0000000..57212bb
--- /dev/null
+++ b/knowledge base/the update framework.md
@@ -0,0 +1,61 @@
+# The Update Framework
+
+Framework for securing software update systems.
+
+
+
+1. [TL;DR](#tldr)
+1. [Further readings](#further-readings)
+ 1. [Sources](#sources)
+
+## TL;DR
+
+
+
+
+
+
+
+## Further readings
+
+- [Website]
+
+### Sources
+
+
+
+
+
+
+
+[website]: https://theupdateframework.io/
+
+
diff --git a/knowledge base/xdotool.md b/knowledge base/xdotool.md
new file mode 100644
index 0000000..7ce4df3
--- /dev/null
+++ b/knowledge base/xdotool.md
@@ -0,0 +1,66 @@
+# XDoTool
+
+TODO
+
+Intro
+
+
+
+1. [TL;DR](#tldr)
+1. [Further readings](#further-readings)
+ 1. [Sources](#sources)
+
+## TL;DR
+
+
+
+
+
+
+
+## Further readings
+
+- [Codebase]
+
+### Sources
+
+- [Automating X11 with `xdotool` (with examples)][automating X11 with xdotool (with examples)]
+
+
+
+
+
+
+
+[codebase]: https://github.com/jordansissel/xdotool
+
+
+[automating X11 with xdotool (with examples)]: https://commandmasters.com/commands/xdotool-linux/
diff --git a/knowledge base/xdotool.placeholder b/knowledge base/xdotool.placeholder
deleted file mode 100644
index e69de29..0000000
diff --git a/knowledge base/xml.md b/knowledge base/xml.md
new file mode 100644
index 0000000..a44ee1e
--- /dev/null
+++ b/knowledge base/xml.md
@@ -0,0 +1,69 @@
+# XML
+
+TODO
+
+Intro
+
+
+
+1. [TL;DR](#tldr)
+1. [Further readings](#further-readings)
+ 1. [Sources](#sources)
+
+## TL;DR
+
+
+
+
+ Usage
+
+```sh
+xml sel -t -v 'configuration/gui/password' 'Library/Application Support/Syncthing/config.xml'
+xml ed -L -d 'configuration/gui/password' 'Library/Application Support/Syncthing/config.xml'
+```
+
+
+
+
+
+## Further readings
+
+- [Website]
+- [Codebase]
+
+### Sources
+
+- [5 simple ways to parse an XML file on Linux]
+- [`xmllint` cheatsheet][xmllint command cheatsheet]
+- [`xml` cheatsheet][xml command cheatsheet]
+
+
+
+
+
+
+
+
+[5 simple ways to parse an xml file on linux]: https://www.fosslinux.com/114195/ways-to-parse-an-xml-file-on-linux.htm
+[xmllint command cheatsheet]: https://cheat.sh/xmllint
+[xml command cheatsheet]: https://cheat.sh/xml
diff --git a/knowledge base/xml.placeholder b/knowledge base/xml.placeholder
deleted file mode 100644
index 4c536d0..0000000
--- a/knowledge base/xml.placeholder
+++ /dev/null
@@ -1,6 +0,0 @@
-https://www.fosslinux.com/114195/ways-to-parse-an-xml-file-on-linux.htm
-https://cheat.sh/xmllint
-https://cheat.sh/xml
-
-xml sel -t -v configuration/gui/password 'Library/Application Support/Syncthing/config.xml'
-xml ed -L -d 'configuration/gui/password' 'Library/Application Support/Syncthing/config.xml'
diff --git a/knowledge base/zed.md b/knowledge base/zed.md
new file mode 100644
index 0000000..0e4d2b1
--- /dev/null
+++ b/knowledge base/zed.md
@@ -0,0 +1,78 @@
+# ZED
+
+Next-generation code editor.
+
+
+
+1. [TL;DR](#tldr)
+1. [Further readings](#further-readings)
+ 1. [Sources](#sources)
+
+## TL;DR
+
+
+ Setup
+
+```sh
+brew install --cask 'zed'
+sudo zypper ar 'https://download.opensuse.org/repositories/editors/openSUSE_Tumbleweed/editors.repo' && sudo zypper in 'zed'
+```
+
+Global settings at `~/.config/zed/settings.json`.
+Folder-specific settings at `.zed/settings.json`.
+
+Disable telemetry:
+
+```json
+"telemetry": {
+ "diagnostics": false,
+ "metrics": false
+}
+```
+
+
+
+
+
+
+
+## Further readings
+
+- [Website]
+- [Codebase]
+
+### Sources
+
+- [Documentation]
+
+
+
+
+
+
+
+[codebase]: https://github.com/zed-industries/zed
+[documentation]: https://zed.dev/docs/
+[website]: https://zed.dev/
+
+
diff --git a/knowledge base/zed.placeholder b/knowledge base/zed.placeholder
deleted file mode 100644
index 42cbee2..0000000
--- a/knowledge base/zed.placeholder
+++ /dev/null
@@ -1,25 +0,0 @@
-// For a full list of overridable settings, and general information on folder-specific settings,
-// see the documentation: https://docs.zed.dev/configuration/configuring-zed#folder-specific-settings
-https://zed.dev/
-https://github.com/zed-industries/zed
-
-https://zed.dev/docs/
-
-```sh
-brew install --cask 'zed'
-sudo zypper ar 'https://download.opensuse.org/repositories/editors/openSUSE_Tumbleweed/editors.repo' && sudo zypper in 'zed'
-```
-
-https://zed.dev/docs/configuring-zed
-
-global settings at `~/.config/zed/settings.json`
-folder-specific settings at `.zed/settings.json`
-
-Disable telemetry:
-
-```json
-"telemetry": {
- "diagnostics": false,
- "metrics": false
-},
-```
diff --git a/snippets/convert between formats.sh b/snippets/convert between formats.sh
index f07fd7a..76d5e41 100644
--- a/snippets/convert between formats.sh
+++ b/snippets/convert between formats.sh
@@ -1,6 +1,9 @@
#!/usr/bin/env sh
# svg to png
+# https://medium.com/@instanceofMA/convert-an-svg-to-png-with-right-click-on-macos-2353d151f4eb
+brew install 'librsvg'
+rsvg-convert -ah '96' 'icon.svg' > 'icon-96.png'
rsvg-convert -ah '96' 'icon.svg' -o 'icon-96.png'
# webm to gif