diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..163ae5a --- /dev/null +++ b/Makefile @@ -0,0 +1,69 @@ +SHELL = /bin/sh + +SRCDIR := src +BUILDDIR := build + +INSTALLDIR_HTML := public_html/eh/eh/eh/eh-eh/ +INSTALLDIR_ANSI := public_ansi/ + +ARTICLEDIR := articles +PANDOCDIR := pandoc +STYLEDIR := styles +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 + +# Main html template that pandoc uses to generate .html from .md files +template_html := $(PANDOCDIR)/template.html +template_ansi := $(PANDOCDIR)/template + +# Template for extracting metadata of .md files in json format +list_template := $(PANDOCDIR)/meta-json-template.txt + +# Location of the shark.js +shark_js := $(PANDOCDIR)/shark.js + +# List of articles with their metadata to be used in the creation of the article list in index.html +article_list := $(SRCDIR)/articles.json + +# article targets +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 + +install: + cp -r $(BUILDDIR)/index.html $(articles_html) $(STYLEDIR) $(IMAGEDIR) $(INSTALLDIR_HTML); \ + cp -r $(BUILDDIR)/index $(articles_ansi) $(INSTALLDIR_ANSI); + +clean: + echo '{"articles": []}' > $(article_list); \ + rm -r $(BUILDDIR) + +$(BUILDDIR): + mkdir $(BUILDDIR) $(BUILDDIR)/$(ARTICLEDIR) + +$(BUILDDIR)/$(ARTICLEDIR)/%.html: $(SRCDIR)/$(ARTICLEDIR)/%.md | $(BUILDDIR) + 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 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); \ + +$(BUILDDIR)/$(ARTICLEDIR)/%: $(SRCDIR)/$(ARTICLEDIR)/%.md | $(BUILDDIR) + pandoc $< --template $(template_ansi) --to ansi --output $@ + +$(BUILDDIR)/index.html: $(SRCDIR)/index.md $(articles_html) | $(BUILDDIR) + # Build index.html with metadata injected from articles_list + 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 $@ diff --git a/build/articles/latex-endeavors b/build/articles/latex-endeavors new file mode 100644 index 0000000..27d3079 --- /dev/null +++ b/build/articles/latex-endeavors @@ -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/build/articles/latex-endeavors.html b/build/articles/latex-endeavors.html new file mode 100644 index 0000000..6e860b1 --- /dev/null +++ b/build/articles/latex-endeavors.html @@ -0,0 +1,68 @@ + + + + + + + + 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
+
+
+ + + diff --git a/build/articles/random-linux-utils b/build/articles/random-linux-utils new file mode 100644 index 0000000..359dd0b --- /dev/null +++ b/build/articles/random-linux-utils @@ -0,0 +1,21 @@ + 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 +]8;;\ \ No newline at end of file diff --git a/public_html/eh/eh/eh/eh-eh/article-2.html b/build/articles/random-linux-utils.html similarity index 68% rename from public_html/eh/eh/eh/eh-eh/article-2.html rename to build/articles/random-linux-utils.html index 68e02ec..a04f711 100644 --- a/public_html/eh/eh/eh/eh-eh/article-2.html +++ b/build/articles/random-linux-utils.html @@ -4,8 +4,9 @@ - - Article 1 + + Random linux utilities + - + +
-

Article 1

-

Just testimg

-

Never Gude

-

10.12.2025

+

Random linux utilities

+

Neat things I picked up along the way

+

Never

+

25.7.2025

-

Merge pdfs

-

Using Ghostscript

+

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.

-
-

Block quote time yay

