diff --git a/Makefile b/Makefile index c6c978d..163ae5a 100644 --- a/Makefile +++ b/Makefile @@ -9,19 +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_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 @@ -35,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)/rss.xml +all: $(BUILDDIR)/index.html $(BUILDDIR)/index install: - cp -r $(BUILDDIR)/index.html $(BUILDDIR)/rss.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: @@ -49,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 $@))", "pubdate": "$(shell date -d $(shell pandoc $< --template $(list_template) | jq '.date') --rfc-2822)"}')]' $(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)/rss.xml: $(SRCDIR)/rss.md $(articles_html) | $(BUILDDIR) - pandoc $< --template $(template_rss) --metadata-file $(article_list) --metadata=pubdate:"$(shell jq -r '.articles[0] | .pubdate' $(article_list))" --metadata=builddate:"$(shell date --rfc-2822)" --to html --output $@ 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 f756c00..6e860b1 100644 --- a/build/articles/latex-endeavors.html +++ b/build/articles/latex-endeavors.html @@ -1,49 +1,44 @@ - - + - - - - - - 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
-
-
- - - + + + + 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 ace63a8..a04f711 100644 --- a/build/articles/random-linux-utils.html +++ b/build/articles/random-linux-utils.html @@ -1,125 +1,117 @@ - - + - - - - - - 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 @@ -128,18 +120,15 @@ doesn’t rasterize and scales down the pdf files.

class="sourceCode bash">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 f09bfad..d291267 100644 --- a/build/articles/rsync-android.html +++ b/build/articles/rsync-android.html @@ -1,116 +1,108 @@ - - + - - - - - - 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 + + +
+

Using rsync on Android to syncronise my Music library

-

Never

-

2026-01-12

-
-

+
+ -
-

Setup Termux

+ +
+

Setup Termux

Install Termux using F-Droid.

Update software repos.

pkg update
@@ -186,18 +182,34 @@ class="sourceCode sh">
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/
+ + + + diff --git a/build/index b/build/index index e633834..d127fcf 100644 --- a/build/index +++ b/build/index @@ -2,34 +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 RSS Feed to stay updated about my doings. +Hello World ARTICLES +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 002f2a7..3d7ae73 100644 --- a/build/index.html +++ b/build/index.html @@ -1,172 +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 RSS Feed to stay updated about my doings.

