diff --git a/Makefile b/Makefile index 099bd80..163ae5a 100644 --- a/Makefile +++ b/Makefile @@ -9,20 +9,17 @@ INSTALLDIR_ANSI := public_ansi/ ARTICLEDIR := articles PANDOCDIR := pandoc STYLEDIR := styles -SCRIPTDIR := scripts IMAGEDIR := images # The name of the stylesheet. This needs to be copied to any directory containing html files that use it. style := $(STYLEDIR)/style.css -syntax_style := $(PANDOCDIR)/solarized.theme # Main html template that pandoc uses to generate .html from .md files -template_html := $(PANDOCDIR)/html-template.html -template_ansi := $(PANDOCDIR)/ansi-template -template_rss := $(PANDOCDIR)/rss-template.xml -template_atom := $(PANDOCDIR)/atom-template.xml +template_html := $(PANDOCDIR)/template.html +template_ansi := $(PANDOCDIR)/template + # Template for extracting metadata of .md files in json format -list_template := $(PANDOCDIR)/metadata-template.json +list_template := $(PANDOCDIR)/meta-json-template.txt # Location of the shark.js shark_js := $(PANDOCDIR)/shark.js @@ -36,10 +33,10 @@ articles_md := $(wildcard $(SRCDIR)/$(ARTICLEDIR)/*.md) articles_html := $(patsubst $(SRCDIR)/%.md, $(BUILDDIR)/%.html, $(articles_md)) articles_ansi := $(patsubst $(SRCDIR)/%.md, $(BUILDDIR)/%, $(articles_md)) -all: $(BUILDDIR)/index.html $(BUILDDIR)/index $(BUILDDIR)/atom.xml +all: $(BUILDDIR)/index.html $(BUILDDIR)/index install: - cp -r $(BUILDDIR)/index.html $(BUILDDIR)/atom.xml $(articles_html) $(STYLEDIR) $(SCRIPTDIR) $(IMAGEDIR) $(INSTALLDIR_HTML); \ + cp -r $(BUILDDIR)/index.html $(articles_html) $(STYLEDIR) $(IMAGEDIR) $(INSTALLDIR_HTML); \ cp -r $(BUILDDIR)/index $(articles_ansi) $(INSTALLDIR_ANSI); clean: @@ -50,28 +47,23 @@ $(BUILDDIR): mkdir $(BUILDDIR) $(BUILDDIR)/$(ARTICLEDIR) $(BUILDDIR)/$(ARTICLEDIR)/%.html: $(SRCDIR)/$(ARTICLEDIR)/%.md | $(BUILDDIR) - jq 'del(.articles[] | select(.filename == "$(patsubst %.html,%,$(notdir $@))"))' $(article_list) > articles.json.tmp; \ - mv articles.json.tmp $(article_list); \ + jq 'del(.articles[] | select(.filename == "$(notdir $@)"))' $(article_list) > articles.json.tmp; \ + mv ./articles.json.tmp $(article_list); \ + # Build articles using pandoc - pandoc $< --template $(template_html) --css $(style) --highlight-style $(syntax_style) --mathml --toc --output $@; \ + pandoc $< --template $(template_html) --css $(style) --highlight-style zenburn --mathml --toc --output $@; \ + # Extract metadata from .md file, append filename field to the article object. # This is used to link to the article from index.html. Append article object to the article list. - jq '.articles += [$(shell pandoc $< --template $(list_template) | jq '. += {"filename": "$(patsubst %.html,%,$(notdir $@))"}')]' $(article_list) > articles.json.tmp; \ - mv articles.json.tmp $(article_list); - + jq '.articles += [$(shell pandoc $< --template $(list_template) | jq '. += {"filename": "$(patsubst %.html, %, $(notdir $@))"}')]' $(article_list) > articles.json.tmp; \ + mv ./articles.json.tmp $(article_list); \ $(BUILDDIR)/$(ARTICLEDIR)/%: $(SRCDIR)/$(ARTICLEDIR)/%.md | $(BUILDDIR) pandoc $< --template $(template_ansi) --to ansi --output $@ $(BUILDDIR)/index.html: $(SRCDIR)/index.md $(articles_html) | $(BUILDDIR) - # Sort articles decending by date (date need to be in ISO 8601 format) - jq '.articles |= sort_by(.date) | .articles |= reverse' ${article_list} > articles.json.tmp; \ - mv articles.json.tmp ${article_list}; \ # Build index.html with metadata injected from articles_list - pandoc $< --template $(template_html) --css $(style) --metadata-file $(article_list) --highlight-style $(syntax_style) --mathml --toc --output $@; + pandoc $< --template $(template_html) --include-after-body $(shark_js) --css $(style) --metadata-file $(article_list) --highlight-style zenburn --mathml --toc --output $@; \ $(BUILDDIR)/index: $(SRCDIR)/index.md $(articles_ansi) | $(BUILDDIR) pandoc $< --template $(template_ansi) --metadata-file $(article_list) --to ansi --output $@ - -$(BUILDDIR)/atom.xml: $(SRCDIR)/feed.md $(articles_html) | $(BUILDDIR) - pandoc $< --template $(template_atom) --metadata-file $(article_list) --metadata "updated:$(shell date --iso-8601=minutes)" --to html --output $@ diff --git a/build/articles/beans-and-cornbread b/build/articles/beans-and-cornbread deleted file mode 100644 index 4df2e31..0000000 --- a/build/articles/beans-and-cornbread +++ /dev/null @@ -1,71 +0,0 @@ - Bohnen und Maisbrot - - Never - - 2026-06-22 - - ──────────────────── - -BOHNEN - -Maße Zutaten -─────────────────────────────────── ─────────────────────────────────── -2 Zwiebeln -2 Knoblauchzehen -1 rote Chili (Peperoni/Chile de - árbol¹) - Kreuzkümmel - Speckwürfel (Optional) -1 l Brühe (Gemüse/Huhn/Rind) -1 Dose Kidneybohnen -1 Dose Pintobohnen oder andere Bohnen -1 Chile Ancho² oder geräuchertes - Paprikapulver - Petersilienstängel - Limettensaft - Salz -─────────────────────────────────── ─────────────────────────────────── - -Zubereitung - -1. Zwiebeln, Knoblauch, rote Chili, Kreuzkümmel und Speckwürfel - anbraten. - -2. Mit Brühe ablöschen und die Bohnen, Ancho Chili und - Petersilienstängel hinzufügen. Köcheln und etwas reduzieren lassen. - -3. Mit Salz und Limettensaft abschmecken. - -MAISBROT - -Maße Zutaten -─────────────────────────────────── ─────────────────────────────────── -1 Tasse Mehl -1 Tasse Maismehl -4 TL Backpulver - Salz -1/4 Tasse brauner Zucker -1 Ei -1/3 Tasse flüssige Butter -1 - 2 Tassen Milch oder Buttermilch -1/3 Tasse flüssige Butter - Speckwürfel (Optional) - Gehackte grüne Chilis (Optional) -─────────────────────────────────── ─────────────────────────────────── - -Zubereitung - -1. Trockene Zutaten mischen. - -2. Ei und Butter unterrühren. - -3. Schrittweise die Milch hinzugeben, bis eine zähflüssige Masse - entstanden ist. - - ──────────────────── - - 1. ]8;;https://en.wikipedia.org/wiki/Chile_de_%C3%A1rbol\Chile de árbol]8;;\; Eine kleine, scharfe, rote Chili. Meist getrocknet - zu finden. - - 2. ]8;;https://en.wikipedia.org/wiki/Poblano\Chile Ancho]8;;\; Eine große getrocknete Chili mit rauchigem Geschmack. -]8;;\ \ No newline at end of file diff --git a/build/articles/beans-and-cornbread.html b/build/articles/beans-and-cornbread.html deleted file mode 100644 index da06adf..0000000 --- a/build/articles/beans-and-cornbread.html +++ /dev/null @@ -1,227 +0,0 @@ - - - - - - - - - - Bohnen und Maisbrot - - - - - - - - - -
-
-

Bohnen und Maisbrot

-

Never

-

2026-06-22

-
- -
-

Bohnen

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MaßeZutaten
2Zwiebeln
2Knoblauchzehen
1rote Chili (Peperoni/Chile de - árbol1)
Kreuzkümmel
Speckwürfel (Optional)
1 lBrühe (Gemüse/Huhn/Rind)
1 DoseKidneybohnen
1 DosePintobohnen oder andere - Bohnen
1Chile Ancho2 oder geräuchertes - Paprikapulver
Petersilienstängel
Limettensaft
Salz
-

Zubereitung

-
    -
  1. Zwiebeln, Knoblauch, rote Chili, Kreuzkümmel und - Speckwürfel anbraten.

  2. -
  3. Mit Brühe ablöschen und die Bohnen, Ancho Chili und - Petersilienstängel hinzufügen. Köcheln und etwas reduzieren - lassen.

  4. -
  5. Mit Salz und Limettensaft abschmecken.

  6. -
-

Maisbrot

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MaßeZutaten
1 TasseMehl
1 TasseMaismehl
4 TLBackpulver
Salz
1/4 Tassebrauner Zucker
1Ei
1/3 Tasseflüssige Butter
1 - 2 TassenMilch oder Buttermilch
1/3 Tasseflüssige Butter
Speckwürfel (Optional)
Gehackte grüne Chilis - (Optional)
-

Zubereitung

-
    -
  1. Trockene Zutaten mischen.

  2. -
  3. Ei und Butter unterrühren.

  4. -
  5. Schrittweise die Milch hinzugeben, bis eine - zähflüssige Masse entstanden ist.

  6. -
-
-
-
    -
  1. Chile - de árbol; Eine kleine, scharfe, rote Chili. Meist - getrocknet zu finden.↩︎

  2. -
  3. Chile - Ancho; Eine große getrocknete Chili mit rauchigem - Geschmack.↩︎

  4. -
-
-
-
- - - - diff --git a/build/articles/latex-endeavors b/build/articles/latex-endeavors index f6e4efd..27d3079 100644 --- a/build/articles/latex-endeavors +++ b/build/articles/latex-endeavors @@ -3,7 +3,7 @@ Never - 2026-01-09 + 9.1.2026 ──────────────────── diff --git a/build/articles/latex-endeavors.html b/build/articles/latex-endeavors.html index bfdae28..6e860b1 100644 --- a/build/articles/latex-endeavors.html +++ b/build/articles/latex-endeavors.html @@ -1,76 +1,68 @@ - - + - - - - - - Latex Endeavors - - - - + + + + + Latex Endeavors + + + - - - -
-
-

Latex Endeavors

-

Some unintuitive quirks of Latex

-

Never

-

2026-01-09

-
- -
-

BibLaTeX and Biber

-

Biber doesn’t run

-

Biber doens’t run if the (fedora) package - libxcrypt-compat is missing. It will fail with - the error message

-
biber: error while loading shared libraries: libcrypt.so.1: cannot open shared object file: No such file or directory
-
-
- + + +
+

Latex Endeavors

+

Some unintuitive quirks of Latex

+

Never

+

9.1.2026

+
+
+ +
+

BibLaTeX and Biber

+

Biber doesn’t run

+

Biber doens’t run if the (fedora) package +libxcrypt-compat is missing. It will fail with the error +message

+
biber: error while loading shared libraries: libcrypt.so.1: cannot open shared object file: No such file or directory
+
+
+ - diff --git a/build/articles/random-linux-utils b/build/articles/random-linux-utils index 331d419..359dd0b 100644 --- a/build/articles/random-linux-utils +++ b/build/articles/random-linux-utils @@ -3,7 +3,7 @@ Never - 2025-07-25 + 25.7.2025 ──────────────────── diff --git a/build/articles/random-linux-utils.html b/build/articles/random-linux-utils.html index 4030c81..a04f711 100644 --- a/build/articles/random-linux-utils.html +++ b/build/articles/random-linux-utils.html @@ -1,147 +1,134 @@ - - + - - - - - - Random linux utilities - - - - + + + + + Random linux utilities + + + - - - -
-
-

Random linux utilities

-

Neat things I picked up along the -way

-

Never

-

2025-07-25

-
- -
-

Merge pdfs

-

Using Ghostscript

-

Ghostscript has a feature to merge multiple pdf files - into one. Although ImageMagick also has this feature, I - prefer this one, as it doesn’t rasterize and scales down the - pdf files.

-
gs -dNOPAUSE -sDEVICE=pdfwrite \
+
+
+
+

Random linux utilities

+

Neat things I picked up along the way

+

Never

+

25.7.2025

+
+
+ +
+

Merge pdfs

+

Using Ghostscript

+

Ghostscript has a feature to merge multiple pdf files into one. +Although ImageMagick also has this feature, I prefer this one, as it +doesn’t rasterize and scales down the pdf files.