-
gs -dNOPAUSE -sDEVICE=pdfwrite \
-    -sOUTPUTFILE=output.pdf \
-    -dBATCH 1.pdf 2.pdf
-
int hello_world(int x) {
-    printf("Hello World %i", x);
-    return x;
-}
+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 new file mode 100644 index 0000000..4f04da1 --- /dev/null +++ b/build/articles/rsync-android @@ -0,0 +1,116 @@ + 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 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) + + rmnet0: flags=4305 mtu 1280 +  inet 10.200.157.166 netmask 255.255.255.0 destination 10.200.157.166 +  unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 1000 (UNSPEC) + + wlan0: flags=4163 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   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/ +]8;;\ \ No newline at end of file diff --git a/build/articles/rsync-android.html b/build/articles/rsync-android.html new file mode 100644 index 0000000..d291267 --- /dev/null +++ b/build/articles/rsync-android.html @@ -0,0 +1,215 @@ + + + + + + + + Using rsync on Android to syncronise my Music library + + + + + + + +
+

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)
+
+rmnet0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1280
+        inet 10.200.157.166  netmask 255.255.255.0  destination 10.200.157.166
+        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 1000  (UNSPEC)
+
+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
+

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/index b/build/index new file mode 100644 index 0000000..d127fcf --- /dev/null +++ b/build/index @@ -0,0 +1,26 @@ + Home + + ──────────────────── + +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 - 12.01.2026 +]8;;\ \ No newline at end of file diff --git a/build/index.html b/build/index.html new file mode 100644 index 0000000..3d7ae73 --- /dev/null +++ b/build/index.html @@ -0,0 +1,154 @@ + + + + + + + Home + + + + + + + +
+

Home

+
+
+
+

Hello World

+
+ +
+ +
+ +

+Previous +CUPS +Next +

+
+ + diff --git a/public_html/eh/eh/eh/eh-eh/pandoc/cups_left.svg b/images/cups_left.svg similarity index 100% rename from public_html/eh/eh/eh/eh-eh/pandoc/cups_left.svg rename to images/cups_left.svg diff --git a/public_html/eh/eh/eh/eh-eh/pandoc/cups_left_dark.svg b/images/cups_left_dark.svg similarity index 100% rename from public_html/eh/eh/eh/eh-eh/pandoc/cups_left_dark.svg rename to images/cups_left_dark.svg diff --git a/public_html/eh/eh/eh/eh-eh/pandoc/cups_logo.svg b/images/cups_logo.svg similarity index 100% rename from public_html/eh/eh/eh/eh-eh/pandoc/cups_logo.svg rename to images/cups_logo.svg diff --git a/public_html/eh/eh/eh/eh-eh/pandoc/cups_logo_dark.svg b/images/cups_logo_dark.svg similarity index 100% rename from public_html/eh/eh/eh/eh-eh/pandoc/cups_logo_dark.svg rename to images/cups_logo_dark.svg diff --git a/public_html/eh/eh/eh/eh-eh/pandoc/cups_right.svg b/images/cups_right.svg similarity index 100% rename from public_html/eh/eh/eh/eh-eh/pandoc/cups_right.svg rename to images/cups_right.svg diff --git a/public_html/eh/eh/eh/eh-eh/pandoc/cups_right_dark.svg b/images/cups_right_dark.svg similarity index 100% rename from public_html/eh/eh/eh/eh-eh/pandoc/cups_right_dark.svg rename to images/cups_right_dark.svg diff --git a/images/favicon.png b/images/favicon.png new file mode 100644 index 0000000..feb52d1 Binary files /dev/null and b/images/favicon.png differ 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/public_html/eh/eh/eh/eh-eh/pandoc/meta-json-template.txt b/pandoc/meta-json-template.txt similarity index 100% rename from public_html/eh/eh/eh/eh-eh/pandoc/meta-json-template.txt rename to pandoc/meta-json-template.txt diff --git a/pandoc/shark.js b/pandoc/shark.js new file mode 100644 index 0000000..3f4557c --- /dev/null +++ b/pandoc/shark.js @@ -0,0 +1,68 @@ + diff --git a/pandoc/template b/pandoc/template new file mode 100644 index 0000000..33ef978 --- /dev/null +++ b/pandoc/template @@ -0,0 +1,36 @@ +$if(titleblock)$ +$titleblock$ + +$endif$ +$for(header-includes)$ +$header-includes$ + +$endfor$ +$for(include-before)$ +$include-before$ + +$endfor$ +$if(toc)$ +$table-of-contents$ + +$endif$ +$body$ +$if(articles)$ + +ARTICLES + +$for(articles)$ +$if(articles.title)$ +$articles.title$$if(articles.filename)$ ($articles.filename$)$endif$ +$endif$ +$if(articles.summary)$ +$articles.summary$ +$endif$ +$if(articles.author)$ $articles.author$$endif$$if(articles.date)$ - $articles.date$$endif$ + +$endfor$ +$endif$ +$for(include-after)$ + +$include-after$ +$endfor$ diff --git a/public_html/eh/eh/eh/eh-eh/pandoc/template.html b/pandoc/template.html similarity index 59% rename from public_html/eh/eh/eh/eh-eh/pandoc/template.html rename to pandoc/template.html index c93c41e..2b5e99c 100644 --- a/public_html/eh/eh/eh/eh-eh/pandoc/template.html +++ b/pandoc/template.html @@ -17,11 +17,12 @@ $if(description-meta)$ $endif$ $if(title-prefix)$$title-prefix$ – $endif$$pagetitle$ + $for(css)$ - + $endfor$ $for(header-includes)$ $header-includes$ @@ -34,17 +35,9 @@ $endif$ $endif$ + $for(include-before)$ $include-before$ @@ -83,36 +76,40 @@ $body$ $if(articles)$ $endif$ - $for(include-after)$ $include-after$ $endfor$
- + +