-
- -
- - - +

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

    +
  • + + + + + + diff --git a/build/rss.xml b/build/rss.xml deleted file mode 100644 index e431ae0..0000000 --- a/build/rss.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - nevereverever.de - https://nevereverever.de/eh/eh/eh/eh-eh - Here I post random stuff. - en-us - Mon, 12 Jan 2026 00:00:00 +0100 - Tue, 24 Feb 2026 22:14:40 +0100 - https://www.rssboard.org/rss-specification - pandoc - n.gude@posteo.de (Never) - n.gude@poster.de (Never) - - Using rsync on Android to syncronise my Music library - n.gude@posteo.de (Never) - https://nevereverever.de/eh/eh/eh/eh-eh/rsync-android.html - 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. - Mon, 12 Jan 2026 00:00:00 +0100 - rsync-android - - - Latex Endeavors - n.gude@posteo.de (Never) - https://nevereverever.de/eh/eh/eh/eh-eh/latex-endeavors.html - 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. - Fri, 09 Jan 2026 00:00:00 +0100 - latex-endeavors - - - Random linux utilities - n.gude@posteo.de (Never) - https://nevereverever.de/eh/eh/eh/eh-eh/random-linux-utils.html - Tricks and tools I learned about, while tweaking my Linux -sytem or trying to do productive things. - Fri, 25 Jul 2025 00:00:00 +0200 - random-linux-utils - - - 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/html-template.html b/pandoc/html-template.html deleted file mode 100644 index 016d9fd..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/index b/public_ansi/index index e633834..d127fcf 100644 --- a/public_ansi/index +++ b/public_ansi/index @@ -2,34 +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 RSS Feed to stay updated about my doings. +Hello World ARTICLES +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 e3d08ab..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. - - #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 + ⋯ + 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/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 002f2a7..3d7ae73 100644 --- a/public_html/eh/eh/eh/eh-eh/index.html +++ b/public_html/eh/eh/eh/eh-eh/index.html @@ -1,172 +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 RSS Feed to stay updated about my doings.

    -
    - -
    -
    - -
    - - +

    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 f756c00..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,49 +1,44 @@ - - + - - - - - - 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
    -
    -
    -
    - -
    - - + + +
    + +

    +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 fca7ea4..0000000 --- a/public_html/eh/eh/eh/eh-eh/pandoc.html +++ /dev/null @@ -1,437 +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

    -

    sam@green.eggs.ham

    -

    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!

    -
    - - -
    -

    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 ace63a8..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,125 +1,117 @@ - - + - - - - - - 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 @@ -128,18 +120,15 @@ doesn’t rasterize and scales down the pdf files.

    class="sourceCode bash">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/rss.xml b/public_html/eh/eh/eh/eh-eh/rss.xml deleted file mode 100644 index e431ae0..0000000 --- a/public_html/eh/eh/eh/eh-eh/rss.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - nevereverever.de - https://nevereverever.de/eh/eh/eh/eh-eh - Here I post random stuff. - en-us - Mon, 12 Jan 2026 00:00:00 +0100 - Tue, 24 Feb 2026 22:14:40 +0100 - https://www.rssboard.org/rss-specification - pandoc - n.gude@posteo.de (Never) - n.gude@poster.de (Never) - - Using rsync on Android to syncronise my Music library - n.gude@posteo.de (Never) - https://nevereverever.de/eh/eh/eh/eh-eh/rsync-android.html - 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. - Mon, 12 Jan 2026 00:00:00 +0100 - rsync-android - - - Latex Endeavors - n.gude@posteo.de (Never) - https://nevereverever.de/eh/eh/eh/eh-eh/latex-endeavors.html - 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. - Fri, 09 Jan 2026 00:00:00 +0100 - latex-endeavors - - - Random linux utilities - n.gude@posteo.de (Never) - https://nevereverever.de/eh/eh/eh/eh-eh/random-linux-utils.html - Tricks and tools I learned about, while tweaking my Linux -sytem or trying to do productive things. - Fri, 25 Jul 2025 00:00:00 +0200 - random-linux-utils - - - 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 f09bfad..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,116 +1,108 @@ - - + - - - - - - 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 + + +
    +

    Using rsync on Android to syncronise my Music library

    -

    Never

    -

    2026-01-12

    -
    -

    +
    + -
    -

    Setup Termux

    + +
    +

    Setup Termux

    Install Termux using F-Droid.

    Update software repos.

    pkg update
    @@ -186,18 +182,34 @@ class="sourceCode sh">
    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/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 ccb79ef..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,136 +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; + --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; + --foreground: #fdfdfd; + --background: #1a1a1af0; + --border: #4c4c4c; + --html-background: #303030; + --blockquote-text: #e6e6e6; + --blockquote-border: #606060; + --button-border: #4c4c4c; + --button-background: #404040; } } 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 { @@ -138,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; } @@ -195,14 +186,6 @@ main { page-break-after: avoid; } - a { - color: black; - } - - #page { - border: none; - } - #page-header, #page-footer { display: none; 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 cb9c144..4872ffd 100644 --- a/src/articles.json +++ b/src/articles.json @@ -2,32 +2,26 @@ "articles": [ { "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", - "filename": "rsync-android", - "pubdate": "Mon, 12 Jan 2026 00:00:00 +0100" - }, - { - "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", - "filename": "latex-endeavors", - "pubdate": "Fri, 09 Jan 2026 00:00:00 +0100" + "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", - "filename": "random-linux-utils", - "pubdate": "Fri, 25 Jul 2025 00:00:00 +0200" + "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/latex-endeavors.md b/src/articles/latex-endeavors.md index ed823f1..fb19c9a 100644 --- a/src/articles/latex-endeavors.md +++ b/src/articles/latex-endeavors.md @@ -2,8 +2,7 @@ title: Latex Endeavors subtitle: Some unintuitive quirks of Latex author: Never -email: n.gude@posteo.de -date: 2026-01-09 +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 e2b8374..6b5c743 100644 --- a/src/articles/random-linux-utils.md +++ b/src/articles/random-linux-utils.md @@ -2,8 +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 +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 b8249dd..97a63f4 100644 --- a/src/articles/rsync-android.md +++ b/src/articles/rsync-android.md @@ -1,8 +1,7 @@ --- title: Using rsync on Android to syncronise my Music library author: Never -email: n.gude@posteo.de -date: 2026-01-12 +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. --- @@ -98,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/index.md b/src/index.md index f8fb289..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 RSS Feed to stay updated about my doings. +Hello World diff --git a/src/rss.md b/src/rss.md deleted file mode 100644 index 3f42adf..0000000 --- a/src/rss.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: nevereverever.de -link: https://nevereverever.de/eh/eh/eh/eh-eh -description: Here I post random stuff. -lang: en-us -editor: n.gude@posteo.de (Never) -webmaster: n.gude@poster.de (Never) ---- 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 ccb79ef..e6e14cc 100644 --- a/styles/style.css +++ b/styles/style.css @@ -1,136 +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; + --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; + --foreground: #fdfdfd; + --background: #1a1a1af0; + --border: #4c4c4c; + --html-background: #303030; + --blockquote-text: #e6e6e6; + --blockquote-border: #606060; + --button-border: #4c4c4c; + --button-background: #404040; } } 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 { @@ -138,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; } @@ -195,14 +186,6 @@ main { page-break-after: avoid; } - a { - color: black; - } - - #page { - border: none; - } - #page-header, #page-footer { display: none;