+
gs -dNOPAUSE -sDEVICE=pdfwrite \
     -sOUTPUTFILE=output.pdf \
     -dBATCH 1.pdf 2.pdf
-
-
- + + + - diff --git a/build/articles/rsync-android b/build/articles/rsync-android index 5e96bd6..4f04da1 100644 --- a/build/articles/rsync-android +++ b/build/articles/rsync-android @@ -2,7 +2,7 @@ Never - 2026-01-12 + 12.01.2026 ──────────────────── @@ -89,4 +89,28 @@ config. Now on your Linux machine, syncronise your Music library with rsync. rsync -av -e "ssh -p 8022" ~/Music <username>@<ip_address>:/data/data/com.termux/files/home/storage/music + +Refreshing the Android MediaStore + +Android uses a Database to store files. In order to play your music, +this database needs to be refreshed. This can be achieved by a reboot or +by using adb to manually refresh it. + + sudo dnf install adb + +Connect the Android device via USB and see if it is listed. + + adb devices + +If it is, restart adb in TCP mode with port 5555 + + adb tcpip 5555 + +Connect to the device using its . + + adb connect <ip_address> + +Refresh MediaStore. + + adb shell am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN -d file:///data/data/com.termux/files/home/storage/music/ ]8;;\ \ No newline at end of file diff --git a/build/articles/rsync-android.html b/build/articles/rsync-android.html index 8cee590..d291267 100644 --- a/build/articles/rsync-android.html +++ b/build/articles/rsync-android.html @@ -1,160 +1,148 @@ - - + - - - - - - Using rsync on Android to syncronise my Music library - - - - + + + + + Using rsync on Android to syncronise my Music library + + + - - - -
-
-

Using rsync on Android to syncronise my -Music library

-

Never

-

2026-01-12

-
- -
-

Setup Termux

-

Install Termux using F-Droid.

-

Update software repos.

-
pkg update
-

Grant file access permissions using.

-
termux-setup-storage
-

Establishing an ssh - connection

-

If network (such as eduroam) is blocking ssh trafic - between machines, open a Wi-Fi Hotspot on your Linux machine - and connect the Android device to it before using - rsync or ssh.

-

Configuring Android

-

Install the openssh server on Termux.

-
pkg install openssh
-

Start the ssh server daemon.

-
sshd
-

Get the ip address of the Android machine (in the - Hotspot).

-
ifconfig
-
Warning: cannot open /proc/net/dev (Permission denied). Limited output.
+
+
+
+

Using rsync on Android to syncronise my Music +library

+

Never

+

12.01.2026

+
+
+ +
+

Setup Termux

+

Install Termux using F-Droid.

+

Update software repos.

+
pkg update
+

Grant file access permissions using.

+
termux-setup-storage
+

Establishing an ssh +connection

+

If network (such as eduroam) is blocking ssh trafic between machines, +open a Wi-Fi Hotspot on your Linux machine and connect the Android +device to it before using rsync or ssh.

+

Configuring Android

+

Install the openssh server on Termux.

+
pkg install openssh
+

Start the ssh server daemon.

+
sshd
+

Get the ip address of the Android machine (in the Hotspot).

+
ifconfig
+
Warning: cannot open /proc/net/dev (Permission denied). Limited output.
 lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
         inet 127.0.0.1  netmask 255.0.0.0
         unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 1000  (UNSPEC)
@@ -166,49 +154,62 @@ rmnet0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1280
 wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
         inet 10.42.0.200  netmask 255.255.255.0  broadcast 10.42.0.210
         unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 1000  (UNSPEC)
-

In this case 10.42.0.200.

-

The ssh server should now be running and listening on - port 8022. You can check by running

-
nmap -Pn <ip_address>
-

For me <ip_address> whould be - 10.42.0.200.

-

Get the username.

-
whoami
-
u0_a700
-

Set a password for this user.

-
passwd
-

Connecting to Android - via ssh

-

Make sure you have an ssh key pair on the Linux system. - If not generate one using ssh-keygen.

-

Now connect to Android by ssh.

-
ssh <username>@<ip_address> -p 8022
-

Syncronising files - with rsync

-

Install rsync on Termux and Linux. Make sure - to keep your own openssl config.

-
pkg install rsync
-

Now on your Linux machine, syncronise your Music library - with rsync.

-
rsync -av -e "ssh -p 8022" ~/Music <username>@<ip_address>:/data/data/com.termux/files/home/storage/music
-
-
-
- -
+

In this case 10.42.0.200.

+

The ssh server should now be running and listening on port 8022. You +can check by running

+
nmap -Pn <ip_address>
+

For me <ip_address> whould be 10.42.0.200.

+

Get the username.

+
whoami
+
u0_a700
+

Set a password for this user.

+
passwd
+

Connecting to Android via +ssh

+

Make sure you have an ssh key pair on the Linux system. If not +generate one using ssh-keygen.

+

Now connect to Android by ssh.

+
ssh <username>@<ip_address> -p 8022
+

Syncronising files with +rsync

+

Install rsync on Termux and Linux. Make sure to keep +your own openssl config.

+
pkg install rsync
+

Now on your Linux machine, syncronise your Music library with +rsync.

+
rsync -av -e "ssh -p 8022" ~/Music <username>@<ip_address>:/data/data/com.termux/files/home/storage/music
+

Refreshing the Android +MediaStore

+

Android uses a Database to store files. In order to play your music, +this database needs to be refreshed. This can be achieved by a reboot or +by using adb to manually refresh it.

+
sudo dnf install adb
+

Connect the Android device via USB and see if it is listed.

+
adb devices
+

If it is, restart adb in TCP mode with port 5555

+
adb tcpip 5555
+

Connect to the device using its .

+
adb connect <ip_address>
+

Refresh MediaStore.

+
adb shell am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN -d file:///data/data/com.termux/files/home/storage/music/
+ + +
+ +

+Previous +CUPS +Next +

+
- diff --git a/build/atom.xml b/build/atom.xml deleted file mode 100644 index 22fc4b8..0000000 --- a/build/atom.xml +++ /dev/null @@ -1,63 +0,0 @@ - - - nevereverever.de - - nevereverever.de - 2026-06-22T22:12+02:00 - 2026-03-10 - - Never - - Here I post random stuff. - - Bohnen und Maisbrot - - beans-and-cornbread - 2026-06-22T20:47+02:00 - 2026-06-22 - - Never - - Inspiriert von der Küche der Kuhtreiber des Wilden -Westens. - - - Using rsync on Android to syncronise my Music -library - - rsync-android - 2026-01-12T16:24+01:00 - 2026-01-12 - - Never - - As Spotify is getting enshittified by capitalism, -keeping a music library is kind of essential. Here I use rsync to -syncronise my library with my Android smartphone. - - - Latex Endeavors - - latex-endeavors - 2026-01-10T16:23+01:00 - 2026-01-09 - - Never - - Latex undoubtedly has some quirks. Some of them have a -rather unintuitive solution. In this article I cover some quirks and -solutions I have encountered. - - - Random linux utilities - - random-linux-utils - 2025-07-25T16:24+01:00 - 2025-07-25 - - Never - - Tricks and tools I learned about, while tweaking my -Linux sytem or trying to do productive things. - - diff --git a/build/index b/build/index index b382e6e..d127fcf 100644 --- a/build/index +++ b/build/index @@ -2,38 +2,25 @@ ──────────────────── -Hello! I am Never and this is my little place on the internet where I -post the stuff that I am currently nerding out about. - -This Website itself is one of those projects, that I like to tweak and -tinker with. Maybe I’ll write an article about its build system. It is -also viewable via  curl . Just run - - curl nevereverever.de - -There also is an Atom Feed to stay updated about my doings. +Hello World ARTICLES -Bohnen und Maisbrot (beans-and-cornbread) -Inspiriert von der Küche der Kuhtreiber des Wilden Westens. - Never - 2026-06-22 +Latex Endeavors (latex-endeavors) +Latex undoubtedly has some quirks. Some of them have a rather +unintuitive solution. In this article I cover some quirks and solutions +I have encountered. + Never - 9.1.2026 + +Random linux utilities (random-linux-utils) +Tricks and tools I learned about, while tweaking my Linux sytem or +trying to do productive things. + Never - 25.7.2025 Using rsync on Android to syncronise my Music library (rsync-android) As Spotify is getting enshittified by capitalism, keeping a music library is kind of essential. Here I use rsync to syncronise my library with my Android smartphone. - Never - 2026-01-12 - -Latex Endeavors (latex-endeavors) -Latex undoubtedly has some quirks. Some of them have a rather -unintuitive solution. In this article I cover some quirks and solutions -I have encountered. - Never - 2026-01-09 - -Random linux utilities (random-linux-utils) -Tricks and tools I learned about, while tweaking my Linux sytem or -trying to do productive things. - Never - 2025-07-25 + Never - 12.01.2026 ]8;;\ \ No newline at end of file diff --git a/build/index.html b/build/index.html index 75e4719..3d7ae73 100644 --- a/build/index.html +++ b/build/index.html @@ -1,190 +1,154 @@ - - + - - - - Home - - - - + + + + Home + + + - - - -
-
-

Home

-
-
-

Hello! I am Never and this is my little place on the - internet where I post the stuff that I am currently nerding - out about.

-

This Website itself is one of those projects, that I like - to tweak and tinker with. Maybe I’ll write an article about - its build system. It is also viewable via curl. - Just run

-
curl nevereverever.de
-

There also is an Atom Feed to stay updated about my - doings.

-
- -
-
- -
+

Never

+ +

Latex undoubtedly has some quirks. Some of +them have a rather unintuitive solution. In this article I cover some +quirks and solutions I have encountered.

+

9.1.2026