+Previous +CUPS +Next +

diff --git a/public_ansi/about b/public_ansi/about new file mode 100644 index 0000000..25d7268 --- /dev/null +++ b/public_ansi/about @@ -0,0 +1,10 @@ + About + + ──────────────────── + +]8;;https://nevereverever.de/eh/eh/eh/eh-eh/rsync-android.html\Rsync Android]8;;\ + +Stuff + +$$ \sum_{i=1}^k i = \frac{k(k+1)}{2} $$ +]8;;\ \ No newline at end of file diff --git a/public_ansi/index b/public_ansi/index new file mode 100644 index 0000000..d127fcf --- /dev/null +++ b/public_ansi/index @@ -0,0 +1,26 @@ + Home + + ──────────────────── + +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 - 12.01.2026 +]8;;\ \ No newline at end of file diff --git a/public_ansi/latex-endeavors b/public_ansi/latex-endeavors new file mode 100644 index 0000000..27d3079 --- /dev/null +++ b/public_ansi/latex-endeavors @@ -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/public_ansi/random-linux-utils b/public_ansi/random-linux-utils new file mode 100644 index 0000000..359dd0b --- /dev/null +++ b/public_ansi/random-linux-utils @@ -0,0 +1,21 @@ + 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 +]8;;\ \ No newline at end of file diff --git a/public_ansi/rsync-android b/public_ansi/rsync-android new file mode 100644 index 0000000..4f04da1 --- /dev/null +++ b/public_ansi/rsync-android @@ -0,0 +1,116 @@ + 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 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) + + rmnet0: flags=4305 mtu 1280 +  inet 10.200.157.166 netmask 255.255.255.0 destination 10.200.157.166 +  unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 1000 (UNSPEC) + + wlan0: flags=4163 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   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/ +]8;;\ \ No newline at end of file diff --git a/public_html/eh/eh/eh/eh-eh/Makefile b/public_html/eh/eh/eh/eh-eh/Makefile deleted file mode 100644 index b6ea90c..0000000 --- a/public_html/eh/eh/eh/eh-eh/Makefile +++ /dev/null @@ -1,27 +0,0 @@ -template := pandoc/template.html -style := pandoc/style.css - -article_list := articles.json -list_template := pandoc/meta-json-template.txt - -articles := $(patsubst %.md,%.html,$(wildcard articles/*.md)) - -all: index.html about.html - -clean: - echo '{"articles": []}' > $(article_list); \ - # rm $(notdir $(articles)); \ - rm ./index.html ./about.html ./articles.json.tmp; - -$(articles): %.html: %.md clean - pandoc $< --template $(template) --css $(style) --highlight-style zenburn --mathml --toc --output $(notdir $@); \ - pandoc $< --template $(list_template) > article.json.tmp.0; \ - jq '. += {"filename": "$(notdir $@)"}' article.json.tmp.0 > article.json.tmp.1; \ - jq '.articles += [$(shell cat article.json.tmp.1)]' $(article_list) > articles.json.tmp; \ - cat ./articles.json.tmp > ./articles.json; - -index.html: index.md $(articles) - pandoc $< --template $(template) --css $(style) --metadata-file $(article_list) --highlight-style zenburn --mathml --toc --output $@ - -about.html: about.md - pandoc $< --template $(template) --css $(style) --highlight-style zenburn --mathml --toc --output $@ diff --git a/public_html/eh/eh/eh/eh-eh/about.html b/public_html/eh/eh/eh/eh-eh/about.html deleted file mode 100644 index a3a2409..0000000 --- a/public_html/eh/eh/eh/eh-eh/about.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - About - - - - - -
-

