summaryrefslogtreecommitdiff
path: root/3 resources
diff options
context:
space:
mode:
Diffstat (limited to '3 resources')
-rw-r--r--3 resources/Helix/Inline diagnostics.md13
-rw-r--r--3 resources/MermaidJS.md (renamed from 3 resources/mermaidjs/mermaidjs.md)3
-rw-r--r--3 resources/Obsidian.md6
-rw-r--r--3 resources/Puppet/Documentation.md1
-rw-r--r--3 resources/Puppet/Replace a line in a file.md (renamed from 3 resources/puppet/replace-line-file.md)3
-rw-r--r--3 resources/Puppet/User management.md10
-rw-r--r--3 resources/Statistics/Moving average.md (renamed from 3 resources/statistics/moving-average.md)3
-rw-r--r--3 resources/Technical definitions.md (renamed from 3 resources/slug.md)4
-rw-r--r--3 resources/ansible/nested-loops.md2
-rw-r--r--3 resources/astal-ags/building-with-nix.md1
-rw-r--r--3 resources/css/Display.md (renamed from 3 resources/css/display.md)3
-rw-r--r--3 resources/css/Flexbox.md (renamed from 3 resources/css/flexbox.md)8
-rw-r--r--3 resources/css/Grid.md (renamed from 3 resources/css/grids.md)0
-rw-r--r--3 resources/elixir/elixir.md228
-rw-r--r--3 resources/libvirt/Mediated devices.md (renamed from 3 resources/libvirt/mediated-devices.md)5
-rw-r--r--3 resources/libvirt/SR-IOV.md (renamed from 3 resources/libvirt/sr-iov.md)3
-rw-r--r--3 resources/linux/APT.md5
-rw-r--r--3 resources/linux/Definitions.md6
-rw-r--r--3 resources/linux/Device drivers.md (renamed from 3 resources/linux/device-drivers.md)3
-rw-r--r--3 resources/linux/Device mapper.md (renamed from 3 resources/linux/device-mapper.md)5
-rw-r--r--3 resources/linux/LSOF.md (renamed from 3 resources/linux/lsof.md)4
-rw-r--r--3 resources/linux/Users.md22
-rw-r--r--3 resources/linux/Watch.md5
-rw-r--r--3 resources/linux/apt.md2
-rw-r--r--3 resources/linux/bootloader.md1
-rw-r--r--3 resources/linux/filesystems/Tmpfs.md (renamed from 3 resources/linux/filesystems/tmpfs.md)3
-rw-r--r--3 resources/linux/filesystems/virtual filesystem.md0
-rw-r--r--3 resources/linux/glibc.md1
-rw-r--r--3 resources/linux/man pages.md2
-rw-r--r--3 resources/linux/networking/DHCP.md5
-rw-r--r--3 resources/linux/networking/IP masquerade.md (renamed from 3 resources/linux/networking/ip-masquerade-nat.md)3
-rw-r--r--3 resources/linux/networking/PXE.md (renamed from 3 resources/linux/networking/pxe-boot.md)5
-rw-r--r--3 resources/linux/networking/dhcp.md4
-rw-r--r--3 resources/linux/networking/nbp.md3
-rw-r--r--3 resources/linux/networking/udp.md0
-rw-r--r--3 resources/linux/nic.md1
-rw-r--r--3 resources/linux/shared anonymous memory mappings.md2
-rw-r--r--3 resources/linux/system v shared memory.md2
-rw-r--r--3 resources/linux/tftp.md2
-rw-r--r--3 resources/math/Cartesian product.md (renamed from 3 resources/math/cartesian-product.md)3
-rw-r--r--3 resources/mathematics/convolution.md0
-rw-r--r--3 resources/nix/Flake.md (renamed from 3 resources/nix/flakes.md)3
-rw-r--r--3 resources/nix/Overlays.md (renamed from 3 resources/nix/overlays.md)5
-rw-r--r--3 resources/nix/Package.md6
-rw-r--r--3 resources/nix/REPL.md (renamed from 3 resources/nix/repl.md)3
-rw-r--r--3 resources/nix/Shell.nix.md (renamed from 3 resources/nix/shell.nix.md)5
-rw-r--r--3 resources/nix/language.md5
-rw-r--r--3 resources/nix/language/Import.md (renamed from 3 resources/nix/language/keyword-import.md)3
-rw-r--r--3 resources/nix/language/Let.md (renamed from 3 resources/nix/language/keyword-let.md)3
-rw-r--r--3 resources/nix/language/Rec.md (renamed from 3 resources/nix/language/keyword-rec.md)3
-rw-r--r--3 resources/nix/language/With.md (renamed from 3 resources/nix/language/keyword-with.md)3
-rw-r--r--3 resources/nix/package.md3
-rw-r--r--3 resources/nix/packages/Apply custom patches.md (renamed from 3 resources/nix/packages/apply-patches.md)5
-rw-r--r--3 resources/openstack/Creating ports.md (renamed from 3 resources/openstack/create-port-fixed-ip.md)3
-rw-r--r--3 resources/openstack/Libvirt pmsuspended.md (renamed from 3 resources/openstack/guest-pmsuspended.md)3
-rw-r--r--3 resources/openstack/Nova live migration volume.md (renamed from 3 resources/openstack/nova-live-migration-volume.md)4
56 files changed, 171 insertions, 268 deletions
diff --git a/3 resources/Helix/Inline diagnostics.md b/3 resources/Helix/Inline diagnostics.md
new file mode 100644
index 0000000..2a84825
--- /dev/null
+++ b/3 resources/Helix/Inline diagnostics.md
@@ -0,0 +1,13 @@
+#helix #editor
+
+
+completion supports paths (filepaths etc).
+snippet completion from LSP supported
+inline diagnostics can be enabled with:
+```
+[editor]
+end-of-line-diagnostics = "hint";
+
+[editor.inline-diagnostics]
+cursor-line = "error";
+``` \ No newline at end of file
diff --git a/3 resources/mermaidjs/mermaidjs.md b/3 resources/MermaidJS.md
index e468459..2e4b71e 100644
--- a/3 resources/mermaidjs/mermaidjs.md
+++ b/3 resources/MermaidJS.md
@@ -1,3 +1,6 @@
+#resource
+
+---
**ZenUML**
Optional **Title**
**Participants** can be declared when used or at the start.
diff --git a/3 resources/Obsidian.md b/3 resources/Obsidian.md
new file mode 100644
index 0000000..2c256d2
--- /dev/null
+++ b/3 resources/Obsidian.md
@@ -0,0 +1,6 @@
+#resource #obsidian
+
+Command-palette: CTRL+P
+# Templates
+Templates can be configured in Settings > Core Plugins > Templates. It requires to have a directory dedicated to templates. We can then insert templates into notes using the command: Insert highlight.
+We can also configure a templare for our daily notes, via Settings > Core Plugins > Daily note. \ No newline at end of file
diff --git a/3 resources/Puppet/Documentation.md b/3 resources/Puppet/Documentation.md
new file mode 100644
index 0000000..7afdf72
--- /dev/null
+++ b/3 resources/Puppet/Documentation.md
@@ -0,0 +1 @@
+The documentation for the Puppet that we use is found at https://www.puppet.com/docs/puppet/8/puppet_index.html. \ No newline at end of file
diff --git a/3 resources/puppet/replace-line-file.md b/3 resources/Puppet/Replace a line in a file.md
index 985ce91..2369e84 100644
--- a/3 resources/puppet/replace-line-file.md
+++ b/3 resources/Puppet/Replace a line in a file.md
@@ -1,3 +1,6 @@
+#puppet
+
+
```
file_line {
'/etc/sysconfig/libvirt-guests onboot':
diff --git a/3 resources/Puppet/User management.md b/3 resources/Puppet/User management.md
new file mode 100644
index 0000000..a452089
--- /dev/null
+++ b/3 resources/Puppet/User management.md
@@ -0,0 +1,10 @@
+#puppet
+
+Users can be managed with the [user resource](https://www.puppet.com/docs/puppet/7/types/user.html)
+
+[System users](https://www.puppet.com/docs/puppet/7/types/user.html#user-attribute-system) can be defined as follows;
+```
+user {
+ system => true|false
+}
+```
diff --git a/3 resources/statistics/moving-average.md b/3 resources/Statistics/Moving average.md
index 5622d3f..c87f0e4 100644
--- a/3 resources/statistics/moving-average.md
+++ b/3 resources/Statistics/Moving average.md
@@ -1,3 +1,6 @@
+#statistics
+
+---
Also known as; rolling-average, running-average, moving-mean, running-mean, rolling-mean.
Has three variations: simple, weighted, cumulative.
diff --git a/3 resources/slug.md b/3 resources/Technical definitions.md
index 08904e6..6093a57 100644
--- a/3 resources/slug.md
+++ b/3 resources/Technical definitions.md
@@ -1,3 +1,7 @@
+#definitions
+
+---
+# Slug
A user-friendly representation of the name of a page used in the path of an URL.
For example a page titled: My Friends And I, would be referenced via its slug: my-friends-and-i or my-friends-i.
It can be optimized for brevity so its easier to type and remember.
diff --git a/3 resources/ansible/nested-loops.md b/3 resources/ansible/nested-loops.md
index 3a5be97..fded56a 100644
--- a/3 resources/ansible/nested-loops.md
+++ b/3 resources/ansible/nested-loops.md
@@ -1,3 +1,3 @@
-Nested loops can be done not by nesting loops over two separate lists, but by looping over the [[cartesian-product]] of the two using the `product` filter.
+Nested loops can be done not by nesting loops over two separate lists, but by looping over the [[Cartesian product]] of the two using the `product` filter.
`{{ list1 | product(list) | list }}` \ No newline at end of file
diff --git a/3 resources/astal-ags/building-with-nix.md b/3 resources/astal-ags/building-with-nix.md
deleted file mode 100644
index c059716..0000000
--- a/3 resources/astal-ags/building-with-nix.md
+++ /dev/null
@@ -1 +0,0 @@
-`ags init` creates us a nice flake that exposes our bundled project as an installable package. That can be used to install it via nix and reference it in hyprland config to exec-once. \ No newline at end of file
diff --git a/3 resources/css/display.md b/3 resources/css/Display.md
index cf27f55..d145d43 100644
--- a/3 resources/css/display.md
+++ b/3 resources/css/Display.md
@@ -1,3 +1,6 @@
+#css
+
+---
display none vs visibility hidden: display: none is really like the element does not exist. Visibility hidden just hides it but it still takes space.
A display: none element can still have size and be coloured with a background image. It still doesn't take space. This can be used for a timeline bar for example! \ No newline at end of file
diff --git a/3 resources/css/flexbox.md b/3 resources/css/Flexbox.md
index 9e8f95e..04d5af2 100644
--- a/3 resources/css/flexbox.md
+++ b/3 resources/css/Flexbox.md
@@ -1,3 +1,6 @@
+#css
+
+---
Flexbox deals with layout always in only one dimension; it's possible to specify which dimension: either vertical or horizontal.
Two axes: main and cross
@@ -6,7 +9,6 @@ Control main axis: `flex-direction: row|row-reverse|column|column-reverse`. The
Cross axis is always the opposite of `flex-direction`, so if `flex-direction: row-reverse` the cross axis is `column-reverse`.
-[[TODO]] What is: "writing mode of the document"? Mentioned on the docs.
-This document explains: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_flexible_box_layout/Relationship_of_flexbox_to_other_layout_methods#writing_modes
-
+The writing mode determines where the start and end are, based on for example languages. Japanese is written from right-to-left rather than western left-to-right.
+So while in Europe the start of a flexbox is at the left and the end at the right in Japan this would be reversed.
diff --git a/3 resources/css/grids.md b/3 resources/css/Grid.md
index 66b0ec8..66b0ec8 100644
--- a/3 resources/css/grids.md
+++ b/3 resources/css/Grid.md
diff --git a/3 resources/elixir/elixir.md b/3 resources/elixir/elixir.md
deleted file mode 100644
index 4d38de1..0000000
--- a/3 resources/elixir/elixir.md
+++ /dev/null
@@ -1,228 +0,0 @@
-Elixir supports "macro's", which is Elixir code that runs at compile time. They receive the AST of the source code as input and can apply transformations to it. This is how Elixir is written itself, using Elixir macro's.
-
-Elixir functions can be organized into [[elixir - modules]].
-```
-defmodule MyModule do
- # Comment
- @moduledoc "Documentation for the module"
- import IO
- alias IO, as MyIO # Alias import
-
- @pi 3.14 # Module attribute
-
- @doc "Describe what the function does"
- def hello do
- MyIO.puts("blaat")
- 3*@pi # Module attribute reference
- done
-
- @spec hello_private(string) # typespec, can be used by dialyzer, very useful
- defp hello_private(hello) do
- puts(hello)
- done
-done
-```
-
-The [[Elixir - Kernel]] module is always imported, so functions we use without prefix come from Kernel.
-
-Elixir introduces a concept called [[Elixir - Atoms]]. They are named constants, like enumerations in C.
-```
-:blaat
-:"Bla at"
-Blaat == :"Elixir.Blaat" # Alias
-
-var = :blaat # var contains only a reference to the atom, thus is small and fast.
-```
-
-[[Elixir - Aliases]] are internally represented as "Elixir.RealThing", in the case of the module alias above `MyIO == Elixir.IO`.
-
-[[Elixir - Tuples]] group a, usually small, fixed number of elements together. Kernel.elem/2 for access, Kernel.put_elem/3 for updating.
-
-[[Elixir - Lists]] are a recursive structure with a head of any type and a tail which is another list. They are notated as regular arrays in other languages, but can be written as `[head | tail]`. Therefore it's easy and efficient to push a new item to the top, we can use the head | tail notation ->
-https://hexdocs.pm/elixir/List.html
-https://hexdocs.pm/elixir/Enum.html
-```
-list = [1, 2, 3]
-list = [4 | list]
-list
-[4, 1, 2, 3]
-```
-
-[[Elixir - Immutable functions]] give a form of atomicity, because operations (other functions) they call do not mutate data if anything fails we can just return the original data without having changed anything.
-
-[[Elixir - Maps]] %{}, can also be created with Map.new([{1, 2}, {3, 4}]) (2-tuples).
-https://hexdocs.pm/elixir/Map.html
-```
-a = %{1 => 1}
-a[1]
-1
-```
-Maps can also be used to define structures,
-```
-person = %{name: "Jasper"}
-```
-
-[[Elixir - Binaries]] are consecutive sequences of bytes.
-```
-<<1, 1>> is a two-byte binary where each byte has value of, thus
-0000 0001 0000 0001
-<<1>> <> <<2>> concatenate two binaries
-0000 0001 0000 0010
-```
-
-[[Elixir - Strings]]
-```
-"This is a stringt"
-"
-Multiline
-string
-"
-a = 1337
-"Print number #{a}" # #{} allows evaluation of values strings
-
-~s(This is a sigil which is also a string)
-~s(Is useful to "use" quotes)
-str = "INTERPOLATION!"
-~S(Capital-S sigil allows prevention of string #{str} and \nescaping)
-"Capital-S sigil allows prevention of string \#{str} and \\nescaping"
-
-"Blaat" <> " henk" # Concatenation works like binaries, because strings are binaries
-```
-
-[[Elixir - Lambda]]
-```
-square = fn x -> # lambda's use fn
- x*x
-end
-
-square.(5) # lambda is called with name period arguments enclosed by parens. The dot is to make it known that we are calling a lambda and not a regular function.
-```
-
-For cases where the lambda just forwards its arguments to another function there is a special syntax, example:
-[[Elixir - capture operator]]
-```
-Enum.each([1, 2, 3], fn x -> IO.puts(x) end)
-Enum.each([1, 2, 3], &IO.puts/1) # The & is called the "capture operator" and can also be used to shorten a lambda definition:
-lambda = fn x, y, z -> x * y + z end
-lambda = &(&1 * &2 + &3) # Like bash arguments ${1} ${2} etc
-```
-
-[[Elixir - Closure]]
-A lambda can reference variables from the outside scope. If we rebind the variable in the parent scope, the lambda will still reference the old one.
-```
-outside = "Abc"
-lambda = &IO.puts/1
-outside = "cdef"
-lambda.()
-"Abc"
-```
-
-Range
-0..1, internally represented as a map with bounds set, therefore small no matter how "big" the range. Is also an enumeration so can use the Enum module.
-
-Keyword list
-List of 2-tuple where the 1st element is an atom. E.g. `[{:monday, 1}, {:tuesday, 2}]` can be written more elegant as `[monday: 1, tuesday: 2]`
-https://hexdocs.pm/elixir/Keyword.html
-Can be used as kwargs like in python.
-
-MapSet
-https://hexdocs.pm/elixir/MapSet.html
-Also an enumeration.
-Initialize with MapSet.new
-
-Times and Dates
-Have modules: Date, Time, DateTime, NaiveDateTime
-Created with sigil ~D for dates, and ~T for time
-```
-dt = ~D[2023-01-01]
-dt.year
-2023
-
-tm = ~T[19:03:32]
-tm.second
-32
-```
-
-IO lists
-Are lists that can consist of one of three types:
-- Int in range 0..255
-- Binaries
-- Another IO list
-It is thus a tree. Input operations are O(1)
-
-
-Pattern matching
-The '=' operator is not an assignment operator, but a match operator.
-pattern = expression
-Pattern can be list, map, tuple, variable, binaries, binary strings
-constants, atom can be matched to discriminate results of expressions.
-{:ok, result} = expr, fails is expr returns for example {:error, result}
-Patterns can be nested: `{_, {hour, _, }, _} = :calendar.local_time()`
-
-Maps can partial match, to extract a property from a complex map.
-Lists can abuse their recursive naturs: `[head | tail] = [1, 2, 3] head = 1, tail = [2,3]`
-Pin-operator `^` is used to match against the value of a variable:
-```
-a = "Bob"
-{^a, _} = {"Bob", 25} <- Matches because the value of a is "Bob"
-{^a, _} = {"Alice", 25} <- Doesn't match
-```
-
-Pattern matching using strings it's possible to match the beginning of a string and assign the rest to a var:
-```
-command = "ping www.hostnet.nl"
-"ping " <> url = command
-url = "www.hostnet.nl"
-```
-
-Pattern matching can be done in function arguments and enabled "multiclause functions", which is a sort of function overloading. It's multiple definitions of the same function, with the same arity, but with different argument patterns. They are treated as a single function, so with the capture operator you can use all "variants".
-```
-defmodule Geo do
- def area({:square, a, b}), do a * b end
- def area({:circle, r}), do r * r * pi end
- def area(unknown), do {:error, {:unknown_shape, unknown}} end
- # ^ do mind that the arity has to match for this catch-all error, also
- # ordering is important. The runtime matches from top to bottom.
-end
-
-fn = &Geo.area/1
-
-fn.({:square, 1, 2})
-2
-fn.({:circle, 23})
-whatever this is
-```
-
-Conditionals can be implemented using multiclause functions, but also with the regular if..else statements, cond do .. end and case expression do ... end.
-
-A with-clause can be used to match multiple patterns in order and halt if a pattern doesn't match.
-```
-defp extract_login(%{"login" => login}%) do, %{:ok, login} end
-defp extract_login(_) do, {:error, "login missing"} end
-
-defp extract_email(%{"email" => email}) do, %{:ok, email} end
-defp extract_email(_) do, %{:error, "email missing"} end
-
-def extract_user(user) do
- case extract_login(user) do
- {:error, reason} -> {:error, reason}
- {:ok, login} ->
- case extract_email(user) do
- {:error, reason} -> {:error, reason}
- {ok, email} -> %{login: login, email: email}
- end
- end
-end
-
-# can be written as
-
-def extract_user(user) do
- with {:ok, login} <- extract_login(user),
- {:ok, email} <- extract_email(user) do
- {:ok, %{login: login, email: email}}
- end
-end
-```
-
-Looping is mainly implemented via recursion. The break condition is implemented via a multiclause function matching the condition that you want to break at.
-Recursion can be expensive, unless the recursive call is at the end of a function, which is called a tail-call. Tail-calls are optimized to not require any additional memory, because their result is also the result of the caller, so we don't need to come back to the caller. \ No newline at end of file
diff --git a/3 resources/libvirt/mediated-devices.md b/3 resources/libvirt/Mediated devices.md
index 3011a28..fe9e551 100644
--- a/3 resources/libvirt/mediated-devices.md
+++ b/3 resources/libvirt/Mediated devices.md
@@ -1,8 +1,11 @@
+#libvirt #linux #virtualisation
+
+---
https://libvirt.org/drvnodedev.html#mediated-devices-mdevs
They are virtual devices that share a single physical device.
-Similar to [[sr-iov]] but sr-iov required registering and unregistering devices with the host PCIe bus via a host driver.
+Similar to [[SR-IOV]] but sr-iov required registering and unregistering devices with the host PCIe bus via a host driver.
Mediated devices don't have to do this.
So why would we still choose sriov? \ No newline at end of file
diff --git a/3 resources/libvirt/sr-iov.md b/3 resources/libvirt/SR-IOV.md
index e7eec8e..0881ec0 100644
--- a/3 resources/libvirt/sr-iov.md
+++ b/3 resources/libvirt/SR-IOV.md
@@ -1,3 +1,6 @@
+#linux #libvirt #virtualisation
+
+---
Single root input/output virtualization: enables sharing of single PCI-e devices with multiple guests.
Physical device = PF (Physical Function)
diff --git a/3 resources/linux/APT.md b/3 resources/linux/APT.md
new file mode 100644
index 0000000..9231d40
--- /dev/null
+++ b/3 resources/linux/APT.md
@@ -0,0 +1,5 @@
+#linux #packages #how-to
+
+---
+reinstall packages:
+`apt reinstall <pkg>` \ No newline at end of file
diff --git a/3 resources/linux/Definitions.md b/3 resources/linux/Definitions.md
new file mode 100644
index 0000000..c0ca4dd
--- /dev/null
+++ b/3 resources/linux/Definitions.md
@@ -0,0 +1,6 @@
+#linux #definitions
+
+---
+NBP = Network Bootstrap Program
+PXE = Preboot Execution Environment
+NIC = Network Interface Card \ No newline at end of file
diff --git a/3 resources/linux/device-drivers.md b/3 resources/linux/Device drivers.md
index e4fe9d2..95f1a75 100644
--- a/3 resources/linux/device-drivers.md
+++ b/3 resources/linux/Device drivers.md
@@ -1,3 +1,6 @@
+#linux #devices
+
+---
major, minor numbers
major = driver (used by kernel when opening device to dispatch to correct driver)
minor = used by driver to differentiate device(s)
diff --git a/3 resources/linux/device-mapper.md b/3 resources/linux/Device mapper.md
index f862496..059a0d1 100644
--- a/3 resources/linux/device-mapper.md
+++ b/3 resources/linux/Device mapper.md
@@ -1,7 +1,10 @@
+#linux #device-mapper
+
+---
Device mapper is a kernel driver to map physical block devices to virtual ones; this means that for example we can have many physical devices be represented by a single virtual one (linear mapping).
How does it work?
-[[TODO]]
+[[1 projects/Inwerken Mohammed/TODO]]
What is its function in relation to multipath?
Logical devices using device-mapper can be managed using `man 8 dmsetup`
diff --git a/3 resources/linux/lsof.md b/3 resources/linux/LSOF.md
index e95b968..5a3aa95 100644
--- a/3 resources/linux/lsof.md
+++ b/3 resources/linux/LSOF.md
@@ -1,3 +1,7 @@
+#linux #how-to
+
+---
+
```
lsof -p 1111 # show open files for this PID
lsof /path/to/file # show which process has this open
diff --git a/3 resources/linux/Users.md b/3 resources/linux/Users.md
new file mode 100644
index 0000000..885a7cc
--- /dev/null
+++ b/3 resources/linux/Users.md
@@ -0,0 +1,22 @@
+#linux #user-management
+
+Change uid/gid of user
+`usermod -u newnumber user`
+`groupmod -g newnumber user`
+
+File permissions in homedir will be automatically updated; file perms outside home dir will not be automatically updated.
+
+Finding files of a specific user, and printing their uid/gid;
+`sudo find / -user 4109 -printf '%p %u(%U) %g(%G)\n'`
+
+To change only the group: `chgrp`.
+
+Or using find to chmod/chgrp:
+`sudo find / -user 4109 -group 4109 -exec chmod 998:998 {} \;`
+`sudo find / -group 4109 -exec chgrp 998 {} \;`
+
+Dirty way to find "system users" (uid < 999) - note that this is not fool-proof, it also lists groups
+`getent passwd | grep -oP '\b[0-9]{3}\b' | uniq | sort`
+
+---
+https://www.cyberciti.biz/faq/linux-change-user-group-uid-gid-for-all-owned-files/
diff --git a/3 resources/linux/Watch.md b/3 resources/linux/Watch.md
index dafeb80..0c167b7 100644
--- a/3 resources/linux/Watch.md
+++ b/3 resources/linux/Watch.md
@@ -1 +1,4 @@
-`watch (1)` periodically executes the executable on argv. It can be used to reload the output of a command, like `sudo watch ovs-dpctl dump-flows` . \ No newline at end of file
+#linux #how-to
+
+---
+`watch (1)` periodically executes the executable on argv. It can be used to reload the output of a command, like `sudo watch ovs-dpctl dump-flows` .
diff --git a/3 resources/linux/apt.md b/3 resources/linux/apt.md
deleted file mode 100644
index 36a098c..0000000
--- a/3 resources/linux/apt.md
+++ /dev/null
@@ -1,2 +0,0 @@
-reinstall packages:
-`apt reinstall <pkg>` \ No newline at end of file
diff --git a/3 resources/linux/bootloader.md b/3 resources/linux/bootloader.md
deleted file mode 100644
index e9c2fff..0000000
--- a/3 resources/linux/bootloader.md
+++ /dev/null
@@ -1 +0,0 @@
-[[TODO]] \ No newline at end of file
diff --git a/3 resources/linux/filesystems/tmpfs.md b/3 resources/linux/filesystems/Tmpfs.md
index 624c835..b8fe839 100644
--- a/3 resources/linux/filesystems/tmpfs.md
+++ b/3 resources/linux/filesystems/Tmpfs.md
@@ -1,3 +1,6 @@
+#linux #filesystem
+
+---
Is a [[virtual filesystem]] that is stored in memory; it uses both RAM and swap space.
> Kernel option: CONFIG_TMPFS
diff --git a/3 resources/linux/filesystems/virtual filesystem.md b/3 resources/linux/filesystems/virtual filesystem.md
deleted file mode 100644
index e69de29..0000000
--- a/3 resources/linux/filesystems/virtual filesystem.md
+++ /dev/null
diff --git a/3 resources/linux/glibc.md b/3 resources/linux/glibc.md
deleted file mode 100644
index 18d18e1..0000000
--- a/3 resources/linux/glibc.md
+++ /dev/null
@@ -1 +0,0 @@
-The GNU C standard library. \ No newline at end of file
diff --git a/3 resources/linux/man pages.md b/3 resources/linux/man pages.md
deleted file mode 100644
index 576d4b8..0000000
--- a/3 resources/linux/man pages.md
+++ /dev/null
@@ -1,2 +0,0 @@
-I need to more consistently read man pages. Example is `man task` to see how taskwarrior works, after reading it today I found that it is actually quite easy.
-They often contain good information on how to use a certain tool. \ No newline at end of file
diff --git a/3 resources/linux/networking/DHCP.md b/3 resources/linux/networking/DHCP.md
new file mode 100644
index 0000000..e7e8e38
--- /dev/null
+++ b/3 resources/linux/networking/DHCP.md
@@ -0,0 +1,5 @@
+#networking #linux
+
+---
+Dynamic Host Configuration Protocol
+Allows hosts dynamically receive an IP address. \ No newline at end of file
diff --git a/3 resources/linux/networking/ip-masquerade-nat.md b/3 resources/linux/networking/IP masquerade.md
index 8b722f4..2ccc8e6 100644
--- a/3 resources/linux/networking/ip-masquerade-nat.md
+++ b/3 resources/linux/networking/IP masquerade.md
@@ -1,3 +1,6 @@
+#linux #networking
+
+---
A function in the kernel that allows guests with internal/private IPs to access the internet by using the hosts' public IP similar to 1 to many NAT.
Differences with Proxy, IP Masq, NAT:
diff --git a/3 resources/linux/networking/pxe-boot.md b/3 resources/linux/networking/PXE.md
index d532ac3..d5fe4d1 100644
--- a/3 resources/linux/networking/pxe-boot.md
+++ b/3 resources/linux/networking/PXE.md
@@ -1,4 +1,7 @@
-PXE = Preboot Execution Environment.
+#linux #pxe
+
+---
+The NBP is a bootloader that is obtained via the network typically via [[TFTP]]. It handles setting up an environment in which an OS can run or install. For example, it displays a boot menu and downloads the kernel images. It sets up hardware, for example the [[NIC]]s.
PXE boot process:
1. Modified [[DHCP]] request: request to include boot information (PXE boot request).
diff --git a/3 resources/linux/networking/dhcp.md b/3 resources/linux/networking/dhcp.md
deleted file mode 100644
index e426d6f..0000000
--- a/3 resources/linux/networking/dhcp.md
+++ /dev/null
@@ -1,4 +0,0 @@
-Dynamic Host Configuration Protocol
-Allows hosts dynamically receive an IP address.
-
-[[TODO]] learn exactly how it works \ No newline at end of file
diff --git a/3 resources/linux/networking/nbp.md b/3 resources/linux/networking/nbp.md
deleted file mode 100644
index 19676ea..0000000
--- a/3 resources/linux/networking/nbp.md
+++ /dev/null
@@ -1,3 +0,0 @@
-Network Bootstrap Program
-
-Is a bootloader that is obtained via the network typically via [[TFTP]]. It handles setting up an environment in which an OS can run or install. For example, it displays a boot menu and downloads the kernel images. It sets up hardware, for example the [[NIC]]s. \ No newline at end of file
diff --git a/3 resources/linux/networking/udp.md b/3 resources/linux/networking/udp.md
deleted file mode 100644
index e69de29..0000000
--- a/3 resources/linux/networking/udp.md
+++ /dev/null
diff --git a/3 resources/linux/nic.md b/3 resources/linux/nic.md
deleted file mode 100644
index 592ad1c..0000000
--- a/3 resources/linux/nic.md
+++ /dev/null
@@ -1 +0,0 @@
-Network Interface Card \ No newline at end of file
diff --git a/3 resources/linux/shared anonymous memory mappings.md b/3 resources/linux/shared anonymous memory mappings.md
deleted file mode 100644
index 71d1cfc..0000000
--- a/3 resources/linux/shared anonymous memory mappings.md
+++ /dev/null
@@ -1,2 +0,0 @@
-[[TODO]]
-Linux API book: chapter 49 \ No newline at end of file
diff --git a/3 resources/linux/system v shared memory.md b/3 resources/linux/system v shared memory.md
deleted file mode 100644
index d1f690d..0000000
--- a/3 resources/linux/system v shared memory.md
+++ /dev/null
@@ -1,2 +0,0 @@
-[[TODO]]
-Linux API book chapter 48 \ No newline at end of file
diff --git a/3 resources/linux/tftp.md b/3 resources/linux/tftp.md
deleted file mode 100644
index 259fdec..0000000
--- a/3 resources/linux/tftp.md
+++ /dev/null
@@ -1,2 +0,0 @@
-Trivial File Transfer Protocol
-[[TODO]] \ No newline at end of file
diff --git a/3 resources/math/cartesian-product.md b/3 resources/math/Cartesian product.md
index 0e0a9a4..161b405 100644
--- a/3 resources/math/cartesian-product.md
+++ b/3 resources/math/Cartesian product.md
@@ -1 +1,4 @@
+#math #definitions
+
+---
The Cartesian product in [[set theory]] denoted as A x B where A and B are both sets and it would result in pairs of (a, b) for each a and b in A and B respectively. \ No newline at end of file
diff --git a/3 resources/mathematics/convolution.md b/3 resources/mathematics/convolution.md
deleted file mode 100644
index e69de29..0000000
--- a/3 resources/mathematics/convolution.md
+++ /dev/null
diff --git a/3 resources/nix/flakes.md b/3 resources/nix/Flake.md
index fb99500..754556f 100644
--- a/3 resources/nix/flakes.md
+++ b/3 resources/nix/Flake.md
@@ -1,3 +1,6 @@
+#nix #flake
+
+---
Nix flakes are source trees containing a file `flake.nix` at their root. The file `flake.nix` provides a standardized way to provide [[Zettelkast/Index/Nix]] artifacts. It's like a package manager for [[Zettelkast/Index/Nix]]. A flake can be dependent on other Flakes and it's possible to pin dependencies to exact revisions by using a `flake.lock` file.
Nix flake evaluation is hermetic, meaning that it produces the same result wherever it's built.k
diff --git a/3 resources/nix/overlays.md b/3 resources/nix/Overlays.md
index 70dad85..8ee33f3 100644
--- a/3 resources/nix/overlays.md
+++ b/3 resources/nix/Overlays.md
@@ -1,4 +1,7 @@
-Functions that accept two args (conventionally: final, prev) and return a set of [[package]]s.
+#nix #overlay
+
+---
+Functions that accept two args (conventionally: final, prev) and return a set of [[Package]]s.
The `prev` arguments holds the set of packages of the "parent" overlay while the `final` argument holds the end result of **all** overlays applied. This means that overlays depend on each other. It is unclear how we can tell on which overlay an overlay depends.
diff --git a/3 resources/nix/Package.md b/3 resources/nix/Package.md
new file mode 100644
index 0000000..32c6bd4
--- /dev/null
+++ b/3 resources/nix/Package.md
@@ -0,0 +1,6 @@
+#nix #packages
+
+---
+Packages != NixOS Modules
+
+Packages come from Nixpkgs. \ No newline at end of file
diff --git a/3 resources/nix/repl.md b/3 resources/nix/REPL.md
index 6a0fd4a..210b980 100644
--- a/3 resources/nix/repl.md
+++ b/3 resources/nix/REPL.md
@@ -1,2 +1,5 @@
+#nix #repl
+
+---
`nix repl` to interactively evaluate Nix expressions. `:p` if output is not full.
`nix-instantiate --eval <file>.nix` to evaluate a Nix expression from a file. `--strict`. \ No newline at end of file
diff --git a/3 resources/nix/shell.nix.md b/3 resources/nix/Shell.nix.md
index d5fa8ce..13715c2 100644
--- a/3 resources/nix/shell.nix.md
+++ b/3 resources/nix/Shell.nix.md
@@ -1,3 +1,6 @@
+#nix #shell
+
+---
Can be used to set up per dir environments, e.g using direnv to automatically activate them.
## Python
https://nixos.org/manual/nixpkgs/stable/#python
@@ -35,5 +38,5 @@ let
in python311.withPackages (ps: with ps; [ numpy my_toolz ]) ).env
```
-The [[keyword-import]] is required here because imports a nix expression from another source, in this case nixpkgs.
+The [[Import]] is required here because imports a nix expression from another source, in this case nixpkgs.
It is not required at line two, because python310Packages itself is already in the local scope. \ No newline at end of file
diff --git a/3 resources/nix/language.md b/3 resources/nix/language.md
deleted file mode 100644
index 01101d9..0000000
--- a/3 resources/nix/language.md
+++ /dev/null
@@ -1,5 +0,0 @@
-"Nix is like JSON, but with functions".
-
-[[keyword-rec]]
-[[keyword-let]]
-[[keyword-with]]
diff --git a/3 resources/nix/language/keyword-import.md b/3 resources/nix/language/Import.md
index 616c155..d201c74 100644
--- a/3 resources/nix/language/keyword-import.md
+++ b/3 resources/nix/language/Import.md
@@ -1,2 +1,5 @@
+#nix #keyword
+
+---
The import keyword brings a Nix expression from another source into scope such that we can reference it. For example, we can `import <nixpkgs>` and it would bring the entire attribute set that is Nixpkgs into scope and allows us to reference any of its attributes.
diff --git a/3 resources/nix/language/keyword-let.md b/3 resources/nix/language/Let.md
index 3b2f401..bfb4b31 100644
--- a/3 resources/nix/language/keyword-let.md
+++ b/3 resources/nix/language/Let.md
@@ -1,3 +1,6 @@
+#nix #keyword
+
+---
Keyword: `let`
Used to assign variables that can be used in an expression immediately following the let-binding.
```nix
diff --git a/3 resources/nix/language/keyword-rec.md b/3 resources/nix/language/Rec.md
index 456f877..b7050d3 100644
--- a/3 resources/nix/language/keyword-rec.md
+++ b/3 resources/nix/language/Rec.md
@@ -1,3 +1,6 @@
+#nix #keyword
+
+---
Recursive attribute sets can reference values declared earlier in the same set.
keyword: `rec`
```nix
diff --git a/3 resources/nix/language/keyword-with.md b/3 resources/nix/language/With.md
index 10763ff..b291907 100644
--- a/3 resources/nix/language/keyword-with.md
+++ b/3 resources/nix/language/With.md
@@ -1,3 +1,6 @@
+#nix #keyword
+
+---
The `with` keyword brings all attributes from a given set, e.g nixpkgs, into the local scope. Making them accessible as if they were declared in the same file.
An example, bringing everything from nixpkgs into scope:
diff --git a/3 resources/nix/package.md b/3 resources/nix/package.md
deleted file mode 100644
index 231e3a6..0000000
--- a/3 resources/nix/package.md
+++ /dev/null
@@ -1,3 +0,0 @@
-Packages != NixOS Modules
-
-Packages are from Nixpkgs. \ No newline at end of file
diff --git a/3 resources/nix/packages/apply-patches.md b/3 resources/nix/packages/Apply custom patches.md
index e703f81..370c53a 100644
--- a/3 resources/nix/packages/apply-patches.md
+++ b/3 resources/nix/packages/Apply custom patches.md
@@ -1,4 +1,7 @@
-We can apply patches to existing packages using [[overlays]]:
+#nix #packages #overlay
+
+---
+We can apply patches to existing packages using [[Overlays]]:
```nix
final: prev {
nova = prev.nova.overrideAttrs (old: {
diff --git a/3 resources/openstack/create-port-fixed-ip.md b/3 resources/openstack/Creating ports.md
index 3b6ab46..90223bf 100644
--- a/3 resources/openstack/create-port-fixed-ip.md
+++ b/3 resources/openstack/Creating ports.md
@@ -1 +1,4 @@
+#openstack #port
+
+---
Creating a port with a fixed IP requires admin privileges. It is not sufficient to have an RBAC policy that shares the network with a tenant. \ No newline at end of file
diff --git a/3 resources/openstack/guest-pmsuspended.md b/3 resources/openstack/Libvirt pmsuspended.md
index 8995e6e..4749c76 100644
--- a/3 resources/openstack/guest-pmsuspended.md
+++ b/3 resources/openstack/Libvirt pmsuspended.md
@@ -1,3 +1,6 @@
+#openstack #libvirt
+
+---
Encountered a guest running some desktop image that sleeps and puts libvirt domain in state pmsuspend.
Openstack does not sync power states in this case so the nova instance is still ACTIVE. \ No newline at end of file
diff --git a/3 resources/openstack/nova-live-migration-volume.md b/3 resources/openstack/Nova live migration volume.md
index 50bb6d0..8b37f67 100644
--- a/3 resources/openstack/nova-live-migration-volume.md
+++ b/3 resources/openstack/Nova live migration volume.md
@@ -1,3 +1,7 @@
+#openstack #nova #live-migration #volume
+
+
+---
Table cinder.volume_attachment, contains which volume_driver. target_lun `(<n>)` here maps to `dm-<n>`.
Luns are not unique across pod, each node has a target_lun 2 and thus dm-2 connected.