+ +
  • + +

    Tricks and tools I learned about, while +tweaking my Linux sytem or trying to do productive things.

    +

    25.7.2025

    +
  • +
  • + +

    As Spotify is getting enshittified by +capitalism, keeping a music library is kind of essential. Here I use +rsync to syncronise my library with my Android smartphone.

    +

    12.01.2026

    +
  • + + + + +
    + +

    +Previous +CUPS +Next +

    +
    - diff --git a/images/shark.png b/images/shark.png new file mode 100644 index 0000000..ddab225 Binary files /dev/null and b/images/shark.png differ diff --git a/images/shork.png b/images/shork.png deleted file mode 100644 index d8ede9b..0000000 Binary files a/images/shork.png and /dev/null differ diff --git a/images/shork.xcf b/images/shork.xcf deleted file mode 100644 index ba8e0c8..0000000 Binary files a/images/shork.xcf and /dev/null differ diff --git a/pandoc.md b/pandoc.md deleted file mode 100644 index 3b3e70b..0000000 --- a/pandoc.md +++ /dev/null @@ -1,209 +0,0 @@ ---- -title: Testing pandoc markdown capabilities -subtitle: Things I hope just work -author: Never -email: n.gude@posteo.de -date: 2025-07-25 -summary: Pandocs wonderful Markdown features tested out. ---- - -# Level 1 Heading -A link to a Heading [Level 4 Heading] followed by another paragraph. - -* fruits - - Everything is a fruit - + apples - - macintosh - - red delicious - + pears - + peaches -* vegetables - + broccoli - + chard - -1. first -2. second -3. third - i. subone - ii. subtwo - iii. subthree - -- [ ] an unchecked task list item -- [x] checked item - -Lorem _ipsum dolor_ sit amet, consectetur *adipi*scing elit. Integer nisl enim, condimentum ~~vitae lacus vel~~, semper efficitur est. Cras pretium porta luctus. __Nulla iaculis__ nisi at quam varius, et con**sequat** lorem blandit. Ut tincidunt leo sit amet velit lobortis, et blandit metus mollis. Nam H~2~O tristique ex a quam aliquet, eget 2^10^ vehicula sapien `rhoncus`. Aliquam `return 0;`{.c} sodales pretium auctor. [Aliquam convallis]{.smallcaps} sodales [elementum]{.mark}. - -```c -#include - -// TODO: A funny comment -int main() { - char greetings[] = {'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '!', '\0'}; - char greetings2[] = "Hello World!"; - - printf("%zu\n", sizeof(greetings)); - printf("%zu\n", sizeof(greetings2)); - - return 0; -} -``` - -Aenean eros lacus, volutpat at molestie vitae, pretium eu diam. Quisque sit $1 + 2 + 3 + \cdots + n$ amet nisl ut dolor congue sodales. - -$$ -\sum_{i=1}^{n} i = \frac{n (n + 1)}{2} -$$ - - - -## Level 2 Heading -> This is a block quote with -> two lines and a -> -> 1. List item -> 2. Another list item -> -> > And a nested block quote -> -> Yeah - -Term 1 - -: Definition 1 - -Term 2 with *inline markup* - -: Definition 2 - - { some code, part of Definition 2 } - - Third paragraph of definition 2. - -Term 1 - ~ Definition 1 - -Term 2 - ~ Definition 2a - ~ Definition 2b - - -### Level 3 Heading -A little poem - -| The limerick packs laughs anatomical -| In space that is quite economical. -| But the good ones I've seen -| So seldom are clean -| And the clean ones so seldom are comical - - -* * * * - -(@) My first example will be numbered (1). -(@good) My second example will be numbered (2). - -Explanation of examples. - -(@) My third example will be numbered (3). - -As (@good) illustrates, ... - ---------------- - -#### Level 4 Heading - Right Left Center Default -------- ------ ---------- ------- - 12 12 12 12 - 123 123 123 123 - 1 1 1 1 - -Table: Demonstration of simple table syntax. - -Following is a multiline table - -------------------------------------------------------------- - Centered Default Right Left - Header Aligned Aligned Aligned ------------ ------- --------------- ------------------------- - First row 12.0 Example of a row that - spans multiple lines. - - Second row 5.0 Here's another one. Note - the blank line between - rows. -------------------------------------------------------------- - -Table: Here's the caption. It, too, may span -multiple lines. - -Then we have a Grid table - -+---------------------+-----------------------+ -| Location | Temperature 1961-1990 | -| | in degree Celsius | -| +-------+-------+-------+ -| | min | mean | max | -+:====================+======:+======:+======:+ -| Antarctica | -89.2 | N/A | 19.8 | -+---------------------+-------+-------+-------+ -| Earth | -89.2 | 14 | 56.7 | -+---------------------+-------+-------+-------+ - -Table: Grid table - -An a Pipe table - -| Right | Left | Default | Center | -|------:|:-----|---------|:------:| -| 12 | 12 | 12 | 12 | -| 123 | 123 | 123 | 123 | -| 1 | 1 | 1 | 1 | - - : Demonstration of pipe table syntax. - -##### Level 5 Heading - - - - -[my label 1]: index.html "My title, optional" -[my label 2]: . -[my label 3]: https://fsf.org (The Free Software Foundation) -[my label 4]: index.html#articles 'A title in single quotes' - -Link to [my label 1] and [my label 2] and [my label 3] and [my label 4] - -This is an [inline link](/url), and here's [one with -a title](https://fsf.org "click here for a good time!") and [Write me!](mailto:sam@green.eggs.ham) - -![The wonderful shork](images/shork.png "the shork"){width=20%} - -Here is a footnote reference,[^1] and another.[^longnote] - -[^1]: Here is the footnote. - -[^longnote]: Here's one with multiple blocks. - - Subsequent paragraphs are indented to show that they -belong to the previous footnote. - - { some.code } - - The whole paragraph can be indented, or just the first - line. In this way, multi-paragraph footnotes work like - multi-paragraph list items. - -This paragraph won't be part of the note, because it -isn't indented. - -###### Level 6 Heading -::: Warning :::::: -This is a warning. - -::: Danger -This is a warning within a warning. -::: -:::::::::::::::::: - - diff --git a/pandoc/atom-template.xml b/pandoc/atom-template.xml deleted file mode 100644 index 3ddc2d4..0000000 --- a/pandoc/atom-template.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - $title$ - - $id$ - $updated$ - $date$ - - $author$ - -$if(subtitle)$ - $subtitle$ -$endif$ -$for(articles)$ - - $articles.title$ - - $articles.filename$ - $if(articles.updated)$$articles.updated$$else$$articles.date$$endif$ - $articles.date$ - - $articles.author$ - - $articles.summary$ - -$endfor$ - diff --git a/pandoc/html-template.html b/pandoc/html-template.html deleted file mode 100644 index beba886..0000000 --- a/pandoc/html-template.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - -$for(author-meta)$ - -$endfor$ -$if(date-meta)$ - -$endif$ -$if(keywords)$ - -$endif$ -$if(description-meta)$ - -$endif$ - $if(title-prefix)$$title-prefix$ – $endif$$pagetitle$ - - - -$for(css)$ - -$endfor$ -$for(header-includes)$ -$header-includes$ -$endfor$ -$if(math)$ -$if(mathjax)$ - -$endif$ -$math$ -$endif$ - - - -$for(include-before)$ -$include-before$ -$endfor$ - - -
    -$if(title)$ -
    -

    $title$

    -$if(subtitle)$ -

    $subtitle$

    -$endif$ -$for(author)$ -

    $author$

    -$endfor$ -$if(date)$ -

    $date$

    -$endif$ -$if(abstract)$ -
    -
    $abstract-title$
    - $abstract$ -
    -$endif$ -
    -$endif$ -$if(toc)$ - -$endif$ -
    - $body$ -
    -$if(articles)$ - -$endif$ -
    -
    - -
    -$for(include-after)$ -$include-after$ -$endfor$ - - - diff --git a/pandoc/metadata-template.json b/pandoc/meta-json-template.txt similarity index 100% rename from pandoc/metadata-template.json rename to pandoc/meta-json-template.txt diff --git a/pandoc/rss-template.xml b/pandoc/rss-template.xml deleted file mode 100644 index b453c4b..0000000 --- a/pandoc/rss-template.xml +++ /dev/null @@ -1,53 +0,0 @@ - - - - $if(title)$ - $title$ - $endif$ - $if(link)$ - $link$ - $endif$ - $if(description)$ - $description$ - $endif$ - $if(lang)$ - $lang$ - $endif$ - $if(pubdate)$ - $pubdate$ - $endif$ - $if(builddate)$ - $builddate$ - $endif$ - https://www.rssboard.org/rss-specification - pandoc - $if(editor)$ - $editor$ - $endif$ - $if(webmaster)$ - $webmaster$ - $endif$ - $for(articles)$ - - $if(articles.title)$ - $articles.title$ - $endif$ - $if(articles.email)$ - $articles.email$$if(articles.author)$ ($articles.author$)$endif$ - $endif$ - $if(articles.filename)$ - $link$/$articles.filename$.html - $endif$ - $if(articles.summary)$ - $articles.summary$ - $endif$ - $if(articles.pubdate)$ - $articles.pubdate$ - $endif$ - $if(articles.filename)$ - $articles.filename$ - $endif$ - - $endfor$ - - diff --git a/pandoc/solarized.theme b/pandoc/solarized.theme deleted file mode 100644 index d9b1ca6..0000000 --- a/pandoc/solarized.theme +++ /dev/null @@ -1,226 +0,0 @@ -{ - "metadata": { - "author": "Never Gude ", - "license": "Unlicense", - "name": "solarized", - "revision": 1 - }, - - "text-color": "#839496", - "background-color": "#002b36", - "line-number-color": "#586e75", - "line-number-background-color": "#073642", - - "text-styles": { - "Alert": { - "text-color": "#d33682", - "background-color": null, - "bold": false, - "italic": false, - "underline": false - }, - "Annotation": { - "text-color": "#dc322f", - "background-color": null, - "bold": false, - "italic": false, - "underline": false - }, - "Attribute": { - "text-color": "#dc322f", - "background-color": null, - "bold": false, - "italic": false, - "underline": false - }, - "BaseN": { - "text-color": "#2aa198", - "background-color": null, - "bold": false, - "italic": false, - "underline": false - }, - "BuiltIn": { - "text-color": "#b58900", - "background-color": null, - "bold": false, - "italic": false, - "underline": false - }, - "Char": { - "text-color": "#2aa198", - "background-color": null, - "bold": false, - "italic": false, - "underline": false - }, - "Comment": { - "text-color": "#586e75", - "background-color": null, - "bold": false, - "italic": true, - "underline": false - }, - "CommentVar": { - "text-color": "#268bd2", - "background-color": null, - "bold": false, - "italic": false, - "underline": false - }, - "Constant": { - "text-color": "#b58900", - "background-color": null, - "bold": false, - "italic": false, - "underline": false - }, - "ControlFlow": { - "text-color": "#859900", - "background-color": null, - "bold": false, - "italic": false, - "underline": false - }, - "DataType": { - "text-color": "#b58900", - "background-color": null, - "bold": false, - "italic": false, - "underline": false - }, - "DecVal": { - "text-color": "#2aa198", - "background-color": null, - "bold": false, - "italic": false, - "underline": false - }, - "Documentation": { - "text-color": "#586e75", - "background-color": null, - "bold": false, - "italic": true, - "underline": false - }, - "Error": { - "text-color": "#dc322f", - "background-color": null, - "bold": false, - "italic": false, - "underline": true - }, - "Extension": { - "text-color": "#b58900", - "background-color": null, - "bold": false, - "italic": false, - "underline": false - }, - "Float": { - "text-color": "#2aa198", - "background-color": null, - "bold": false, - "italic": false, - "underline": false - }, - "Function": { - "text-color": null, - "background-color": null, - "bold": false, - "italic": false, - "underline": false - }, - "Import": { - "text-color": "#cb4b16", - "background-color": null, - "bold": null, - "italic": false, - "underline": false - }, - "Information": { - "text-color": "#268bd2", - "background-color": null, - "bold": false, - "italic": false, - "underline": false - }, - "Keyword": { - "text-color": "#93a1a1", - "background-color": null, - "bold": true, - "italic": false, - "underline": false - }, - "Operator": { - "text-color": null, - "background-color": null, - "bold": false, - "italic": false, - "underline": false - }, - "Others": { - "text-color": null, - "background-color": null, - "bold": false, - "italic": false, - "underline": false - }, - "Preprocessor": { - "text-color": "#cb4b16", - "background-color": null, - "bold": false, - "italic": false, - "underline": false - }, - "RegionMarker": { - "text-color": "#cb4b16", - "background-color": null, - "bold": false, - "italic": false, - "underline": false - }, - "SpecialChar": { - "text-color": "#dc322f", - "background-color": null, - "bold": false, - "italic": false, - "underline": false - }, - "SpecialString": { - "text-color": "#b58900", - "background-color": null, - "bold": false, - "italic": false, - "underline": false - }, - "String": { - "text-color": "#2aa198", - "background-color": null, - "bold": false, - "italic": false, - "underline": false - }, - "Variable": { - "text-color": "#cb4b16", - "background-color": null, - "bold": false, - "italic": false, - "underline": false - }, - "VerbatimString": { - "text-color": "#dc322f", - "background-color": null, - "bold": false, - "italic": false, - "underline": false - }, - "Warning": { - "text-color": "#b58900", - "background-color": null, - "bold": false, - "italic": false, - "underline": false - } - } -} diff --git a/pandoc/ansi-template b/pandoc/template similarity index 79% rename from pandoc/ansi-template rename to pandoc/template index 65009f1..33ef978 100644 --- a/pandoc/ansi-template +++ b/pandoc/template @@ -26,7 +26,7 @@ $endif$ $if(articles.summary)$ $articles.summary$ $endif$ -$if(articles.author)$ $articles.author$$endif$$if(articles.date)$ - $articles.date$$endif$ +$if(articles.author)$ $articles.author$$endif$$if(articles.date)$ - $articles.date$$endif$ $endfor$ $endif$ diff --git a/pandoc/template.html b/pandoc/template.html new file mode 100644 index 0000000..2b5e99c --- /dev/null +++ b/pandoc/template.html @@ -0,0 +1,115 @@ + + + + + + +$for(author-meta)$ + +$endfor$ +$if(date-meta)$ + +$endif$ +$if(keywords)$ + +$endif$ +$if(description-meta)$ + +$endif$ + $if(title-prefix)$$title-prefix$ – $endif$$pagetitle$ + + +$for(css)$ + +$endfor$ +$for(header-includes)$ + $header-includes$ +$endfor$ +$if(math)$ +$if(mathjax)$ + +$endif$ + $math$ +$endif$ + + + + +$for(include-before)$ +$include-before$ +$endfor$ +$if(title)$ +
    +

    $title$

    +$if(subtitle)$ +

    $subtitle$

    +$endif$ +$for(author)$ +

    $author$

    +$endfor$ +$if(date)$ +

    $date$

    +$endif$ +$if(abstract)$ +
    +
    $abstract-title$
    +$abstract$ +
    +$endif$ +
    +
    +$endif$ +$if(toc)$ + +$endif$ +
    +$body$ +
    +$if(articles)$ + +$endif$ +
    +$for(include-after)$ +$include-after$ +$endfor$ +
    + +

    +Previous +CUPS +Next +

    +
    + + diff --git a/public_ansi/beans-and-cornbread b/public_ansi/beans-and-cornbread deleted file mode 100644 index 4df2e31..0000000 --- a/public_ansi/beans-and-cornbread +++ /dev/null @@ -1,71 +0,0 @@ - Bohnen und Maisbrot - - Never - - 2026-06-22 - - ──────────────────── - -BOHNEN - -Maße Zutaten -─────────────────────────────────── ─────────────────────────────────── -2 Zwiebeln -2 Knoblauchzehen -1 rote Chili (Peperoni/Chile de - árbol¹) - Kreuzkümmel - Speckwürfel (Optional) -1 l Brühe (Gemüse/Huhn/Rind) -1 Dose Kidneybohnen -1 Dose Pintobohnen oder andere Bohnen -1 Chile Ancho² oder geräuchertes - Paprikapulver - Petersilienstängel - Limettensaft - Salz -─────────────────────────────────── ─────────────────────────────────── - -Zubereitung - -1. Zwiebeln, Knoblauch, rote Chili, Kreuzkümmel und Speckwürfel - anbraten. - -2. Mit Brühe ablöschen und die Bohnen, Ancho Chili und - Petersilienstängel hinzufügen. Köcheln und etwas reduzieren lassen. - -3. Mit Salz und Limettensaft abschmecken. - -MAISBROT - -Maße Zutaten -─────────────────────────────────── ─────────────────────────────────── -1 Tasse Mehl -1 Tasse Maismehl -4 TL Backpulver - Salz -1/4 Tasse brauner Zucker -1 Ei -1/3 Tasse flüssige Butter -1 - 2 Tassen Milch oder Buttermilch -1/3 Tasse flüssige Butter - Speckwürfel (Optional) - Gehackte grüne Chilis (Optional) -─────────────────────────────────── ─────────────────────────────────── - -Zubereitung - -1. Trockene Zutaten mischen. - -2. Ei und Butter unterrühren. - -3. Schrittweise die Milch hinzugeben, bis eine zähflüssige Masse - entstanden ist. - - ──────────────────── - - 1. ]8;;https://en.wikipedia.org/wiki/Chile_de_%C3%A1rbol\Chile de árbol]8;;\; Eine kleine, scharfe, rote Chili. Meist getrocknet - zu finden. - - 2. ]8;;https://en.wikipedia.org/wiki/Poblano\Chile Ancho]8;;\; Eine große getrocknete Chili mit rauchigem Geschmack. -]8;;\ \ No newline at end of file diff --git a/public_ansi/index b/public_ansi/index index b382e6e..d127fcf 100644 --- a/public_ansi/index +++ b/public_ansi/index @@ -2,38 +2,25 @@ ──────────────────── -Hello! I am Never and this is my little place on the internet where I -post the stuff that I am currently nerding out about. - -This Website itself is one of those projects, that I like to tweak and -tinker with. Maybe I’ll write an article about its build system. It is -also viewable via  curl . Just run - - curl nevereverever.de - -There also is an Atom Feed to stay updated about my doings. +Hello World ARTICLES -Bohnen und Maisbrot (beans-and-cornbread) -Inspiriert von der Küche der Kuhtreiber des Wilden Westens. - Never - 2026-06-22 +Latex Endeavors (latex-endeavors) +Latex undoubtedly has some quirks. Some of them have a rather +unintuitive solution. In this article I cover some quirks and solutions +I have encountered. + Never - 9.1.2026 + +Random linux utilities (random-linux-utils) +Tricks and tools I learned about, while tweaking my Linux sytem or +trying to do productive things. + Never - 25.7.2025 Using rsync on Android to syncronise my Music library (rsync-android) As Spotify is getting enshittified by capitalism, keeping a music library is kind of essential. Here I use rsync to syncronise my library with my Android smartphone. - Never - 2026-01-12 - -Latex Endeavors (latex-endeavors) -Latex undoubtedly has some quirks. Some of them have a rather -unintuitive solution. In this article I cover some quirks and solutions -I have encountered. - Never - 2026-01-09 - -Random linux utilities (random-linux-utils) -Tricks and tools I learned about, while tweaking my Linux sytem or -trying to do productive things. - Never - 2025-07-25 + Never - 12.01.2026 ]8;;\ \ No newline at end of file diff --git a/public_ansi/latex-endeavors b/public_ansi/latex-endeavors index f6e4efd..27d3079 100644 --- a/public_ansi/latex-endeavors +++ b/public_ansi/latex-endeavors @@ -3,7 +3,7 @@ Never - 2026-01-09 + 9.1.2026 ──────────────────── diff --git a/public_ansi/pandoc b/public_ansi/pandoc deleted file mode 100644 index 862b475..0000000 --- a/public_ansi/pandoc +++ /dev/null @@ -1,218 +0,0 @@ - Testing pandoc markdown capabilities - Things I hope just work - - Never - - 2025-07-25 - - ──────────────────── - -LEVEL 1 HEADING - -A link to a Heading ]8;;#level-4-heading\Level 4 Heading]8;;\ followed by another paragraph. - -• fruits - - Everything is a fruit - - • apples - - • macintosh - - • red delicious - - • pears - - • peaches - -• vegetables - - • broccoli - - • chard - -1. first - -2. second - -3. third - - i. subone - - ii. subtwo - - iii. subthree - -• ☐ an unchecked task list item - -• ☒ checked item - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nisl -enim, condimentum vitae lacus vel, semper efficitur est. Cras pretium -porta luctus. Nulla iaculis nisi at quam varius, et consequat lorem -blandit. Ut tincidunt leo sit amet velit lobortis, et blandit metus -mollis. Nam H₂O tristique ex a quam aliquet, eget 2¹⁰ vehicula sapien - rhoncus . Aliquam  return 0;  sodales pretium auctor. Aliquam convallis -sodales elementum. - - 1 #include  - 2 - 3 // TODO: A funny comment - 4 int main() { - 5  char greetings[] = {'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '!', '\0'}; - 6  char greetings2[] = "Hello World!"; - 7 - 8  printf("%zu\n", sizeof(greetings)); - 9  printf("%zu\n", sizeof(greetings2)); - 10 - 11  return 0; - 12 } - -Aenean eros lacus, volutpat at molestie vitae, pretium eu diam. Quisque -sit 1 + 2 + 3 + ⋯ + n amet nisl ut dolor congue sodales. - -$$ -\sum_{i=1}^{n} i = \frac{n (n + 1)}{2} -$$ - -Level 2 Heading - -│ This is a block quote with two lines and a -│ -│ 1. List item -│ -│ 2. Another list item -│ -│ │ And a nested block quote -│ -│ Yeah - -Term 1 - Definition 1 - -Term 2 with inline markup - Definition 2 - - { some code, part of Definition 2 } - - Third paragraph of definition 2. - -Term 1 - Definition 1 - -Term 2 - Definition 2a - - Definition 2b - -Level 3 Heading - -A little poem - -The limerick packs laughs anatomical -In space that is quite economical. -   But the good ones I’ve seen -   So seldom are clean -And the clean ones so seldom are comical - -──────────────────── - -(1) My first example will be numbered (1). - -(2) My second example will be numbered (2). - -Explanation of examples. - -(3) My third example will be numbered (3). - -As (2) illustrates, … - -──────────────────── - -Level 4 Heading - -Right Left Center Default -───────────────── ───────────────── ───────────────── ───────────────── -12 12 12 12 -123 123 123 123 -1 1 1 1 -───────────────── ───────────────── ───────────────── ───────────────── - - Demonstration of simple table syntax. - -Following is a multiline table - -Centered Default Right Aligned Left Aligned -Header Aligned -─────────── ─────── ─────────────── ──────────────────────── -First row 12.0 Example of a row that - spans multiple lines. -Second row 5.0 Here’s another one. Note - the blank line between - rows. -─────────── ─────── ─────────────── ──────────────────────── - - Here’s the caption. It, too, may span multiple lines. - -Then we have a Grid table - -Location Temperature 1961-1990 - in degree Celsius -min mean max -───────────────────── ─────── ─────── ─────── -Antarctica -89.2 N/A 19.8 -Earth -89.2 14 56.7 -───────────────────── ─────── ─────── ─────── - - Grid table - -An a Pipe table - -Right Left Default Center -───────────────── ───────────────── ───────────────── ───────────────── -12 12 12 12 -123 123 123 123 -1 1 1 1 -───────────────── ───────────────── ───────────────── ───────────────── - - Demonstration of pipe table syntax. - -Level 5 Heading - -]8;;https://google.com\https://google.com]8;;\ - -]8;;mailto:sam@green.eggs.ham\sam@green.eggs.ham]8;;\ - -Link to ]8;;index.html\my label 1]8;;\ and ]8;;.\my label 2]8;;\ and ]8;;https://fsf.org\my label 3]8;;\ and ]8;;index.html#articles\my label 4]8;;\ - -This is an ]8;;/url\inline link]8;;\, and here’s ]8;;https://fsf.org\one with a title]8;;\ and ]8;;mailto:sam@green.eggs.ham\Write me!]8;;\ - -[image] - - The wonderful shork - -Here is a footnote reference,¹ and another.² - -This paragraph won’t be part of the note, because it isn’t indented. - -Level 6 Heading - -This is a warning. - -This is a warning within a warning. - - ──────────────────── - - 1. Here is the footnote. - - 2. Here’s one with multiple blocks. - - Subsequent paragraphs are indented to show that they belong to the - previous footnote. - - { some.code } - - The whole paragraph can be indented, or just the first line. In - this way, multi-paragraph footnotes work like multi-paragraph list - items. -]8;;\ \ No newline at end of file diff --git a/public_ansi/random-linux-utils b/public_ansi/random-linux-utils index 331d419..359dd0b 100644 --- a/public_ansi/random-linux-utils +++ b/public_ansi/random-linux-utils @@ -3,7 +3,7 @@ Never - 2025-07-25 + 25.7.2025 ──────────────────── diff --git a/public_ansi/rsync-android b/public_ansi/rsync-android index 5e96bd6..4f04da1 100644 --- a/public_ansi/rsync-android +++ b/public_ansi/rsync-android @@ -2,7 +2,7 @@ Never - 2026-01-12 + 12.01.2026 ──────────────────── @@ -89,4 +89,28 @@ config. Now on your Linux machine, syncronise your Music library with rsync. rsync -av -e "ssh -p 8022" ~/Music <username>@<ip_address>:/data/data/com.termux/files/home/storage/music + +Refreshing the Android MediaStore + +Android uses a Database to store files. In order to play your music, +this database needs to be refreshed. This can be achieved by a reboot or +by using adb to manually refresh it. + + sudo dnf install adb + +Connect the Android device via USB and see if it is listed. + + adb devices + +If it is, restart adb in TCP mode with port 5555 + + adb tcpip 5555 + +Connect to the device using its . + + adb connect <ip_address> + +Refresh MediaStore. + + adb shell am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN -d file:///data/data/com.termux/files/home/storage/music/ ]8;;\ \ No newline at end of file diff --git a/public_html/eh/eh/eh/eh-eh/atom.xml b/public_html/eh/eh/eh/eh-eh/atom.xml deleted file mode 100644 index 22fc4b8..0000000 --- a/public_html/eh/eh/eh/eh-eh/atom.xml +++ /dev/null @@ -1,63 +0,0 @@ - - - nevereverever.de - - nevereverever.de - 2026-06-22T22:12+02:00 - 2026-03-10 - - Never - - Here I post random stuff. - - Bohnen und Maisbrot - - beans-and-cornbread - 2026-06-22T20:47+02:00 - 2026-06-22 - - Never - - Inspiriert von der Küche der Kuhtreiber des Wilden -Westens. - - - Using rsync on Android to syncronise my Music -library - - rsync-android - 2026-01-12T16:24+01:00 - 2026-01-12 - - Never - - As Spotify is getting enshittified by capitalism, -keeping a music library is kind of essential. Here I use rsync to -syncronise my library with my Android smartphone. - - - Latex Endeavors - - latex-endeavors - 2026-01-10T16:23+01:00 - 2026-01-09 - - Never - - Latex undoubtedly has some quirks. Some of them have a -rather unintuitive solution. In this article I cover some quirks and -solutions I have encountered. - - - Random linux utilities - - random-linux-utils - 2025-07-25T16:24+01:00 - 2025-07-25 - - Never - - Tricks and tools I learned about, while tweaking my -Linux sytem or trying to do productive things. - - diff --git a/public_html/eh/eh/eh/eh-eh/beans-and-cornbread.html b/public_html/eh/eh/eh/eh-eh/beans-and-cornbread.html deleted file mode 100644 index da06adf..0000000 --- a/public_html/eh/eh/eh/eh-eh/beans-and-cornbread.html +++ /dev/null @@ -1,227 +0,0 @@ - - - - - - - - - - Bohnen und Maisbrot - - - - - - - - - -
    -
    -

    Bohnen und Maisbrot

    -

    Never

    -

    2026-06-22

    -
    - -
    -

    Bohnen

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    MaßeZutaten
    2Zwiebeln
    2Knoblauchzehen
    1rote Chili (Peperoni/Chile de - árbol1)
    Kreuzkümmel
    Speckwürfel (Optional)
    1 lBrühe (Gemüse/Huhn/Rind)
    1 DoseKidneybohnen
    1 DosePintobohnen oder andere - Bohnen
    1Chile Ancho2 oder geräuchertes - Paprikapulver
    Petersilienstängel
    Limettensaft
    Salz
    -

    Zubereitung

    -
      -
    1. Zwiebeln, Knoblauch, rote Chili, Kreuzkümmel und - Speckwürfel anbraten.

    2. -
    3. Mit Brühe ablöschen und die Bohnen, Ancho Chili und - Petersilienstängel hinzufügen. Köcheln und etwas reduzieren - lassen.

    4. -
    5. Mit Salz und Limettensaft abschmecken.

    6. -
    -

    Maisbrot

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    MaßeZutaten
    1 TasseMehl
    1 TasseMaismehl
    4 TLBackpulver
    Salz
    1/4 Tassebrauner Zucker
    1Ei
    1/3 Tasseflüssige Butter
    1 - 2 TassenMilch oder Buttermilch
    1/3 Tasseflüssige Butter
    Speckwürfel (Optional)
    Gehackte grüne Chilis - (Optional)
    -

    Zubereitung

    -
      -
    1. Trockene Zutaten mischen.

    2. -
    3. Ei und Butter unterrühren.

    4. -
    5. Schrittweise die Milch hinzugeben, bis eine - zähflüssige Masse entstanden ist.

    6. -
    -
    -
    -
      -
    1. Chile - de árbol; Eine kleine, scharfe, rote Chili. Meist - getrocknet zu finden.↩︎

    2. -
    3. Chile - Ancho; Eine große getrocknete Chili mit rauchigem - Geschmack.↩︎

    4. -
    -
    -
    -
    -
    - -
    - - - diff --git a/public_html/eh/eh/eh/eh-eh/images/shark.png b/public_html/eh/eh/eh/eh-eh/images/shark.png new file mode 100644 index 0000000..ddab225 Binary files /dev/null and b/public_html/eh/eh/eh/eh-eh/images/shark.png differ diff --git a/public_html/eh/eh/eh/eh-eh/images/shork.png b/public_html/eh/eh/eh/eh-eh/images/shork.png deleted file mode 100644 index d8ede9b..0000000 Binary files a/public_html/eh/eh/eh/eh-eh/images/shork.png and /dev/null differ diff --git a/public_html/eh/eh/eh/eh-eh/images/shork.xcf b/public_html/eh/eh/eh/eh-eh/images/shork.xcf deleted file mode 100644 index ba8e0c8..0000000 Binary files a/public_html/eh/eh/eh/eh-eh/images/shork.xcf and /dev/null differ diff --git a/public_html/eh/eh/eh/eh-eh/index.html b/public_html/eh/eh/eh/eh-eh/index.html index 75e4719..3d7ae73 100644 --- a/public_html/eh/eh/eh/eh-eh/index.html +++ b/public_html/eh/eh/eh/eh-eh/index.html @@ -1,190 +1,154 @@ - - + - - - - Home - - - - + + + + Home + + + - - - -
    -
    -

    Home

    -
    -
    -

    Hello! I am Never and this is my little place on the - internet where I post the stuff that I am currently nerding - out about.

    -

    This Website itself is one of those projects, that I like - to tweak and tinker with. Maybe I’ll write an article about - its build system. It is also viewable via curl. - Just run

    -
    curl nevereverever.de
    -

    There also is an Atom Feed to stay updated about my - doings.

    -
    - -
    -
    - -
    +

    Never

    + +

    Latex undoubtedly has some quirks. Some of +them have a rather unintuitive solution. In this article I cover some +quirks and solutions I have encountered.

    +

    9.1.2026

    + +
  • + +

    Tricks and tools I learned about, while +tweaking my Linux sytem or trying to do productive things.

    +

    25.7.2025

    +
  • +
  • + +

    As Spotify is getting enshittified by +capitalism, keeping a music library is kind of essential. Here I use +rsync to syncronise my library with my Android smartphone.

    +

    12.01.2026

    +
  • + + + + +
    + +

    +Previous +CUPS +Next +

    +
    - diff --git a/public_html/eh/eh/eh/eh-eh/latex-endeavors.html b/public_html/eh/eh/eh/eh-eh/latex-endeavors.html index bfdae28..6e860b1 100644 --- a/public_html/eh/eh/eh/eh-eh/latex-endeavors.html +++ b/public_html/eh/eh/eh/eh-eh/latex-endeavors.html @@ -1,76 +1,68 @@ - - + - - - - - - Latex Endeavors - - - - + + + + + Latex Endeavors + + + - - - -
    -
    -

    Latex Endeavors

    -

    Some unintuitive quirks of Latex

    -

    Never

    -

    2026-01-09

    -
    - -
    -

    BibLaTeX and Biber

    -

    Biber doesn’t run

    -

    Biber doens’t run if the (fedora) package - libxcrypt-compat is missing. It will fail with - the error message

    -
    biber: error while loading shared libraries: libcrypt.so.1: cannot open shared object file: No such file or directory
    -
    -
    -
    - -
    + + +
    +

    Latex Endeavors

    +

    Some unintuitive quirks of Latex

    +

    Never

    +

    9.1.2026

    +
    +
    + +
    +

    BibLaTeX and Biber

    +

    Biber doesn’t run

    +

    Biber doens’t run if the (fedora) package +libxcrypt-compat is missing. It will fail with the error +message

    +
    biber: error while loading shared libraries: libcrypt.so.1: cannot open shared object file: No such file or directory
    +
    +
    +
    + +

    +Previous +CUPS +Next +

    +
    - diff --git a/public_html/eh/eh/eh/eh-eh/pandoc.html b/public_html/eh/eh/eh/eh-eh/pandoc.html deleted file mode 100644 index f86495e..0000000 --- a/public_html/eh/eh/eh/eh-eh/pandoc.html +++ /dev/null @@ -1,451 +0,0 @@ - - - - - - - - - - Testing pandoc markdown capabilities - - - - - - - - - -
    -
    -

    Testing pandoc markdown capabilities

    -

    Things I hope just work

    -

    Never

    -

    2025-07-25

    -
    - -
    -

    Level 1 Heading

    -

    A link to a Heading Level 4 - Heading followed by another paragraph.

    -
      -
    • fruits

      -

      Everything is a fruit

      -
        -
      • apples -
          -
        • macintosh
        • -
        • red delicious
        • -
      • -
      • pears
      • -
      • peaches
      • -
    • -
    • vegetables

      -
        -
      • broccoli
      • -
      • chard
      • -
    • -
    -
      -
    1. first
    2. -
    3. second
    4. -
    5. third -
        -
      1. subone
      2. -
      3. subtwo
      4. -
      5. subthree
      6. -
    6. -
    -
      -
    • -
    • -
    -

    Lorem ipsum dolor sit amet, consectetur - adipiscing elit. Integer nisl enim, condimentum - vitae lacus vel, semper efficitur est. Cras - pretium porta luctus. Nulla iaculis nisi at - quam varius, et consequat lorem blandit. Ut - tincidunt leo sit amet velit lobortis, et blandit metus - mollis. Nam H2O tristique ex a quam aliquet, eget - 210 vehicula sapien rhoncus. Aliquam - return 0; - sodales pretium auctor. Aliquam - convallis sodales elementum.

    -
    #include <stdio.h>
    -
    -// TODO: A funny comment
    -int main() {
    -    char greetings[] = {'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '!', '\0'};
    -    char greetings2[] = "Hello World!";
    -
    -    printf("%zu\n", sizeof(greetings));
    -    printf("%zu\n", sizeof(greetings2));
    -
    -    return 0;
    -}
    -

    Aenean eros lacus, volutpat at molestie vitae, pretium eu - diam. Quisque sit - 1+2+3++n1 + 2 + 3 + \cdots + n - amet nisl ut dolor congue sodales.

    -

    i=1ni=n(n+1)2 - \sum_{i=1}^{n} i = \frac{n (n + 1)}{2} -

    -

    Level 2 Heading

    -
    -

    This is a block quote with two lines and a

    -
      -
    1. List item
    2. -
    3. Another list item
    4. -
    -
    -

    And a nested block quote

    -
    -

    Yeah

    -
    -
    -
    Term 1
    -
    -

    Definition 1

    -
    -
    Term 2 with inline markup
    -
    -

    Definition 2

    -
    { some code, part of Definition 2 }
    -

    Third paragraph of definition 2.

    -
    -
    Term 1
    -
    - Definition 1 -
    -
    Term 2
    -
    - Definition 2a -
    -
    - Definition 2b -
    -
    -

    Level 3 Heading

    -

    A little poem

    -
    The limerick packs laughs - anatomical
    - In space that is quite economical.
    -    But the good ones I’ve seen
    -    So seldom are clean
    - And the clean ones so seldom are comical
    -
    -
      -
    1. My first example will be numbered (1).
    2. -
    3. My second example will be numbered (2).
    4. -
    -

    Explanation of examples.

    -
      -
    1. My third example will be numbered (3).
    2. -
    -

    As (2) illustrates, …

    -
    -

    Level 4 Heading

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Demonstration of simple table syntax.
    RightLeftCenterDefault
    12121212
    123123123123
    1111
    -

    Following is a multiline table

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Here’s the caption. It, too, may span multiple - lines.
    Centered HeaderDefault AlignedRight AlignedLeft Aligned
    Firstrow12.0Example of a row that spans - multiple lines.
    Secondrow5.0Here’s another one. Note the - blank line between rows.
    -

    Then we have a Grid table

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Grid table
    LocationTemperature - 1961-1990 in degree Celsius
    minmeanmax
    Antarctica-89.2N/A19.8
    Earth-89.21456.7
    -

    An a Pipe table

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Demonstration of pipe table syntax.
    RightLeftDefaultCenter
    12121212
    123123123123
    1111
    -
    Level 5 Heading
    -

    https://google.com

    -

    -

    Link to my label 1 and my - label 2 and my label 3 and my label 4

    -

    This is an inline link, and here’s one with a title and - Write me!

    -
    - The wonderful shork - -
    -

    Here is a footnote reference,1 and another.2

    -

    This paragraph won’t be part of the note, because it - isn’t indented.

    -
    Level 6 Heading
    -
    -

    This is a warning.

    -
    -

    This is a warning within a warning.

    -
    -
    -
    -
    -
      -
    1. Here is the footnote.↩︎

    2. -
    3. Here’s one with multiple blocks.

      -

      Subsequent paragraphs are indented to show that they - belong to the previous footnote.

      -
      { some.code }
      -

      The whole paragraph can be indented, or just the first - line. In this way, multi-paragraph footnotes work like - multi-paragraph list items.↩︎

    4. -
    -
    -
    -
    -
    - -
    - - - diff --git a/public_html/eh/eh/eh/eh-eh/random-linux-utils.html b/public_html/eh/eh/eh/eh-eh/random-linux-utils.html index 4030c81..a04f711 100644 --- a/public_html/eh/eh/eh/eh-eh/random-linux-utils.html +++ b/public_html/eh/eh/eh/eh-eh/random-linux-utils.html @@ -1,147 +1,134 @@ - - + - - - - - - Random linux utilities - - - - + + + + + Random linux utilities + + + - - - -
    -
    -

    Random linux utilities

    -

    Neat things I picked up along the -way

    -

    Never

    -

    2025-07-25

    -
    - -
    -

    Merge pdfs

    -

    Using Ghostscript

    -

    Ghostscript has a feature to merge multiple pdf files - into one. Although ImageMagick also has this feature, I - prefer this one, as it doesn’t rasterize and scales down the - pdf files.

    -
    gs -dNOPAUSE -sDEVICE=pdfwrite \
    +
    +
    +
    +

    Random linux utilities

    +

    Neat things I picked up along the way

    +

    Never

    +

    25.7.2025

    +
    +
    + +
    +

    Merge pdfs

    +

    Using Ghostscript

    +

    Ghostscript has a feature to merge multiple pdf files into one. +Although ImageMagick also has this feature, I prefer this one, as it +doesn’t rasterize and scales down the pdf files.

    +
    gs -dNOPAUSE -sDEVICE=pdfwrite \
         -sOUTPUTFILE=output.pdf \
         -dBATCH 1.pdf 2.pdf
    -
    -
    -
    - -
    + + +
    + +

    +Previous +CUPS +Next +

    +
    - diff --git a/public_html/eh/eh/eh/eh-eh/rsync-android.html b/public_html/eh/eh/eh/eh-eh/rsync-android.html index 8cee590..d291267 100644 --- a/public_html/eh/eh/eh/eh-eh/rsync-android.html +++ b/public_html/eh/eh/eh/eh-eh/rsync-android.html @@ -1,160 +1,148 @@ - - + - - - - - - Using rsync on Android to syncronise my Music library - - - - + + + + + Using rsync on Android to syncronise my Music library + + + - - - -
    -
    -

    Using rsync on Android to syncronise my -Music library

    -

    Never

    -

    2026-01-12

    -
    - -
    -

    Setup Termux

    -

    Install Termux using F-Droid.

    -

    Update software repos.

    -
    pkg update
    -

    Grant file access permissions using.

    -
    termux-setup-storage
    -

    Establishing an ssh - connection

    -

    If network (such as eduroam) is blocking ssh trafic - between machines, open a Wi-Fi Hotspot on your Linux machine - and connect the Android device to it before using - rsync or ssh.

    -

    Configuring Android

    -

    Install the openssh server on Termux.

    -
    pkg install openssh
    -

    Start the ssh server daemon.

    -
    sshd
    -

    Get the ip address of the Android machine (in the - Hotspot).

    -
    ifconfig
    -
    Warning: cannot open /proc/net/dev (Permission denied). Limited output.
    +
    +
    +
    +

    Using rsync on Android to syncronise my Music +library

    +

    Never

    +

    12.01.2026

    +
    +
    + +
    +

    Setup Termux

    +

    Install Termux using F-Droid.

    +

    Update software repos.

    +
    pkg update
    +

    Grant file access permissions using.

    +
    termux-setup-storage
    +

    Establishing an ssh +connection

    +

    If network (such as eduroam) is blocking ssh trafic between machines, +open a Wi-Fi Hotspot on your Linux machine and connect the Android +device to it before using rsync or ssh.

    +

    Configuring Android

    +

    Install the openssh server on Termux.

    +
    pkg install openssh
    +

    Start the ssh server daemon.

    +
    sshd
    +

    Get the ip address of the Android machine (in the Hotspot).

    +
    ifconfig
    +
    Warning: cannot open /proc/net/dev (Permission denied). Limited output.
     lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
             inet 127.0.0.1  netmask 255.0.0.0
             unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 1000  (UNSPEC)
    @@ -166,49 +154,62 @@ rmnet0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1280
     wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
             inet 10.42.0.200  netmask 255.255.255.0  broadcast 10.42.0.210
             unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 1000  (UNSPEC)
    -

    In this case 10.42.0.200.

    -

    The ssh server should now be running and listening on - port 8022. You can check by running

    -
    nmap -Pn <ip_address>
    -

    For me <ip_address> whould be - 10.42.0.200.

    -

    Get the username.

    -
    whoami
    -
    u0_a700
    -

    Set a password for this user.

    -
    passwd
    -

    Connecting to Android - via ssh

    -

    Make sure you have an ssh key pair on the Linux system. - If not generate one using ssh-keygen.

    -

    Now connect to Android by ssh.

    -
    ssh <username>@<ip_address> -p 8022
    -

    Syncronising files - with rsync

    -

    Install rsync on Termux and Linux. Make sure - to keep your own openssl config.

    -
    pkg install rsync
    -

    Now on your Linux machine, syncronise your Music library - with rsync.

    -
    rsync -av -e "ssh -p 8022" ~/Music <username>@<ip_address>:/data/data/com.termux/files/home/storage/music
    -
    -
    -
    - -
    +

    In this case 10.42.0.200.

    +

    The ssh server should now be running and listening on port 8022. You +can check by running

    +
    nmap -Pn <ip_address>
    +

    For me <ip_address> whould be 10.42.0.200.

    +

    Get the username.

    +
    whoami
    +
    u0_a700
    +

    Set a password for this user.

    +
    passwd
    +

    Connecting to Android via +ssh

    +

    Make sure you have an ssh key pair on the Linux system. If not +generate one using ssh-keygen.

    +

    Now connect to Android by ssh.

    +
    ssh <username>@<ip_address> -p 8022
    +

    Syncronising files with +rsync

    +

    Install rsync on Termux and Linux. Make sure to keep +your own openssl config.

    +
    pkg install rsync
    +

    Now on your Linux machine, syncronise your Music library with +rsync.

    +
    rsync -av -e "ssh -p 8022" ~/Music <username>@<ip_address>:/data/data/com.termux/files/home/storage/music
    +

    Refreshing the Android +MediaStore

    +

    Android uses a Database to store files. In order to play your music, +this database needs to be refreshed. This can be achieved by a reboot or +by using adb to manually refresh it.

    +
    sudo dnf install adb
    +

    Connect the Android device via USB and see if it is listed.

    +
    adb devices
    +

    If it is, restart adb in TCP mode with port 5555

    +
    adb tcpip 5555
    +

    Connect to the device using its .

    +
    adb connect <ip_address>
    +

    Refresh MediaStore.

    +
    adb shell am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN -d file:///data/data/com.termux/files/home/storage/music/
    + + +
    + +

    +Previous +CUPS +Next +

    +
    - diff --git a/public_html/eh/eh/eh/eh-eh/scripts/shork.js b/public_html/eh/eh/eh/eh-eh/scripts/shork.js deleted file mode 100644 index 4556b71..0000000 --- a/public_html/eh/eh/eh/eh-eh/scripts/shork.js +++ /dev/null @@ -1,102 +0,0 @@ -let shork_image = document.getElementById("shork"); - -let zoomies = 4; -let turnies = 0.2; - -let shork = {x: 4, y: 8}; -let rotation = 0; -let shork_init = transform(shork, -rotation); -shork_image.style.transform = `matrix(${shork_init.a}, ${shork_init.b}, ${shork_init.c}, ${shork_init.d}, ${shork_init.x}, ${shork_init.y})`; - -let mouse = {x: 0, y: 0}; -onmousemove = function(e){ - mouse.x = e.pageX; - mouse.y = e.pageY; -} - -let direction = 0; -let movement = 0; -let target = 0; - -function move() { - direction = vector(shork, mouse); - - if (norm(direction) >= 4) { - movement = scalar(angletovec(rotation), zoomies * norm(direction)/128); - shork = add(shork, movement); - target = angle(direction); - rotation = interpolate(rotation, target, turnies) + Math.sin(norm(movement))/8; - } - - let trans = transform(shork, -rotation); - shork_image.style.transform = `matrix(${trans.a}, ${trans.b}, ${trans.c}, ${trans.d}, ${trans.x}, ${trans.y})`; - - setTimeout(move, 30); -} - -shork_image.addEventListener("click", function(e) {move()}, {once: true}); - -function vector(a, b) { - return { - x: b.x - a.x, - y: b.y - a.y - }; -} - -function angle(v) { - return Math.atan2(v.y, v.x); -} - -function angletovec(a) { - return {x: Math.cos(a), y: Math.sin(a)}; -} - -function norm(v) { - return Math.sqrt(Math.pow(v.x, 2) + Math.pow(v.y, 2)); -} - -function unit(v) { - let length = norm(v); - - if (length == 0) return {x: 0, y: 0}; - - return {x: v.x / length, y: v.y / length}; -} - -function scalar(v, a) { - return {x: v.x * a, y: v.y * a}; -} - -function add(v, u) { - return {x: v.x + u.x, y: v.y + u.y}; -} - -function round(v) { - return {x: Math.round(v.x), y: Math.round(v.y)}; -} - -function clamp(a, min, max) { - if (a < min) return min; - if (a > max) return max; - return a; -} - -function interpolate(a, b, c) { - let d = Math.abs(a - b) - if (d > Math.abs(a - b - 2 * Math.PI)) a = a - 2 * Math.PI; - if (d > Math.abs(a - b + 2 * Math.PI)) a = a + 2 * Math.PI; - - if (a < b) a = clamp(a + c, a, b); - if (a > b) a = clamp(a - c, b, a); - - a += 3 * Math.PI; - a = a % (2 * Math.PI); - a -= Math.PI; - - return a; -} - -function transform(v, a) { - return {a: Math.cos(a), b: -Math.sin(a), c: Math.sin(a), d: Math.cos(a), x: v.x, y: v.y}; -} - diff --git a/public_html/eh/eh/eh/eh-eh/styles/images/cups_left.svg b/public_html/eh/eh/eh/eh-eh/styles/images/cups_left.svg new file mode 100644 index 0000000..2412435 --- /dev/null +++ b/public_html/eh/eh/eh/eh-eh/styles/images/cups_left.svg @@ -0,0 +1,79 @@ + + + + + + + + + + + diff --git a/public_html/eh/eh/eh/eh-eh/styles/images/cups_left_dark.svg b/public_html/eh/eh/eh/eh-eh/styles/images/cups_left_dark.svg new file mode 100644 index 0000000..7ae7a67 --- /dev/null +++ b/public_html/eh/eh/eh/eh-eh/styles/images/cups_left_dark.svg @@ -0,0 +1,101 @@ + + + + + + + + + + + + diff --git a/public_html/eh/eh/eh/eh-eh/styles/images/cups_logo.svg b/public_html/eh/eh/eh/eh-eh/styles/images/cups_logo.svg new file mode 100644 index 0000000..cecb1db --- /dev/null +++ b/public_html/eh/eh/eh/eh-eh/styles/images/cups_logo.svg @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public_html/eh/eh/eh/eh-eh/styles/images/cups_logo_dark.svg b/public_html/eh/eh/eh/eh-eh/styles/images/cups_logo_dark.svg new file mode 100644 index 0000000..d01e673 --- /dev/null +++ b/public_html/eh/eh/eh/eh-eh/styles/images/cups_logo_dark.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public_html/eh/eh/eh/eh-eh/styles/images/cups_right.svg b/public_html/eh/eh/eh/eh-eh/styles/images/cups_right.svg new file mode 100644 index 0000000..7da7c88 --- /dev/null +++ b/public_html/eh/eh/eh/eh-eh/styles/images/cups_right.svg @@ -0,0 +1,79 @@ + + + + + + + + + + + diff --git a/public_html/eh/eh/eh/eh-eh/styles/images/cups_right_dark.svg b/public_html/eh/eh/eh/eh-eh/styles/images/cups_right_dark.svg new file mode 100644 index 0000000..5770ecf --- /dev/null +++ b/public_html/eh/eh/eh/eh-eh/styles/images/cups_right_dark.svg @@ -0,0 +1,101 @@ + + + + + + + + + + + + diff --git a/public_html/eh/eh/eh/eh-eh/styles/images/shark-top-small.png b/public_html/eh/eh/eh/eh-eh/styles/images/shark-top-small.png index a08fa23..56e8624 100644 Binary files a/public_html/eh/eh/eh/eh-eh/styles/images/shark-top-small.png and b/public_html/eh/eh/eh/eh-eh/styles/images/shark-top-small.png differ diff --git a/public_html/eh/eh/eh/eh-eh/styles/images/shark-top-small.xcf b/public_html/eh/eh/eh/eh-eh/styles/images/shark-top-small.xcf index effd994..bd0e140 100644 Binary files a/public_html/eh/eh/eh/eh-eh/styles/images/shark-top-small.xcf and b/public_html/eh/eh/eh/eh-eh/styles/images/shark-top-small.xcf differ diff --git a/public_html/eh/eh/eh/eh-eh/styles/style.css b/public_html/eh/eh/eh/eh-eh/styles/style.css index 4d86cb3..e6e14cc 100644 --- a/public_html/eh/eh/eh/eh-eh/styles/style.css +++ b/public_html/eh/eh/eh/eh-eh/styles/style.css @@ -1,173 +1,114 @@ :root { - --foreground: #586e75; - --background: #fdf6e3; - --html-border: #eee8d5; - --html-background: #268bd2; - --body-background: linear-gradient(to bottom, #2aa198, #268bd2); - --blockquote-text: #657b83; - --blockquote-border: #eee8d5; - --button-primary: #fdf6e3; - --button-secondary: #eee8d5; - --code-color: #657b83; - --code-background: #fdf6e3; - --code-line-number-color: #93a1a1; - --code-line-number-background: #eee8d5; - --code-comment-color: #93a1a1; - --code-keyword-color: #586e75; + --foreground: #1a1a1a; + --background: #fdfdfdf0; + --border: #c9c9c9; + --html-background: #e3e3e3; + --blockquote-text: #606060; + --blockquote-border: #e6e6e6; + --button-border: #e3e3e3; + --button-background: #d0d0d0; } @media (prefers-color-scheme: dark) { :root { - --foreground: #93a1a1; - --background: #002b36; - --html-border: #073642; - --html-background: #6c71c4; - --body-background: linear-gradient(to bottom, #268bd2, #6c71c4); - --blockquote-text: #839496; - --blockquote-border: #073642; - --button-primary: #073642; - --button-secondary: #002b36; - --code-color: #839496; - --code-background: #002b36; - --code-line-number-color: #586e75; - --code-line-number-background: #073642; - --code-comment-color: #586e75; - --code-keyword-color: #93a1a1; + --foreground: #fdfdfd; + --background: #1a1a1af0; + --border: #4c4c4c; + --html-background: #303030; + --blockquote-text: #e6e6e6; + --blockquote-border: #606060; + --button-border: #4c4c4c; + --button-background: #404040; } } -pre.numberSource code > span > a:first-child::before { - background-color: var(--code-line-number-background); - color: var(--code-line-number-color); -} - -pre.numberSource { - margin-left: 3em; - border-left: none; - padding-left: 4px; -} - -@media screen { - pre > code.sourceCode > span > a:first-child::before { text-decoration: none; } -} - -div.sourceCode { - color: var(--code-color); - background-color: var(--code-background); - line-height: 80%; -} - -code span.co { color: var(--code-comment-color); font-style: italic; } /* Comment */ -code span.do { color: var(--code-comment-color); font-style: italic; } /* Documentation */ -code span.kw { color: var(--code-keyword-color); font-weight: bold; } /* Keyword */ - html { color: var(--foreground); + /*background: url("recursion.gif");*/ background: var(--html-background); + background-repeat: repeat-y; + background-size: cover; font-family: serif; font-size: 14pt; } body { - margin: 0; - background: var(--body-background); -} - -main { - max-width: 48em; - + background-color: var(--background); + border: solid 1px var(--border); margin: 0 auto; + max-width: 48em; padding-left: 50pt; padding-right: 50pt; padding-top: 50pt; padding-bottom: 50pt; - hyphens: auto; overflow-wrap: break-word; text-rendering: optimizeLegibility; font-kerning: normal; - - background-color: var(--background); - border-left: solid 3pt var(--html-border); - border-right: solid 3pt var(--html-border); } -#shork { - position: absolute; - z-index: 1; - left: -36px; - top: -32px; - width: 64px; - transform-origin: 50% 50%; +#tv-screen { + position: fixed; + top: 0; + left: 0; + z-index: -1; } #page-header { display: flex; + flex-direction: row; + flex-wrap: nowrap; justify-content: space-between; - max-width: 60em; - - margin: 0 auto; - padding: 4pt; - + text-align: left; + border: 4pt ridge var(--border); background: url("images/shark-top-small.png"); background-size: contain; - border: solid 3pt var(--html-border); +} + +#page-header li { + list-style: none; + display: inline-block; +} + +#page-header a:active { + border: 2pt inset var(--button-border) } #page-header a { color: var(--foreground); - padding: 4pt; text-decoration: none; + margin: 4pt; + padding: 4pt; + border: 2pt outset var(--button-border); + background-color: var(--button-background) } -.page-header-button { - background: linear-gradient(to bottom, var(--button-primary) 0%, var(--button-secondary) 100%); - border: 1pt solid var(--blockquote-border); - border-radius: 4pt; -} - -.page-header-button:active { - background: linear-gradient(to bottom, var(--button-secondary) 0%, var(--button-primary) 100%); -} - -.rss-button { - color: #fdf6e3 !important; - background: linear-gradient(to bottom, #fb9d3a 0%, #d95c29 100%); - border: 1pt solid #f2994f; - border-radius: 4pt; -} - -.rss-button:active { - background: linear-gradient(to bottom, #d95c29 0%, #fb9d3a 100%); -} - +#page-header ul, #articles ul { padding-left: 0; } #articles li { list-style: none; + display: block; } .articles-header { - margin: 8pt 0 4pt 0; - text-align: left; -} - -.articles-footer { display: flex; + flex-direction: row; + flex-wrap: nowrap; justify-content: space-between; - margin-top: 4pt; } .articles-title { + margin: 8pt 0 4pt 0; font-size: 14pt; font-weight: bold; } .articles-author { - font-style: italic; + margin: 12pt 0 4pt 0; } .articles-summary { @@ -175,29 +116,42 @@ main { } .articles-date { + margin: 0; text-align: right; } #page-footer { - display: flex; - justify-content: center; - max-width: 60em; - - margin: 0 auto; - padding: 4pt; - + border: 4pt ridge var(--border); background: url("images/shark-top-small.png"); background-size: contain; - border: solid 3pt var(--html-border); + display: flex; + justify-content: center; } -#page-footer nav { +#page-footer p { display: flex; + flex-direction: row; align-items: center; } +/* +#TOC { + padding: 24px; +} + +section { + display: flex; + flex-direction: row; +} + +article { + padding: 12px; + overflow: auto; +} +*/ + @media (max-width: 600px) { - main { + body { font-size: 0.9em; padding: 12pt; } @@ -232,14 +186,6 @@ main { page-break-after: avoid; } - a { - color: black; - } - - #page { - border: none; - } - #page-header, #page-footer { display: none; @@ -338,20 +284,8 @@ hr { margin: 1em 0; } -figure { - margin: 1em 0; - width: 100%; - overflow-x: auto; - display: block; - text-align: center; -} - -figcaption { - margin-top: 0.75em; -} - table { - margin: 1em auto; + margin: 1em 0; border-collapse: collapse; width: 100%; overflow-x: auto; diff --git a/scripts/shork.js b/scripts/shork.js deleted file mode 100644 index 4556b71..0000000 --- a/scripts/shork.js +++ /dev/null @@ -1,102 +0,0 @@ -let shork_image = document.getElementById("shork"); - -let zoomies = 4; -let turnies = 0.2; - -let shork = {x: 4, y: 8}; -let rotation = 0; -let shork_init = transform(shork, -rotation); -shork_image.style.transform = `matrix(${shork_init.a}, ${shork_init.b}, ${shork_init.c}, ${shork_init.d}, ${shork_init.x}, ${shork_init.y})`; - -let mouse = {x: 0, y: 0}; -onmousemove = function(e){ - mouse.x = e.pageX; - mouse.y = e.pageY; -} - -let direction = 0; -let movement = 0; -let target = 0; - -function move() { - direction = vector(shork, mouse); - - if (norm(direction) >= 4) { - movement = scalar(angletovec(rotation), zoomies * norm(direction)/128); - shork = add(shork, movement); - target = angle(direction); - rotation = interpolate(rotation, target, turnies) + Math.sin(norm(movement))/8; - } - - let trans = transform(shork, -rotation); - shork_image.style.transform = `matrix(${trans.a}, ${trans.b}, ${trans.c}, ${trans.d}, ${trans.x}, ${trans.y})`; - - setTimeout(move, 30); -} - -shork_image.addEventListener("click", function(e) {move()}, {once: true}); - -function vector(a, b) { - return { - x: b.x - a.x, - y: b.y - a.y - }; -} - -function angle(v) { - return Math.atan2(v.y, v.x); -} - -function angletovec(a) { - return {x: Math.cos(a), y: Math.sin(a)}; -} - -function norm(v) { - return Math.sqrt(Math.pow(v.x, 2) + Math.pow(v.y, 2)); -} - -function unit(v) { - let length = norm(v); - - if (length == 0) return {x: 0, y: 0}; - - return {x: v.x / length, y: v.y / length}; -} - -function scalar(v, a) { - return {x: v.x * a, y: v.y * a}; -} - -function add(v, u) { - return {x: v.x + u.x, y: v.y + u.y}; -} - -function round(v) { - return {x: Math.round(v.x), y: Math.round(v.y)}; -} - -function clamp(a, min, max) { - if (a < min) return min; - if (a > max) return max; - return a; -} - -function interpolate(a, b, c) { - let d = Math.abs(a - b) - if (d > Math.abs(a - b - 2 * Math.PI)) a = a - 2 * Math.PI; - if (d > Math.abs(a - b + 2 * Math.PI)) a = a + 2 * Math.PI; - - if (a < b) a = clamp(a + c, a, b); - if (a > b) a = clamp(a - c, b, a); - - a += 3 * Math.PI; - a = a % (2 * Math.PI); - a -= Math.PI; - - return a; -} - -function transform(v, a) { - return {a: Math.cos(a), b: -Math.sin(a), c: Math.sin(a), d: Math.cos(a), x: v.x, y: v.y}; -} - diff --git a/src/articles.json b/src/articles.json index ee77c50..4872ffd 100644 --- a/src/articles.json +++ b/src/articles.json @@ -2,41 +2,26 @@ "articles": [ { "author": "Never", - "date": "2026-06-22", - "email": "n.gude@posteo.de", - "summary": "Inspiriert von der Küche der Kuhtreiber des Wilden Westens.", - "title": "Bohnen und Maisbrot", - "updated": "2026-06-22T20:47+02:00", - "filename": "beans-and-cornbread" - }, - { - "author": "Never", - "date": "2026-01-12", - "email": "n.gude@posteo.de", - "summary": "As Spotify is getting enshittified by capitalism, keeping a music library is kind of essential. Here I use rsync to syncronise my library with my Android smartphone.", - "title": "Using rsync on Android to syncronise my Music library", - "updated": "2026-01-12T16:24+01:00", - "filename": "rsync-android" - }, - { - "author": "Never", - "date": "2026-01-09", - "email": "n.gude@posteo.de", + "date": "9.1.2026", "subtitle": "Some unintuitive quirks of Latex", "summary": "Latex undoubtedly has some quirks. Some of them have a rather unintuitive solution. In this article I cover some quirks and solutions I have encountered.", "title": "Latex Endeavors", - "updated": "2026-01-10T16:23+01:00", - "filename": "latex-endeavors" + "filename": " latex-endeavors" }, { "author": "Never", - "date": "2025-07-25", - "email": "n.gude@posteo.de", + "date": "25.7.2025", "subtitle": "Neat things I picked up along the way", "summary": "Tricks and tools I learned about, while tweaking my Linux sytem or trying to do productive things.", "title": "Random linux utilities", - "updated": "2025-07-25T16:24+01:00", - "filename": "random-linux-utils" + "filename": " random-linux-utils" + }, + { + "author": "Never", + "date": "12.01.2026", + "summary": "As Spotify is getting enshittified by capitalism, keeping a music library is kind of essential. Here I use rsync to syncronise my library with my Android smartphone.", + "title": "Using rsync on Android to syncronise my Music library", + "filename": " rsync-android" } ] } diff --git a/src/articles/beans-and-cornbread.md b/src/articles/beans-and-cornbread.md deleted file mode 100644 index 9a80595..0000000 --- a/src/articles/beans-and-cornbread.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: Bohnen und Maisbrot -author: Never -email: n.gude@posteo.de -date: 2026-06-22 -updated: 2026-06-22T20:47+02:00 -summary: Inspiriert von der Küche der Kuhtreiber des Wilden Westens. ---- - -# Bohnen -| Maße | Zutaten | -|-------------:|:--------| -| 2 | Zwiebeln | -| 2 | Knoblauchzehen | -| 1 | rote Chili (Peperoni/Chile de árbol[^arbol]) | -| | Kreuzkümmel | -| | Speckwürfel (Optional) | -| 1 l | Brühe (Gemüse/Huhn/Rind) | -| 1 Dose | Kidneybohnen | -| 1 Dose | Pintobohnen oder andere Bohnen | -| 1 | Chile Ancho[^ancho] oder geräuchertes Paprikapulver | -| | Petersilienstängel | -| | Limettensaft | -| | Salz - -[^arbol]: [Chile de árbol](https://en.wikipedia.org/wiki/Chile_de_%C3%A1rbol); Eine kleine, scharfe, rote Chili. Meist getrocknet zu finden. -[^ancho]: [Chile Ancho](https://en.wikipedia.org/wiki/Poblano); Eine große getrocknete Chili mit rauchigem Geschmack. - -## Zubereitung - -1. Zwiebeln, Knoblauch, rote Chili, Kreuzkümmel und Speckwürfel anbraten. - -2. Mit Brühe ablöschen und die Bohnen, Ancho Chili und Petersilienstängel hinzufügen. - Köcheln und etwas reduzieren lassen. - -3. Mit Salz und Limettensaft abschmecken. - -# Maisbrot - -| Maße | Zutaten | -|-------------:|:--------| -| 1 Tasse | Mehl | -| 1 Tasse | Maismehl | -| 4 TL | Backpulver | -| | Salz | -| 1/4 Tasse | brauner Zucker | -| 1 | Ei | -| 1/3 Tasse | flüssige Butter | -| 1 - 2 Tassen | Milch oder Buttermilch | -| 1/3 Tasse | flüssige Butter | -| | Speckwürfel (Optional) | -| | Gehackte grüne Chilis (Optional) | - -## Zubereitung - -1. Trockene Zutaten mischen. - -2. Ei und Butter unterrühren. - -3. Schrittweise die Milch hinzugeben, bis eine zähflüssige Masse - entstanden ist. - diff --git a/src/articles/latex-endeavors.md b/src/articles/latex-endeavors.md index 9ce1d3d..fb19c9a 100644 --- a/src/articles/latex-endeavors.md +++ b/src/articles/latex-endeavors.md @@ -2,9 +2,7 @@ title: Latex Endeavors subtitle: Some unintuitive quirks of Latex author: Never -email: n.gude@posteo.de -date: 2026-01-09 -updated: 2026-01-10T16:23+01:00 +date: 9.1.2026 summary: Latex undoubtedly has some quirks. Some of them have a rather unintuitive solution. In this article I cover some quirks and solutions I have encountered. --- diff --git a/src/articles/random-linux-utils b/src/articles/random-linux-utils new file mode 100644 index 0000000..27d3079 --- /dev/null +++ b/src/articles/random-linux-utils @@ -0,0 +1,18 @@ + Latex Endeavors + Some unintuitive quirks of Latex + + Never + + 9.1.2026 + + ──────────────────── + +BIBLATEX AND BIBER + +Biber doesn’t run + +Biber doens’t run if the (fedora) package  libxcrypt-compat  is missing. +It will fail with the error message + + biber: error while loading shared libraries: libcrypt.so.1: cannot open shared object file: No such file or directory +]8;;\ \ No newline at end of file diff --git a/src/articles/random-linux-utils.html b/src/articles/random-linux-utils.html new file mode 100644 index 0000000..df33063 --- /dev/null +++ b/src/articles/random-linux-utils.html @@ -0,0 +1,80 @@ + + + + + + + + Latex Endeavors + + + + + + + +
    +

    Latex Endeavors

    +

    Some unintuitive quirks of Latex

    +

    Never

    +

    9.1.2026

    +
    +
    + +
    +

    BibLaTeX and Biber

    +

    Biber doesn’t run

    +

    Biber doens’t run if the (fedora) package +libxcrypt-compat is missing. It will fail with the error +message

    +
    biber: error while loading shared libraries: libcrypt.so.1: cannot open shared object file: No such file or directory
    +
    + +
    +
    + +

    + Previous + CUPS + Next +

    +
    + + diff --git a/src/articles/random-linux-utils.md b/src/articles/random-linux-utils.md index 852e7a3..6b5c743 100644 --- a/src/articles/random-linux-utils.md +++ b/src/articles/random-linux-utils.md @@ -2,9 +2,7 @@ title: Random linux utilities subtitle: Neat things I picked up along the way author: Never -email: n.gude@posteo.de -date: 2025-07-25 -updated: 2025-07-25T16:24+01:00 +date: 25.7.2025 summary: Tricks and tools I learned about, while tweaking my Linux sytem or trying to do productive things. --- diff --git a/src/articles/rsync-android b/src/articles/rsync-android new file mode 100644 index 0000000..27d3079 --- /dev/null +++ b/src/articles/rsync-android @@ -0,0 +1,18 @@ + Latex Endeavors + Some unintuitive quirks of Latex + + Never + + 9.1.2026 + + ──────────────────── + +BIBLATEX AND BIBER + +Biber doesn’t run + +Biber doens’t run if the (fedora) package  libxcrypt-compat  is missing. +It will fail with the error message + + biber: error while loading shared libraries: libcrypt.so.1: cannot open shared object file: No such file or directory +]8;;\ \ No newline at end of file diff --git a/src/articles/rsync-android.html b/src/articles/rsync-android.html new file mode 100644 index 0000000..df33063 --- /dev/null +++ b/src/articles/rsync-android.html @@ -0,0 +1,80 @@ + + + + + + + + Latex Endeavors + + + + + + + +
    +

    Latex Endeavors

    +

    Some unintuitive quirks of Latex

    +

    Never

    +

    9.1.2026

    +
    +
    + +
    +

    BibLaTeX and Biber

    +

    Biber doesn’t run

    +

    Biber doens’t run if the (fedora) package +libxcrypt-compat is missing. It will fail with the error +message

    +
    biber: error while loading shared libraries: libcrypt.so.1: cannot open shared object file: No such file or directory
    +
    + +
    +
    + +

    + Previous + CUPS + Next +

    +
    + + diff --git a/src/articles/rsync-android.md b/src/articles/rsync-android.md index bf377fa..97a63f4 100644 --- a/src/articles/rsync-android.md +++ b/src/articles/rsync-android.md @@ -1,9 +1,7 @@ --- title: Using rsync on Android to syncronise my Music library author: Never -email: n.gude@posteo.de -date: 2026-01-12 -updated: 2026-01-12T16:24+01:00 +date: 12.01.2026 summary: As Spotify is getting enshittified by capitalism, keeping a music library is kind of essential. Here I use rsync to syncronise my library with my Android smartphone. --- @@ -99,3 +97,31 @@ Now on your Linux machine, syncronise your Music library with rsync. rsync -av -e "ssh -p 8022" ~/Music @:/data/data/com.termux/files/home/storage/music ``` +## Refreshing the Android MediaStore +Android uses a Database to store files. In order to play your music, this database +needs to be refreshed. This can be achieved by a reboot or by using adb to manually +refresh it. + +```sh +sudo dnf install adb +``` + +Connect the Android device via USB and see if it is listed. +```sh +adb devices +``` + +If it is, restart adb in TCP mode with port 5555 +```sh +adb tcpip 5555 +``` + +Connect to the device using its . +```sh +adb connect +``` + +Refresh MediaStore. +```sh +adb shell am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN -d file:///data/data/com.termux/files/home/storage/music/ +``` diff --git a/src/feed.md b/src/feed.md deleted file mode 100644 index b71bec4..0000000 --- a/src/feed.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: nevereverever.de -link: https://nevereverever.de/eh/eh/eh/eh-eh -subtitle: Here I post random stuff. -author: Never -date: 2026-03-10 -id: nevereverever.de ---- diff --git a/src/index.md b/src/index.md index 3cc04ec..fd1105f 100644 --- a/src/index.md +++ b/src/index.md @@ -1,15 +1,4 @@ --- title: Home --- - -Hello! I am Never and this is my little place on the internet where I post the -stuff that I am currently nerding out about. - -This Website itself is one of those projects, that I like to tweak and tinker -with. Maybe I'll write an article about its build system. It is also viewable -via `curl`. Just run -```sh -curl nevereverever.de -``` - -There also is an Atom Feed to stay updated about my doings. +Hello World diff --git a/styles/images/shark-top-small.png b/styles/images/shark-top-small.png index a08fa23..56e8624 100644 Binary files a/styles/images/shark-top-small.png and b/styles/images/shark-top-small.png differ diff --git a/styles/images/shark-top-small.xcf b/styles/images/shark-top-small.xcf index effd994..bd0e140 100644 Binary files a/styles/images/shark-top-small.xcf and b/styles/images/shark-top-small.xcf differ diff --git a/styles/style.css b/styles/style.css index 4d86cb3..e6e14cc 100644 --- a/styles/style.css +++ b/styles/style.css @@ -1,173 +1,114 @@ :root { - --foreground: #586e75; - --background: #fdf6e3; - --html-border: #eee8d5; - --html-background: #268bd2; - --body-background: linear-gradient(to bottom, #2aa198, #268bd2); - --blockquote-text: #657b83; - --blockquote-border: #eee8d5; - --button-primary: #fdf6e3; - --button-secondary: #eee8d5; - --code-color: #657b83; - --code-background: #fdf6e3; - --code-line-number-color: #93a1a1; - --code-line-number-background: #eee8d5; - --code-comment-color: #93a1a1; - --code-keyword-color: #586e75; + --foreground: #1a1a1a; + --background: #fdfdfdf0; + --border: #c9c9c9; + --html-background: #e3e3e3; + --blockquote-text: #606060; + --blockquote-border: #e6e6e6; + --button-border: #e3e3e3; + --button-background: #d0d0d0; } @media (prefers-color-scheme: dark) { :root { - --foreground: #93a1a1; - --background: #002b36; - --html-border: #073642; - --html-background: #6c71c4; - --body-background: linear-gradient(to bottom, #268bd2, #6c71c4); - --blockquote-text: #839496; - --blockquote-border: #073642; - --button-primary: #073642; - --button-secondary: #002b36; - --code-color: #839496; - --code-background: #002b36; - --code-line-number-color: #586e75; - --code-line-number-background: #073642; - --code-comment-color: #586e75; - --code-keyword-color: #93a1a1; + --foreground: #fdfdfd; + --background: #1a1a1af0; + --border: #4c4c4c; + --html-background: #303030; + --blockquote-text: #e6e6e6; + --blockquote-border: #606060; + --button-border: #4c4c4c; + --button-background: #404040; } } -pre.numberSource code > span > a:first-child::before { - background-color: var(--code-line-number-background); - color: var(--code-line-number-color); -} - -pre.numberSource { - margin-left: 3em; - border-left: none; - padding-left: 4px; -} - -@media screen { - pre > code.sourceCode > span > a:first-child::before { text-decoration: none; } -} - -div.sourceCode { - color: var(--code-color); - background-color: var(--code-background); - line-height: 80%; -} - -code span.co { color: var(--code-comment-color); font-style: italic; } /* Comment */ -code span.do { color: var(--code-comment-color); font-style: italic; } /* Documentation */ -code span.kw { color: var(--code-keyword-color); font-weight: bold; } /* Keyword */ - html { color: var(--foreground); + /*background: url("recursion.gif");*/ background: var(--html-background); + background-repeat: repeat-y; + background-size: cover; font-family: serif; font-size: 14pt; } body { - margin: 0; - background: var(--body-background); -} - -main { - max-width: 48em; - + background-color: var(--background); + border: solid 1px var(--border); margin: 0 auto; + max-width: 48em; padding-left: 50pt; padding-right: 50pt; padding-top: 50pt; padding-bottom: 50pt; - hyphens: auto; overflow-wrap: break-word; text-rendering: optimizeLegibility; font-kerning: normal; - - background-color: var(--background); - border-left: solid 3pt var(--html-border); - border-right: solid 3pt var(--html-border); } -#shork { - position: absolute; - z-index: 1; - left: -36px; - top: -32px; - width: 64px; - transform-origin: 50% 50%; +#tv-screen { + position: fixed; + top: 0; + left: 0; + z-index: -1; } #page-header { display: flex; + flex-direction: row; + flex-wrap: nowrap; justify-content: space-between; - max-width: 60em; - - margin: 0 auto; - padding: 4pt; - + text-align: left; + border: 4pt ridge var(--border); background: url("images/shark-top-small.png"); background-size: contain; - border: solid 3pt var(--html-border); +} + +#page-header li { + list-style: none; + display: inline-block; +} + +#page-header a:active { + border: 2pt inset var(--button-border) } #page-header a { color: var(--foreground); - padding: 4pt; text-decoration: none; + margin: 4pt; + padding: 4pt; + border: 2pt outset var(--button-border); + background-color: var(--button-background) } -.page-header-button { - background: linear-gradient(to bottom, var(--button-primary) 0%, var(--button-secondary) 100%); - border: 1pt solid var(--blockquote-border); - border-radius: 4pt; -} - -.page-header-button:active { - background: linear-gradient(to bottom, var(--button-secondary) 0%, var(--button-primary) 100%); -} - -.rss-button { - color: #fdf6e3 !important; - background: linear-gradient(to bottom, #fb9d3a 0%, #d95c29 100%); - border: 1pt solid #f2994f; - border-radius: 4pt; -} - -.rss-button:active { - background: linear-gradient(to bottom, #d95c29 0%, #fb9d3a 100%); -} - +#page-header ul, #articles ul { padding-left: 0; } #articles li { list-style: none; + display: block; } .articles-header { - margin: 8pt 0 4pt 0; - text-align: left; -} - -.articles-footer { display: flex; + flex-direction: row; + flex-wrap: nowrap; justify-content: space-between; - margin-top: 4pt; } .articles-title { + margin: 8pt 0 4pt 0; font-size: 14pt; font-weight: bold; } .articles-author { - font-style: italic; + margin: 12pt 0 4pt 0; } .articles-summary { @@ -175,29 +116,42 @@ main { } .articles-date { + margin: 0; text-align: right; } #page-footer { - display: flex; - justify-content: center; - max-width: 60em; - - margin: 0 auto; - padding: 4pt; - + border: 4pt ridge var(--border); background: url("images/shark-top-small.png"); background-size: contain; - border: solid 3pt var(--html-border); + display: flex; + justify-content: center; } -#page-footer nav { +#page-footer p { display: flex; + flex-direction: row; align-items: center; } +/* +#TOC { + padding: 24px; +} + +section { + display: flex; + flex-direction: row; +} + +article { + padding: 12px; + overflow: auto; +} +*/ + @media (max-width: 600px) { - main { + body { font-size: 0.9em; padding: 12pt; } @@ -232,14 +186,6 @@ main { page-break-after: avoid; } - a { - color: black; - } - - #page { - border: none; - } - #page-header, #page-footer { display: none; @@ -338,20 +284,8 @@ hr { margin: 1em 0; } -figure { - margin: 1em 0; - width: 100%; - overflow-x: auto; - display: block; - text-align: center; -} - -figcaption { - margin-top: 0.75em; -} - table { - margin: 1em auto; + margin: 1em 0; border-collapse: collapse; width: 100%; overflow-x: auto;