About

-
-
- -
-

Stuff

-

i=1ki=k(k+1)2 \sum_{i=1}^k i = \frac{k(k+1)}{2}

-
- -
-
- -
- - diff --git a/public_html/eh/eh/eh/eh-eh/about.md b/public_html/eh/eh/eh/eh-eh/about.md deleted file mode 100644 index 1942365..0000000 --- a/public_html/eh/eh/eh/eh-eh/about.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: About ---- - -## Stuff - -$$ \sum_{i=1}^k i = \frac{k(k+1)}{2} $$ - diff --git a/public_html/eh/eh/eh/eh-eh/article-1.html b/public_html/eh/eh/eh/eh-eh/article-1.html deleted file mode 100644 index 0ebd015..0000000 --- a/public_html/eh/eh/eh/eh-eh/article-1.html +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - - Article DSADASD - - - - - -
-

Article DSADASD

-

Just testimg too

-

Never Gude

-

10.12.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.

-
-

Block quote time yay

-
-
gs -dNOPAUSE -sDEVICE=pdfwrite \
-    -sOUTPUTFILE=output.pdf \
-    -dBATCH 1.pdf 2.pdf
-
int hello_world(int x) {
-    printf("Hello World %i", x);
-    return x;
-}
-
- -
-
- -
- - diff --git a/public_html/eh/eh/eh/eh-eh/article.json.tmp.0 b/public_html/eh/eh/eh/eh-eh/article.json.tmp.0 deleted file mode 100644 index f04a7d3..0000000 --- a/public_html/eh/eh/eh/eh-eh/article.json.tmp.0 +++ /dev/null @@ -1 +0,0 @@ -{"author":"Never Gude","date":"25.7.2025","subtitle":"Neat things I picked up along the way","summary":"Testing dsa dsa dsa dsa DDDDDDDDDDDa","title":"Random linux utilities"} diff --git a/public_html/eh/eh/eh/eh-eh/article.json.tmp.1 b/public_html/eh/eh/eh/eh-eh/article.json.tmp.1 deleted file mode 100644 index 95bde9b..0000000 --- a/public_html/eh/eh/eh/eh-eh/article.json.tmp.1 +++ /dev/null @@ -1,8 +0,0 @@ -{ - "author": "Never Gude", - "date": "25.7.2025", - "subtitle": "Neat things I picked up along the way", - "summary": "Testing dsa dsa dsa dsa DDDDDDDDDDDa", - "title": "Random linux utilities", - "filename": "random-linux-utils.html" -} diff --git a/public_html/eh/eh/eh/eh-eh/articles.json b/public_html/eh/eh/eh/eh-eh/articles.json deleted file mode 100644 index 4838ce9..0000000 --- a/public_html/eh/eh/eh/eh-eh/articles.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "articles": [ - { - "author": "Never Gude", - "date": "25.7.2025", - "subtitle": "Neat things I picked up along the way", - "summary": "Testing dsa dsa dsa dsa DDDDDDDDDDDa", - "title": "Random linux utilities", - "filename": "random-linux-utils.html" - }, - { - "author": "Never Gude", - "date": "10.12.2025", - "subtitle": "Just testimg too", - "title": "Article DSADASD", - "filename": "article-1.html" - }, - { - "author": "Never Gude", - "date": "10.12.2025", - "subtitle": "Just testimg", - "title": "Article 1", - "filename": "article-2.html" - } - ] -} diff --git a/public_html/eh/eh/eh/eh-eh/articles.json.tmp b/public_html/eh/eh/eh/eh-eh/articles.json.tmp deleted file mode 100644 index 4838ce9..0000000 --- a/public_html/eh/eh/eh/eh-eh/articles.json.tmp +++ /dev/null @@ -1,26 +0,0 @@ -{ - "articles": [ - { - "author": "Never Gude", - "date": "25.7.2025", - "subtitle": "Neat things I picked up along the way", - "summary": "Testing dsa dsa dsa dsa DDDDDDDDDDDa", - "title": "Random linux utilities", - "filename": "random-linux-utils.html" - }, - { - "author": "Never Gude", - "date": "10.12.2025", - "subtitle": "Just testimg too", - "title": "Article DSADASD", - "filename": "article-1.html" - }, - { - "author": "Never Gude", - "date": "10.12.2025", - "subtitle": "Just testimg", - "title": "Article 1", - "filename": "article-2.html" - } - ] -} diff --git a/public_html/eh/eh/eh/eh-eh/articles/article-1.md b/public_html/eh/eh/eh/eh-eh/articles/article-1.md deleted file mode 100644 index cb14add..0000000 --- a/public_html/eh/eh/eh/eh-eh/articles/article-1.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Article DSADASD -subtitle: Just testimg too -author: Never Gude -date: 10.12.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. - -> Block -> quote -> time yay - -```bash {.numberLines} -gs -dNOPAUSE -sDEVICE=pdfwrite \ - -sOUTPUTFILE=output.pdf \ - -dBATCH 1.pdf 2.pdf -``` - -```c -int hello_world(int x) { - printf("Hello World %i", x); - return x; -} - -``` diff --git a/public_html/eh/eh/eh/eh-eh/articles/article-2.md b/public_html/eh/eh/eh/eh-eh/articles/article-2.md deleted file mode 100644 index 0b9d14a..0000000 --- a/public_html/eh/eh/eh/eh-eh/articles/article-2.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Article 1 -subtitle: Just testimg -author: Never Gude -date: 10.12.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. - -> Block -> quote -> time yay - -```bash {.numberLines} -gs -dNOPAUSE -sDEVICE=pdfwrite \ - -sOUTPUTFILE=output.pdf \ - -dBATCH 1.pdf 2.pdf -``` - -```c -int hello_world(int x) { - printf("Hello World %i", x); - return x; -} - -``` diff --git a/public_html/eh/eh/eh/eh-eh/images/cups_left.svg b/public_html/eh/eh/eh/eh-eh/images/cups_left.svg new file mode 100644 index 0000000..2412435 --- /dev/null +++ b/public_html/eh/eh/eh/eh-eh/images/cups_left.svg @@ -0,0 +1,79 @@ + + + + + + + + + + + diff --git a/public_html/eh/eh/eh/eh-eh/images/cups_left_dark.svg b/public_html/eh/eh/eh/eh-eh/images/cups_left_dark.svg new file mode 100644 index 0000000..7ae7a67 --- /dev/null +++ b/public_html/eh/eh/eh/eh-eh/images/cups_left_dark.svg @@ -0,0 +1,101 @@ + + + + + + + + + + + + diff --git a/public_html/eh/eh/eh/eh-eh/images/cups_logo.svg b/public_html/eh/eh/eh/eh-eh/images/cups_logo.svg new file mode 100644 index 0000000..cecb1db --- /dev/null +++ b/public_html/eh/eh/eh/eh-eh/images/cups_logo.svg @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public_html/eh/eh/eh/eh-eh/images/cups_logo_dark.svg b/public_html/eh/eh/eh/eh-eh/images/cups_logo_dark.svg new file mode 100644 index 0000000..d01e673 --- /dev/null +++ b/public_html/eh/eh/eh/eh-eh/images/cups_logo_dark.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public_html/eh/eh/eh/eh-eh/images/cups_right.svg b/public_html/eh/eh/eh/eh-eh/images/cups_right.svg new file mode 100644 index 0000000..7da7c88 --- /dev/null +++ b/public_html/eh/eh/eh/eh-eh/images/cups_right.svg @@ -0,0 +1,79 @@ + + + + + + + + + + + diff --git a/public_html/eh/eh/eh/eh-eh/images/cups_right_dark.svg b/public_html/eh/eh/eh/eh-eh/images/cups_right_dark.svg new file mode 100644 index 0000000..5770ecf --- /dev/null +++ b/public_html/eh/eh/eh/eh-eh/images/cups_right_dark.svg @@ -0,0 +1,101 @@ + + + + + + + + + + + + diff --git a/public_html/eh/eh/eh/eh-eh/images/favicon.png b/public_html/eh/eh/eh/eh-eh/images/favicon.png new file mode 100644 index 0000000..feb52d1 Binary files /dev/null and b/public_html/eh/eh/eh/eh-eh/images/favicon.png differ 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/index.html b/public_html/eh/eh/eh/eh-eh/index.html index b8c9d0c..3d7ae73 100644 --- a/public_html/eh/eh/eh/eh-eh/index.html +++ b/public_html/eh/eh/eh/eh-eh/index.html @@ -5,6 +5,7 @@ Home + - + +

Home

-
- +

Hello World

-
+
- + +

+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 new file mode 100644 index 0000000..6e860b1 --- /dev/null +++ b/public_html/eh/eh/eh/eh-eh/latex-endeavors.html @@ -0,0 +1,68 @@ + + + + + + + + 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/public_html/eh/eh/eh/eh-eh/random-linux-utils.html b/public_html/eh/eh/eh/eh-eh/random-linux-utils.html index b08aebf..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 @@ -4,8 +4,9 @@ - + Random linux utilities + - + +

Random linux utilities

Neat things I picked up along the way

-

Never Gude

+

Never

25.7.2025

@@ -118,27 +111,24 @@ Ghostscript
-

Merge pdfs

-

Using Ghostscript

+

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.

-
-

Block quote time yay

-
gs -dNOPAUSE -sDEVICE=pdfwrite \
-    -sOUTPUTFILE=output.pdf \
-    -dBATCH 1.pdf 2.pdf
-
int hello_world(int x) {
-    printf("Hello World %i", x);
-    return x;
-}
+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/rsync-android.html b/public_html/eh/eh/eh/eh-eh/rsync-android.html new file mode 100644 index 0000000..d291267 --- /dev/null +++ b/public_html/eh/eh/eh/eh-eh/rsync-android.html @@ -0,0 +1,215 @@ + + + + + + + + Using rsync on Android to syncronise my Music library + + + + + + + +
+

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)
+
+rmnet0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1280
+        inet 10.200.157.166  netmask 255.255.255.0  destination 10.200.157.166
+        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 1000  (UNSPEC)
+
+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
+

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/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 new file mode 100644 index 0000000..56e8624 Binary files /dev/null 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 new file mode 100644 index 0000000..bd0e140 Binary files /dev/null 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/images/shark_top.xcf b/public_html/eh/eh/eh/eh-eh/styles/images/shark_top.xcf new file mode 100644 index 0000000..cbf6098 Binary files /dev/null and b/public_html/eh/eh/eh/eh-eh/styles/images/shark_top.xcf differ diff --git a/public_html/eh/eh/eh/eh-eh/pandoc/style.css b/public_html/eh/eh/eh/eh-eh/styles/style.css similarity index 71% rename from public_html/eh/eh/eh/eh-eh/pandoc/style.css rename to public_html/eh/eh/eh/eh-eh/styles/style.css index 8c72865..e6e14cc 100644 --- a/public_html/eh/eh/eh/eh-eh/pandoc/style.css +++ b/public_html/eh/eh/eh/eh-eh/styles/style.css @@ -1,26 +1,36 @@ :root { --foreground: #1a1a1a; - --background: #fdfdfd; + --background: #fdfdfdf0; --border: #c9c9c9; - --background-html: #e3e3e3; + --html-background: #e3e3e3; --blockquote-text: #606060; --blockquote-border: #e6e6e6; - + --button-border: #e3e3e3; + --button-background: #d0d0d0; } -:root:has(#dark-mode-toggle:checked) { - --foreground: #fdfdfd; - --background: #1a1a1a; - --border: #4c4c4c; - --background-html: #333333; - --blockquote-text: #e6e6e6; - --blockquote-border: #606060; +@media (prefers-color-scheme: dark) { + :root { + --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-color: var(--background-html); - font-family: Cambria, Cochin, Georgia, Times, 'Times New Roman', serif; + /*background: url("recursion.gif");*/ + background: var(--html-background); + background-repeat: repeat-y; + background-size: cover; + font-family: serif; + font-size: 14pt; } body { @@ -38,19 +48,40 @@ body { font-kerning: normal; } +#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; text-align: left; - border: 1pt solid var(--foreground); + border: 4pt ridge var(--border); + background: url("images/shark-top-small.png"); + background-size: contain; } #page-header li { list-style: none; display: inline-block; - padding: 12pt; +} + +#page-header a:active { + border: 2pt inset var(--button-border) +} + +#page-header a { + color: var(--foreground); + text-decoration: none; + margin: 4pt; + padding: 4pt; + border: 2pt outset var(--button-border); + background-color: var(--button-background) } #page-header ul, @@ -89,12 +120,18 @@ body { text-align: right; } -a:not(:hover) { - text-decoration: none; +#page-footer { + border: 4pt ridge var(--border); + background: url("images/shark-top-small.png"); + background-size: contain; + display: flex; + justify-content: center; } -#page-footer { - border: 1pt solid var(--foreground); +#page-footer p { + display: flex; + flex-direction: row; + align-items: center; } /* @@ -122,12 +159,6 @@ article { h1 { font-size: 1.8em; } - - /* - section { - flex-direction: column; - } - */ } @media print { @@ -166,11 +197,15 @@ p { } a { - color: var(--foreground); + color: #268bd2; +} + +a:not(:hover) { + text-decoration: none; } a:visited { - color: var(--foreground); + color: #6c71c4; } img { @@ -220,7 +255,7 @@ blockquote { } code { - font-family: Menlo, Monaco, Consolas, 'Lucida Console', monospace; + font-family: monospace; font-size: 85%; margin: 0; hyphens: manual; diff --git a/src/articles.json b/src/articles.json new file mode 100644 index 0000000..4872ffd --- /dev/null +++ b/src/articles.json @@ -0,0 +1,27 @@ +{ + "articles": [ + { + "author": "Never", + "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" + }, + { + "author": "Never", + "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" + }, + { + "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 new file mode 100644 index 0000000..fb19c9a --- /dev/null +++ b/src/articles/latex-endeavors.md @@ -0,0 +1,16 @@ +--- +title: Latex Endeavors +subtitle: Some unintuitive quirks of Latex +author: Never +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. +--- + +# 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/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/public_html/eh/eh/eh/eh-eh/articles/random-linux-utils.md b/src/articles/random-linux-utils.md similarity index 62% rename from public_html/eh/eh/eh/eh-eh/articles/random-linux-utils.md rename to src/articles/random-linux-utils.md index 3b4e65d..6b5c743 100644 --- a/public_html/eh/eh/eh/eh-eh/articles/random-linux-utils.md +++ b/src/articles/random-linux-utils.md @@ -1,31 +1,20 @@ --- title: Random linux utilities subtitle: Neat things I picked up along the way -author: Never Gude +author: Never date: 25.7.2025 -summary: Testing dsa dsa dsa dsa DDDDDDDDDDDa +summary: Tricks and tools I learned about, while tweaking my Linux sytem or trying to do productive things. --- -## Merge pdfs -### Using Ghostscript +# 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. -> Block -> quote -> time yay - -```bash {.numberLines} +```bash gs -dNOPAUSE -sDEVICE=pdfwrite \ -sOUTPUTFILE=output.pdf \ -dBATCH 1.pdf 2.pdf ``` -```c -int hello_world(int x) { - printf("Hello World %i", x); - return x; -} - -``` 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 new file mode 100644 index 0000000..97a63f4 --- /dev/null +++ b/src/articles/rsync-android.md @@ -0,0 +1,127 @@ +--- +title: Using rsync on Android to syncronise my Music library +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. +--- + +# Setup Termux +Install Termux using F-Droid. + +Update software repos. +```sh +pkg update +``` + +Grant file access permissions using. +```sh +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. +```sh +pkg install openssh +``` + +Start the ssh server daemon. +```sh +sshd +``` + +Get the ip address of the Android machine (in the Hotspot). +```sh +ifconfig +``` +``` +Warning: cannot open /proc/net/dev (Permission denied). Limited output. +lo: flags=73 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) + +rmnet0: flags=4305 mtu 1280 + inet 10.200.157.166 netmask 255.255.255.0 destination 10.200.157.166 + unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 1000 (UNSPEC) + +wlan0: flags=4163 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 +```sh +nmap -Pn +``` +For me `` whould be 10.42.0.200. + +Get the username. +```sh +whoami +``` +``` +u0_a700 +``` + +Set a password for this user. +```sh +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`. +```sh +ssh @ -p 8022 +``` + +# Syncronising files with rsync +Install `rsync` on Termux and Linux. +Make sure to keep your own openssl config. +```sh +pkg install rsync +``` + +Now on your Linux machine, syncronise your Music library with rsync. +```sh +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/public_html/eh/eh/eh/eh-eh/index.md b/src/index.md similarity index 62% rename from public_html/eh/eh/eh/eh-eh/index.md rename to src/index.md index 4919398..fd1105f 100644 --- a/public_html/eh/eh/eh/eh-eh/index.md +++ b/src/index.md @@ -1,4 +1,4 @@ --- title: Home -toc: true --- +Hello World diff --git a/styles/images/shark-top-small.png b/styles/images/shark-top-small.png new file mode 100644 index 0000000..56e8624 Binary files /dev/null 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 new file mode 100644 index 0000000..bd0e140 Binary files /dev/null and b/styles/images/shark-top-small.xcf differ diff --git a/styles/images/shark_top.xcf b/styles/images/shark_top.xcf new file mode 100644 index 0000000..cbf6098 Binary files /dev/null and b/styles/images/shark_top.xcf differ diff --git a/styles/style.css b/styles/style.css new file mode 100644 index 0000000..e6e14cc --- /dev/null +++ b/styles/style.css @@ -0,0 +1,334 @@ +:root { + --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: #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 { + 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; +} + +#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; + text-align: left; + border: 4pt ridge var(--border); + background: url("images/shark-top-small.png"); + background-size: contain; +} + +#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); + text-decoration: none; + margin: 4pt; + padding: 4pt; + border: 2pt outset var(--button-border); + background-color: var(--button-background) +} + +#page-header ul, +#articles ul { + padding-left: 0; +} + +#articles li { + list-style: none; + display: block; +} + +.articles-header { + display: flex; + flex-direction: row; + flex-wrap: nowrap; + justify-content: space-between; +} + +.articles-title { + margin: 8pt 0 4pt 0; + font-size: 14pt; + font-weight: bold; +} + +.articles-author { + margin: 12pt 0 4pt 0; +} + +.articles-summary { + margin: 0; +} + +.articles-date { + margin: 0; + text-align: right; +} + +#page-footer { + border: 4pt ridge var(--border); + background: url("images/shark-top-small.png"); + background-size: contain; + display: flex; + justify-content: center; +} + +#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) { + body { + font-size: 0.9em; + padding: 12pt; + } + + h1 { + font-size: 1.8em; + } +} + +@media print { + html { + background-color: white; + } + + body { + background-color: transparent; + color: black; + border: none; + font-size: 12pt; + } + + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + + h2, + h3, + h4 { + page-break-after: avoid; + } + + #page-header, + #page-footer { + display: none; + } +} + +p { + margin: 1em 0; +} + +a { + color: #268bd2; +} + +a:not(:hover) { + text-decoration: none; +} + +a:visited { + color: #6c71c4; +} + +img { + max-width: 100%; +} + +svg { + height: auto; + max-width: 100%; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + margin-top: 1.4em; +} + +h5, +h6 { + font-size: 1em; + font-style: italic; +} + +h6 { + font-weight: normal; +} + +ol, +ul { + padding-left: 1.7em; + margin-top: 1em; +} + +li>ol, +li>ul { + margin-top: 0; +} + +blockquote { + margin: 1em 0 1em 1.7em; + padding-left: 1em; + border-left: 2pt solid var(--blockquote-border); + color: var(--blockquote-text); +} + +code { + font-family: monospace; + font-size: 85%; + margin: 0; + hyphens: manual; +} + +pre { + margin: 1em 0; + overflow: auto; +} + +pre code { + padding: 0; + overflow: visible; + overflow-wrap: normal; +} + +.sourceCode { + background-color: transparent; + overflow: visible; +} + +hr { + background-color: var(--foreground); + border: none; + height: 1pt; + margin: 1em 0; +} + +table { + margin: 1em 0; + border-collapse: collapse; + width: 100%; + overflow-x: auto; + display: block; + font-variant-numeric: lining-nums tabular-nums; +} + +table caption { + margin-bottom: 0.75em; +} + +tbody { + margin-top: 0.5em; + border-top: 1pt solid var(--foreground); + border-bottom: 1pt solid var(--foreground); +} + +th { + border-top: 1pt solid var(--foreground); + padding: 0.25em 0.5em 0.25em 0.5em; +} + +td { + padding: 0.125em 0.5em 0.25em 0.5em; +} + +header { + margin-bottom: 4em; + text-align: center; +} + +#TOC li { + list-style: none; +} + +#TOC ul { + padding-left: 1.3em; +} + +#TOC>ul { + padding-left: 0; +} + +#TOC a:not(:hover) { + text-decoration: none; +}