Compare commits

..

37 Commits

Author SHA1 Message Date
a551c42f91 [posts/diy-uv-pcb-exposure-unit] Cleaned up 2025-04-14 23:17:15 +02:00
35842bb56f [posts/diy-uv-pcb-exposure-unit] Added cover 2025-04-14 23:16:49 +02:00
adb7ab2856 Removed image exif data (probably); resized images and cleaned up stuff 2025-04-14 22:51:52 +02:00
db1c571671 [posts/diy-uv-pcb-exposure-unit] Added new post 2025-04-14 09:42:51 +02:00
9986e046e7 Now using page bundles for serving page resources 2025-04-14 09:20:51 +02:00
bed37b16bf [posts/how-it-all-began] Fixed wrong position of a quotation mark 2025-04-13 22:31:53 +02:00
cc58191c2b Changed text align to justify on posts text 2025-04-13 22:30:45 +02:00
1f6167c9f2 Fixed problem in german about page; fixed wrong usage of quotation marks in the english articles 2025-04-13 20:18:30 +02:00
8da401dc8f Improved about page: unified the text anchors (using {id=}) 2025-04-13 20:05:14 +02:00
87da443ca4 Added contents of the about page 2025-04-13 20:01:49 +02:00
5f0bfa9e16 Added the first post
- about the history and idea of my hobby and
- how the blog started
- what contents are planned
- and more
2025-04-13 19:34:49 +02:00
6121e876c7 Removed all the demo stuff 2025-04-13 14:02:04 +02:00
41eeb387c4 Re-wrote the welcome box on the start page, deleted the about page (which was just for testing) 2025-04-13 13:05:01 +02:00
fbeaebddcd Now added the footer; forgot it in the previous commit 2025-04-09 21:11:28 +02:00
e029a961bc Added swetrix tracker script and noscript elements 2025-04-09 20:59:05 +02:00
177d74e834 Updated theme; fixed and beautified the tags pages 2025-04-09 20:52:37 +02:00
298cbb1904 And added a link to the forked theme 2025-04-09 19:11:01 +02:00
330e23ebcd added more info in README.md 2025-04-09 19:10:06 +02:00
6d04d6c9e8 Fixed issues when cloning the repo to build; updated clone instructions 2025-04-09 19:08:05 +02:00
7879812f1a Removed the re-terminal theme 2025-04-09 18:39:05 +02:00
c2a2b128b5 Also showing the reading time now; with custom reading speeds for each language 2025-04-09 18:35:53 +02:00
2e5953b288 Fixed using wrong forked theme version (was on a devel branch) 2025-04-09 17:22:13 +02:00
e1478a9a88 De-minified everything (for better git diffs); also fixed anyways wrong build from previous commit 2025-04-09 17:18:04 +02:00
5b8d74064e Added more info in the footer 2025-04-09 17:16:50 +02:00
a0e754836e Did it now, really; also added a _index.html for the welcome box 2025-04-09 17:13:37 +02:00
b891a66460 Added some more examples to see that code blocks and all the other fancy stuff are working 2025-04-09 17:12:24 +02:00
ed49a49b1b Removed link to categories taxonomy page 2025-04-08 22:03:30 +02:00
04254c81a4 Moved from re-terminal to terminal theme 2025-04-08 22:02:09 +02:00
be98c1d9dd Added info in README about how to run it locally 2025-04-08 19:02:22 +02:00
04a4c128b1 Added build instructions to README.md 2025-04-08 18:55:04 +02:00
125b00098a Minified the build 2025-04-08 18:53:26 +02:00
020265718c Improved tags listing 2025-04-08 18:52:23 +02:00
4df732ccc3 Added a tag to see how the theme behaves 2025-04-08 18:25:25 +02:00
400c937e57 Improved reading speed values (made them more realistic); for this, a new (partially) ai-generated article has been added 2025-04-08 18:16:55 +02:00
7e2c01abd9 Fixed broken links to imprint caused by wrong baseURL config 2025-04-08 12:59:37 +02:00
34c4b34b5e Added new links to tags and categories below the header 2025-04-08 12:58:56 +02:00
52578f74a5 Added the Pifi logo as favicon 2025-04-08 12:27:23 +02:00
244 changed files with 4252 additions and 15408 deletions

6
.gitmodules vendored
View File

@@ -1,3 +1,9 @@
[submodule "themes/coming-soon"] [submodule "themes/coming-soon"]
path = themes/coming-soon path = themes/coming-soon
url = https://github.com/mansoorbarri/coming-soon.git url = https://github.com/mansoorbarri/coming-soon.git
[submodule "themes/terminal"]
path = themes/terminal
url = https://github.com/panr/hugo-theme-terminal.git
[submodule "themes/terminal-fork"]
path = themes/terminal-fork
url = https://github.com/BlueFox4/hugo-theme-terminal

View File

@@ -4,11 +4,31 @@ This is my [blog](https://blog.privacynerd.de/), which is run by hugo. The repos
## Cloning ## Cloning
To clone and make some changes, you need to clone the repository. This one also contains [git submodules](https://git-scm.com/book/en/v2/Git-Tools-Submodules) (the re-terminal theme), that's why you should use the argument `--recurse-submodules`. To clone and make some changes, you need to clone the repository. This one also contains [git submodules](https://git-scm.com/book/en/v2/Git-Tools-Submodules) (the re-terminal theme), that's why you should use the argument `--recurse-submodules`. The commands after that pull all branches of the [forked terminal theme](https://github.com/BlueFox4/hugo-theme-terminal) so that nothing bad happens (commands taken from [here](https://stackoverflow.com/questions/10312521/how-do-i-fetch-all-git-branches).
```sh ```sh
git clone --recurse-submodules https://git.privacynerd.de/git.privacynerd.de/blog.privacynerd.de blog git clone --recurse-submodules https://git.privacynerd.de/git.privacynerd.de/blog.privacynerd.de blog
cd blog cd blog/themes/terminal-fork
git branch -r \
| grep -v '\->' \
| sed "s,\x1B\[[0-9;]*[a-zA-Z],,g" \
| while read remote; do \
git branch --track "${remote#origin/}" "$remote"; \
done
git fetch --all
git pull --all
cd ../../
```
## Running & Building
To build or run, just use one of the commands below. It will generate a new html in a fresh public folder.
> IMPORTANT! You have to be in the root of this repository to proceed. Executing one of the below commands will delete the `public` folder (to allow for a really fresh build).
```sh
rm -r public/ && hugo server --bind 127.0.0.1 -b http://127.0.0.1/ --minify --openBrowser --appendPort --printI18nWarnings
rm -r public/ && hugo build --minify --printI18nWarnings
``` ```
## Acknowledgements ## Acknowledgements

13
content/_index.de.md Normal file
View File

@@ -0,0 +1,13 @@
+++
author = "Benjamin"
date = 2025-04-13T12:54:00+02:00
framed = true
+++
# Ich grüße Sie! 👋
Mein Name ist Benjamin, und ich bin hauptsächlich als _BlueFox_ bekannt.
Willkommen in diesem Blog! Ich liebe es, an Elektronik herumzubasteln, Sachen in 3D zu drucken und mit Holz zu arbeiten, aber ich `programmiere` auch ein bisschen und bin ein begeisterter Selbsthoster. Hier poste ich hin und wieder, was ich so anstelle.
**Schau dich doch einfach mal um!**

13
content/_index.en.md Normal file
View File

@@ -0,0 +1,13 @@
+++
author = "Benjamin"
date = 2025-04-13T12:54:00+02:00
framed = true
+++
# Hey there! 👋
My Name is Benjamin, and I'm mostly known as _BlueFox_.
Welcome to this blog! I love tinkering around with electronics, 3D printing stuff and working with wood, but I also do a bit of `programming` and am an avid self-hoster. This is where I post about my activities from time to time.
**Just have a look around!**

View File

@@ -1,41 +1,29 @@
+++ +++
title = 'Über' title = 'Über'
date = 2025-04-05T20:14:29+02:00 date = 2025-04-13T13:02:20+02:00
draft = false draft = false
toc = false toc = false
+++ +++
## Worum es hier gehen soll {id=intention}
# Hallo in a new age Also, mein Name ist Benjamin, und ich bin meistens als BlueFox bekannt. Ich liebe es, an Elektronik herumzubasteln, Sachen in 3D zu drucken und mit Holz zu arbeiten, aber ich programmiere auch ein bisschen und bin ein begeisterter Selbsthoster.
You can call me Mirus and I forked the original Terminal theme for Hugo, because Radek, the original creator of the theme stop the maintenance and archived the repo. Dies ist mein persönlicher Blog (den ich in meiner Freizeit betreibe, all das ist nur ein Hobby), in dem ich über alle möglichen Dinge schreibe, die ich DIY-mäßig mache. Dazu gehören:
So I already pushed a few improvements that I did for my humble blog and I'm going to add some more features in the future, also any contribution is welcome - Posts über meine DIY-Projekte,
- über neue Erfahrungen, die ich beim Basteln sammle,
- auch hier und da ein Update zu vorhandenen Projekten, Libraries von mir,
- und vielleicht ja auch etwas ganz Neues!
Below you can read the original about from Radek Schau dich doch [einfach mal um](/), und vielleicht findest du ja etwas Interessantes!
> Hi there
>
> My name is Radek and I'm the author of this theme.
> I made it to help you present your ideas easier.
>
> We all know how hard is to start something on the web,
> especially these days. You need to prepare a bunch of stuff,
> configure them and when thats done — create the content.
>
> This theme is pretty basic and covers all of the essentials.
> All you have to do is start typing!
>
> The theme includes:
>
> - **5 duotone themes**,
> depending on your preferences (orange, red, blue, green, pink)
> - [**Fira Code**](https://github.com/tonsky/FiraCode)
> as default monospaced font. It's gorgeous!
> - **really nice, custom duotone** syntax highlighting based on
> [**PrismJS**](https://prismjs.com)
> - mobile friendly layout
>
> So, there you have it... enjoy!
Blubb. ## Das Logo {id=the-logo}
Das Logo für diesen Blog ist entstanden, als mir irgendwann mal langweilig war. Es gefiel mir einfach, und seitdem verwende ich es regelmäßig für meine Projekte. Um genau zu sein, habe ich es gezeichnet, als ich vielleicht 11 Jahre alt war, und das erste Mal wurde es in einem `Django + Python`-Projekt von mir verwendet, das sich „PiFi“ nannte - was jetzt auch der Name eines High-Speed-Wifi-Nachrüstsatzes und eines HiFi-Systems ist, die beide auf Raspberry Pi's basieren (aber diese sind völlig unabhängig voneinander und konnten meine Namensgebung nicht kennen). Naja.
## Die Geschichte dahinter (und noch mehr) {id=the-story-behind-it}
Der erste Post in diesem Blog verrät viel über die Geschichte und wie es zu der Idee für diesen Blog kam. Wen es interessiert, der kann es [hier]({{< ref "posts/how-it-all-began.md" >}}) nachlesen.

View File

@@ -1,41 +1,30 @@
+++ +++
title = 'About' title = 'About'
date = 2025-04-05T20:14:29+02:00 date = 2025-04-13T13:02:20+02:00
draft = false draft = false
toc = false toc = false
+++ +++
# Hello in a new age ## The intention {id=intention}
You can call me Mirus and I forked the original Terminal theme for Hugo, because Radek, the original creator of the theme stop the maintenance and archived the repo. Well, my Name is Benjamin, and Im mostly known as BlueFox. I love tinkering around with electronics, 3D printing stuff and working with wood, but I also do a bit of programming and am an avid self-hoster.
So I already pushed a few improvements that I did for my humble blog and I'm going to add some more features in the future, also any contribution is welcome This is my personal blog (driven in my free time, all of this is just a hobby) about all the kinds of things I'm doing DIY-wise. This includes:
Below you can read the original about from Radek - posts about my DIY projects,
- about new experiences that I gather while tinkering,
- also an update here and there on existing projects and libraries of mine,
- and maybe something completely new!
> Hi there Just have a [look around](/), perhaps you'll find something interesting!
>
> My name is Radek and I'm the author of this theme.
> I made it to help you present your ideas easier.
>
> We all know how hard is to start something on the web,
> especially these days. You need to prepare a bunch of stuff,
> configure them and when thats done — create the content.
>
> This theme is pretty basic and covers all of the essentials.
> All you have to do is start typing!
>
> The theme includes:
>
> - **5 duotone themes**,
> depending on your preferences (orange, red, blue, green, pink)
> - [**Fira Code**](https://github.com/tonsky/FiraCode)
> as default monospaced font. It's gorgeous!
> - **really nice, custom duotone** syntax highlighting based on
> [**PrismJS**](https://prismjs.com)
> - mobile friendly layout
>
> So, there you have it... enjoy!
Blubb.
## The Logo {id=the-logo}
The logo for this blog was created when I was bored at some point. I just loved the look of it and since then, I use it regularly for projects of mine. To be more precise, I drew it when I was maybe 11 years old, and the first time it was used was in a `Django + Python` project of mine, called “PiFi” - which is now also the name of a high-speed wifi upgrade kit and a hifi system, both based on Raspberry Pi's (but these are completely unrelated and couldn't have known my naming). Whatever.
## The story behind it (and more) {id=the-story-behind-it}
The first post in this blog reveals a lot about the history and how the idea for this blog came about. If you are interested, you can read it [here]({{< ref "posts/how-it-all-began.md" >}}).

Binary file not shown.

After

Width:  |  Height:  |  Size: 462 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 646 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 760 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 360 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 236 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 324 KiB

View File

@@ -0,0 +1,70 @@
+++
title = 'UV-Belichter (LED) aus Marke Eigenbau'
date = 2025-04-14T08:11:20+02:00
draft = false
toc = true
cover = 'cover.jpg'
+++
Ist man eine gewisse Zeit lang in der (Elektronik-)DIY-Szene unterwegs, kommt man irgendwann auch um Platinen (gedruckte Leiterplatten/PCBs) nicht herum. Vorteile gegenüber dem manuellen Löten von Schaltungen auf Loch- bzw. Streifenrasterplatinen sind vor allem die einfachere Replizierbarkeit (einmal designed kann man eine Schaltung theoretisch beliebig oft herstellen) und die Möglichkeit, Platz effizienter zu nutzen (eine Platine ist fast immer kleiner als eine gelötete Lochrasterplatine mit der selben Schaltung). Letzendlich wirken Geräte mit Platinen aber auch schlicht professioneller. Sicherlich gibt es noch mehr Vorteile (und natürlich auch Nachteile!), auf deren Auflistung ich hier allerdings aus Gründen der Einfachheit verzichte.
Heutzutage kann man (selbst) kreierte Leiterplattendesigns sehr leicht herstellen lassen, bei einschlägigen Angeboten aus China zahlt man für eine einfache Platine mit 2 Seiten nicht mehr als 5€. Im Preis allerdings nicht mit inbegriffen sind die Versandkosten und die Wartezeit, in der man auf seine Platinen warten muss. Wenn man nicht vorhat, mehrere verschiedene Designs im Jahr anzufertigen, oder nur einmalig eine spezielle Platine braucht, ist mit solchen Angeboten gut bedient. Braucht man allerdings des öfteren Spezialanfertigungen, kann es (auch bei den chinesischen Angeboten) schnell lukrativ erscheinen, sich die Fertigung ins Haus zu holen. Letztlich macht es auch einfach Spaß und gibt einem zumindest das Gefühl von ein wenig Unabhängigkeit, seine Platinen selbst herzustellen!
Nachdem ich also schon länger von eigens hergestellten Platinen träumte, bin ich nun einen Schritt weiter in die Umsetzung gegangen. Es gibt verschiedene Möglichkeiten, Leiterplatten selbst herzustellen. Die günstigste Methode ist hierbei vermutlich das Belichten eines Platinenrohlings mit photopositiver Beschichtung, und das anschließende Entwickeln und schließlich Ätzen der belichteten Stellen. Das Gerät zum Ätzen selbst zu bauen erschien mir zu heikel, hier entschied ich mich vorerst für ein gebrauchtes [Ätzgerät 1 von pro-ma](https://gie-tec.de/produkt/aetzgeraete-fuer-platinen/), was mit 50€ sehr günstig war. Was man aber sicher selbst bauen kann, ist der **UV-Belichter**. Hier gibt es verschiedene Ansätze, ich möchte hier einfach meinen teilen (siehe z.B. [hier](https://www.all4hardware4u.de/platinenherstellung/belichtung/belichtungsgeraet-mit-uv-leds/) oder auch [hier](http://www.fdm-ware.de/UV-Led/) für die Modelle, bei denen ich Inspiration gefunden habe)!
Jetzt also genug der Vorrede, es folgt das wirklich Wichtige!
## Das Gehäuse {id=the-housing}
Als Gehäuse habe ich einen einfachen Quader aus MDF-Platten mit einem zusätzlichen kleinen Abschnitt vorne gebaut, in dem die
Steuerelektronik ihren Platz später finden soll.
{{< figure src="housing-raw-finished.jpg" alt="Dieses Bild würde das fertige Gehäuse mit Acrylglasscheibe und einigen losen Bauteilen zeigen." caption="Das fertige Gehäuse mit Acrlyglas-Scheibe" >}}
Damit das UV-Licht an die beschichtete Platine kommen kann, muss die Halterung Transparent sein. Hier tut eine Acrylglas-Scheibe ihre Dienste. Wichtig hierbei: diese **muss** UV-durchlässig ist, was besonders bei Scheiben für den Gartenbereich nicht unbedingt gegeben ist! Baumarkt-Mitarbeiter konnten da in meinem Fall nicht helfen (ist ja auch eine sehr spezielle Anforderung ;), aber dank Internet kann man hier schon mehr ausfindig machen. Manchmal hilft es schon, auf der Webseite des Baumarktes der Wahl nach UV-durchlässigen Acrylglasscheiben nachzusehen.
Diese Scheibe muss zu den LEDs einen gewissen Abstand haben, damit sich das Licht der LEDs gleichmäßig verteilen kann. Hier kann man natürlich einen perfekten Abstand ausrechnen - über den Abstrahlwinkel der und den Abstand zwischen den einzelnen LEDs. Ich habe mich hier allerdings für die einfachere (und manchmal sehr ungenaue) Pi-mal-Daumen-Methode entschieden - die aber funktioniert hat.
{{< figure src="collage-plans.png" alt="Dieses Bild zeigt Skizzen für die einzelnen Seiten des Holzkastens" caption="Pläne des Kastens" >}}
## Die LEDs {id=the-leds}
UV-LEDs bekommt man recht einfach im Elektronik-Versand, ich entschied mich für diesen Eigenbau vorerst für 48 LEDs in 6 Reihen mit je 8 LEDs auf zwei 160x100mm-Lochrasterplatinen (ja, Streifenraster geht auch und wäre einfacher gewesen :). Da UV-LEDs eine Betriebsspannung von etwa 3,0 bis 3,3V haben und ich ein 12V-Netzteil nutzen wollte, braucht man für jede LED einen Widerstand von 470 Ohm, an dem bei 20mA etwa 9V abfallen (für die Berechnung von LED-Vorwiderständen gibt es etliche gute Tutorials im Internet!)
Was die Belichtungszeit betrifft, steht weiter unten im Abschnitt [„Die Praxis - Belichtungszeit“](#exposure-time).
{{< figure src="led-distribution.png" alt="Links: Skizze über die Verteilung der LEDs, Rechts: Blick von oben auf die LEDs" caption="li.: Skizze über die Verteilung der LEDs; re.: Blick von oben auf die LEDs" >}}
## Die Lackierung {id=the-lacquering}
Als Lackierung für den Belichterraum bot sich Chrom-Effekt-Lack an. Also, alles bis auf den Belichtungsraum abgeklebt (und naürlich auch die LEDs!) und mehrmals, den Angaben auf der Sprühdose entsprechend, lackiert, und über Nacht trocknen lassen.
{{< figure src="masked_for_painting.jpg" alt="Bild des zur Lackierung abgeklebten Kastens" caption="Kasten ist abgeklebt, gleich wird lackiert!" >}}
{{< figure src="painted_inside.jpg" alt="Bild des innen fertig lackierten Kastens" caption="Es glänzt!" >}}
## Die Steuerelektronik {id=the-control-unit}
Hier stand ich vor der Wahl: einen einfachen Schalter verbauen, oder eine komplexere Logik mit Timerfunktion? Die Idee des eingebauten Timers wirkte anziehend - endlich mal wieder was Hardwarenahes programmieren. Also: eine Lochrasterplatine (vielleicht die letzte jemals?!) mit Raspberry Pi Pico, Relais, Anschluss für ein LCD-Display und einige Steuerelemente bestückt, mit meinen schon vorhandenen Libraries ein kleines Interface programmiert und fertig war die Elektronik! Um in das Gehäuse eingebaut zu werden, brauchte es noch eine Blende. Alles hierzu findet sich im dazugehörigen [Git-Repository](https://git.privacynerd.de/BlueFox/uv-belichter-software)!
{{< figure src="controller-on-dividing-wall.jpg" alt="Bild der Steuerplatine" caption="Die Steuerplatine" >}}
{{< figure src="front-panel.jpg" alt="Bild der Blende mit LCD-Displays und Steuerelementen im Betrieb" caption="Blende mit LCD-Displays und Steuerelementen im Betrieb" >}}
## Die Praxis - Belichtungszeit {id=exposure-time}
Wie schaut's nun also in der Praxis aus - die entscheidende Frage zum Schluss. Ich möchte dazu sagen, dass es sich hier um meine ersten Erfahrungen mit der manuellen Platinenherstellung handelt. Ich verwendete eine einfache Blinkschaltung (die auch mein erstes vollständig selbst erstelltes Leiterplattendesign war) für die Tests.
{{< figure src="blinky-test-pcb.png" alt="Seite-zu-Seite-Ansicht des gedruckten Schaltkreises und der Ansicht am Computer mit allen Layern" caption="Das Testobjekt..." >}}
Also, meine ersten Erfahrungen mit dem selbstgebautem Belichter waren gemischt. Der erste Versuch mit 3 Minuten Belichtungszeit ging etwas schief. Konkret sah man auch nach 10-20 Minuten im Entwickler auf Raumtemperatur keine Konturen, und auch nach 20-30 Minuten Ätzen passierte nichts. Der zweite Versuch war schon vielversprechender, nach 30 min belichten sah man nach ca. 15 min entwickeln erste Konturen, die dann beim Ätzen auch tatsächlich verschwanden. Nach einigen weiteren Versuchen kam ich schließlich auf die Idee, statt mit einer bedruckten Folie, mit zwei übereinander gelegten zu arbeiten, wodurch viel weniger Licht durch die bedruckten Flächen kommt. Die Ergebnisse wurden schlagartig besser, und nach kurzer Zeit hatte die Leiterplatte zur Funktion des Schaltkreises ausreichende Qualität!
{{< figure src="first-diy-pcbs.jpg" alt="Collage der ersten Herstellungsversuche bis zum ersten funktionstüchtigen Exemplar" caption="...und die Ergebnisse" >}}
Also: Die Belichtungszeit, bei der sich erfolgreiche Ausführungen ergeben, liegt zwischen 40 und 45 Minuten. Das ist zugegebenermaßen eine recht lange Zeit, für meine ersten Versuche allerdings ausreichend und wenn man den Preis fertiger Belichter bedenkt (der gut mal in die Hunderte gehen kann) mehr als akzeptabel (zusammengerechnet hat der Belichter ca. 30-50€ Materialwert - und der Bau hat viel Spaß gemacht!). Für kürzere Belichtungszeiten überlege ich, nachträglich die LED-Anzahl zu erhöhen. Aber das ist eine Geschichte für ein andermal.

View File

@@ -0,0 +1,70 @@
+++
title = 'Self-built UV exposure unit (LED)'
date = 2025-04-14T08:11:20+02:00
draft = false
toc = true
cover = 'cover.jpg'
+++
If you've been around the (electronics) DIY scene for a while, at some point you can't avoid circuit boards (printed circuit boards/PCBs). The main advantages over soldering circuits by hand on perforated or strip-grid boards are that they are easier to replicate (once designed a circuit can theoretically be produced as often as you like) and that space can be used more efficiently (a board is almost always smaller than a soldered perforated grid board with the same circuit). Ultimately, devices with circuit boards also simply look more professional. There are certainly more advantages (and of course also disadvantages!), but I will not list them here for the sake of simplicity.
Nowadays, it is very easy to have (self-)created circuit board designs manufactured, with relevant offers from China you pay no more than €5 for a simple circuit board with 2 sides. However, the price does not include the shipping costs and the time you have to wait for your PCBs. If you are not planning to produce several different designs a year, or only need a special circuit board once, you are well served with such offers. However, if you often need custom-made products, it can quickly become lucrative (even with the Chinese offers) to bring the production in-house. At the end of the day, it's fun and at least gives you the feeling of a little independence to make your own circuit boards!
So after dreaming of making my own circuit boards for some time, I have now gone one step further in the realization. There are various ways to produce printed circuit boards yourself. The cheapest method is probably exposing a blank PCB with a photopositive coating and then developing and finally etching the exposed areas. Building the etching device myself seemed too tricky, so I decided to buy a used [Ätzgerät 1 from pro-ma](https://gie-tec.de/produkt/aetzgeraete-fuer-platinen/), which was very cheap at €50. But what you can certainly build yourself is the **UV exposure unit**. There are different approaches here, I just want to share mine here (see e.g. [here](https://www.all4hardware4u.de/platinenherstellung/belichtung/belichtungsgeraet-mit-uv-leds/) or also [here](http://www.fdm-ware.de/UV-Led/) for the models where I found inspiration)!
So enough of the introduction, here's the really important stuff!
## The housing {id=the-housing}
For the housing, I built a simple box from MDF boards with an additional small section at the front, where the control electronics will be located later.
{{< figure src="housing-raw-finished.jpg" alt="This picture would show the finished housing with acrylic glass pane and some loose components." caption="The finished housing with acrylic glass pane" >}}
In order for the UV light to reach the coated circuit board, the holder must be transparent. An acrylic glass pane does the job here. Important here: this **must** be UV-permeable, which is not necessarily the case with panes for the garden area! DIY store staff were unable to help in my case (it's a very specific requirement ;), but thanks to the internet you can find out more here. Sometimes it helps to look on the website of the DIY store of your choice for UV-permeable acrylic glass panes.
This pane must have a certain distance to the LEDs so that the light from the LEDs can be distributed evenly. You can of course calculate a perfect distance at - using the beam angle of the LEDs and the distance between the individual LEDs. However, I decided to use the simpler (and sometimes very inaccurate) rule of thumb here - but it worked.
{{< figure src="collage-plans.png" alt="This picture shows sketches for the individual sides of the wooden box" caption="Sketches of the box" >}}
## The LEDs {id=the-leds}
UV LEDs are quite easy to obtain from electronics suppliers. For this DIY project, I decided to use 48 LEDs in 6 rows of 8 LEDs each on two 160x100mm perforated grid boards (yes, a strip grid is also possible and would have been easier :). Since UV LEDs have an operating voltage of about 3.0 to 3.3V and I wanted to use a 12V power supply, you need a resistor of 470 Ohm for each LED, which drops about 9V at 20mA (there are several good tutorials on the Internet for calculating LED series resistors).
As far as the exposure time is concerned, see below in the section [“The practical part - Exposure time”](#exposure-time).
{{< figure src="led-distribution.png" alt="Links: Sketch of the distribution of the LEDs, right: view of the LEDs from above" caption="left: Sketch of the distribution of the LEDs; right: view of the LEDs from above" >}}
## The lacquering {id=the-lacquering}
Chrome-effect paint was the paint of choice for the exposure area. So, I masked everything except for the exposure area (and of course
the LEDs!) and painted it several times according to the instructions on the spray can and left it to dry overnight.
{{< figure src="masked_for_painting.jpg" alt="Picture of the box masked for painting" caption="Box is masked, about to be painted!" >}}
{{< figure src="painted_inside.jpg" alt="Picture of the inside of the painted box" caption="It's shiny!" >}}
## The control unit {id=the-control-unit}
Here I was faced with a choice: install a simple switch or a more complex logic with a timer function? The idea of the built-in timer seemed appealing - finally programming something hardware-related again. So I assembled a breadboard (perhaps the last one ever?!) with a Raspberry Pi Pico, relays, a connection for an LCD display and some control elements, programmed a small interface with my existing libraries and the electronics were ready! To be installed in the housing, it still needed a cover. All the necessary information can be found in the corresponding [git repository](https://git.privacynerd.de/BlueFox/uv-belichter-software)!
{{< figure src="controller-on-dividing-wall.jpg" alt="Picture of the control unit" caption="The control unit" >}}
{{< figure src="front-panel.jpg" alt="Image of the front panel with the LCD and control elements in operation" caption="Front panel with LCD and control elements in operation" >}}
## The practical part - Exposure time {id=exposure-time}
So what does it look like in practice - the crucial question at the end. I would like to say that this is my first experience with manual PCB production. I used a simple blinky circuit (which was also my first completely self-made PCB design) for the tests.
{{< figure src="blinky-test-pcb.png" alt="Side-by-side view of the printed circuit and the view on the computer with all layers" caption="The test object..." >}}
So, my first experiences with the self-built exposure unit were mixed. The first attempt with 3 minutes exposure time went somewhat wrong. Specifically, no contours were visible even after 10-20 minutes in the developer at room temperature, and nothing happened even after 20-30 minutes etching. The second attempt was more promising, after 30 minutes of exposure the first contours could be seen after about 15 minutes of development, which actually disappeared during etching. After a few more attempts, I finally came up with the idea of working with two overlapping films instead of one, which meant that much less light came through the printed areas. The results were suddenly improving, and after a short time the circuit board was of sufficient quality for the circuit to function!
{{< figure src="first-diy-pcbs.jpg" alt="Collage of the first manufacturing attempts up to the first functional PCB" caption="...and the results" >}}
So: The exposure time for successful results is between 40 and 45 minutes. Admittedly, that's quite a long time, but it's sufficient for my first attempts and more than acceptable considering the price of a finished exposure unit (which can easily run into the hundreds) (the exposure unit costs around €30-50 in total - and building it was a lot of fun!). For shorter exposure times, I am considering increasing the number of LEDs afterwards. But that's a story for another time.

Binary file not shown.

After

Width:  |  Height:  |  Size: 714 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 425 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 556 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 309 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 386 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

View File

@@ -0,0 +1,111 @@
+++
title = 'Wie es alles anfing - oder: der erste Post!'
date = 2025-04-13T15:10:20+02:00
draft = false
toc = true
cover = 'cover.png'
+++
## Vorüberlegungen {id=thinking}
Ich habe lange überlegt, wie ich diesen Post schreibe. Was muss erzählt werden, was ist unwichtig? Vieles muss wegen der Übersichtlichkeit weggelassen werden, und an so manches erinnere ich mich vielleicht schon gar nicht mehr. Jedenfalls möchte ich mit diesem Artikel meine Intention erklären, wie ich dazu kam, diesen Blog zu starten. Doch um das zu erklären, muss man die Ursprünge verstehen.
## Wie alles anfing {id=beginnings}
Alles begann damit, dass ich als Schüler der 5. oder 6. Klasse (ich weiß es nicht mehr so genau!) anfing, auf einem Laptop für die Schule ein Batch-Skript zu schreiben. Ja, so war es, ich gebe es zu - auch wenn ich nicht weiß, wer oder was mich dazu trieb. Eine grobe Vorstellung habe ich aber: Ich glaube, es war so eine intrinsische Motivation eines Kindes, herauszufinden, wie dieser Computer da vor ihm funktioniert, die mich dazu trieb.
Wie dem auch sei, eines meiner „Programme“ sah in etwa so aus:
```batch
@echo off
echo Herzlich Wilkommen , bitte Passwort eingeben
color 7b
:PSWD
set/p x=
if ''%x%''==''sehrsicher'' goto openfile
pause
:false
echo Falsches Passwort , bitte erneut versuchen.
color 7c
goto PWSD
:openfile
echo Passwort richtig , bitte 'Enter' druecken!
goto Video
pause
:Video
echo Wenn sie sich ein Video anschauen moechten , dann geben sie jetzt ,,Ja`` ein , wenn nicht dann einfach ,,Nein''!
color 7b
:PSWD
set/p x=
if ''%x%''==''Ja'' goto OpenVideo
:false
goto exit
:OpenVideo
start C:\Users\<ZENSIERT>\<JA WIRKLICH>\
:exit
exit
```
Nun ja, daraufhin schenkte mir mein Vater das Buch ein Lehrbuch zu Python3[^1], und es gab kein Zurück mehr. Ich glaube, ich habe mit meinen 11 oder 12 Jahren das gesamte Lehrbuch durchgelesen. Jedenfalls stieg ich irgendwann auf Linux um (anfangs [Linux Mint](https://linuxmint.com/)) - dann kam Corona[^2].
[^1]: [Python3 - das umfassende Handbuch von Johannes Ernesti und Peter Kaiser](https://www.rheinwerk-verlag.de/python-3-das-umfassende-handbuch/) (keine Werbung!)
[^2]: So einfach war es dann auch wieder nicht, aber aus Gründen der Übersichtlichkeit habe ich hier eben vereinfacht.
## Corona {id=covid-19}
Für Schüler bedeutete Corona und das damit einhergehende Homeschooling und die Isolation vor allem eins: viel Zeit. Man nutzte sie unterschiedlich. Ich eben dafür, meinem neuen Hobby intensiv nachzugehen. In dieser Zeit lernte ich neue Programmiersprachen wie Java (z.T. für Minecraft-Plugins, [hier](https://git.privacynerd.de/BlueFox/MC-Plugins) sind einige zu finden), brachte mir sogar etwas C und Assembler bei.
In dieser Zeit bekam ich meinen ersten Raspberry Pi geschenkt - mit weitreichenden Folgen. Denn es führte dazu, dass ich mich mehr und mehr der Hardwareseite zuwandte. Hatte ich zuvor Webapps mit Datenbank in [Django](https://www.djangoproject.com/) bzw. [Flask](https://flask.palletsprojects.com/en/stable/) und Python geschrieben, programmierte ich jetzt einfache Blinkschaltungen, dann irgendwann Skripte, die Sensordaten auslesen und auf einem kleinen OLED-Display (0.96") anzeigen oder die Lampen in meinem Zimmer auf Knopfdruck an- und ausschalteten (weil ein Lichtschalter ja nicht genug ist!). Ich entdeckte in dieser Zeit auch einen 3D-Drucker für mich, der bei uns seit längerer Zeit fast unbenutzt herumstand.
{{< figure src="esafep.jpg" alt="Bild des ESafeP - ein „Tresor“ aus Holz mit eigener Software" caption="Der „ESafeP“ - sehr stabil!" >}}
Noch hardwarenäher wurde es dann mit meinem ersten ESP32 - neue Ideen entstanden und damit neue Projekte. Ein selbstgebauter Tresor (supersicher aus Holz!) mit eigener [Software](https://git.privacynerd.de/BlueFox/ESafeP) gehörten ebenso dazu wie ein eigener [MP3-(und vieles mehr)-Player](https://git.privacynerd.de/NetSpeaker/NetSpeaker). Immer wieder kam dabei eben auch der 3D-Drucker zur Anwendung, wie es im DIY-Raum eben so üblich ist - zum Beispiel für das Gehäuse zu meinem batteriebetriebenen [Losungs-ePaper](https://git.privacynerd.de/BlueFox/losungepaper).
{{< figure src="netspeaker.jpg" alt="Bild eines fertigen, selbstgebauten NetSpeakers in Gehäuse - unter anderem ein MP3-Player." caption="Ein NetSpeaker" >}}
{{< figure src="losung-epaper.jpg" alt="Bild des fertigen ePapers, welches die aktuelle Tageslosung anzeigt" caption="Das Losungs-ePaper" >}}
Alles in allem hatte die Corona-Pandemie dadurch zumindest für mich vorher ungeahnte neue Räume eröffnet und eben auch ihre positiven Seiten: In dieser Zeit entwickelte sich mein Interesse am 3D-Druck, was auch in diesem Blog thematisiert werden könnte.
## Bis jetzt... {id=until-now}
Nun, sehr viel hat sich seither nicht mehr geändert. Irgendwann kam dann noch das Self-Hosting dazu, und ich lernte auch Holz als spannendes Werksmaterial kennen (wie etwas weiter oben schon angerissen). Es ist so spannend zu sehen, was man alles selber hosten kann: seinen eigenen Datei-Synchronisationsservice, sein [eigenes Github](https://git.privacynerd.de/), Medienserver, und so weiter. Anfangs lief alles auf dem besagten Raspberry Pi. Später musste jedoch auch Zugang von außerhalb des Heimnetzes her, und seither laufen viele Dienste auf einem angemieteten Server.
{{< figure src="gitea-a-self-hosted-github.png" alt="Screenshot meiner selbstgehosteten Gitea-Instanz" caption="Ein „selbst gehostetes Github“" >}}
Vor nicht allzu langer Zeit kam mir dann eine Idee. Ich war dabei, selbst Platinen ätzen zu lernen, und die Informationen hierzu bezog ich vor allem in Blogs anderer „Maker”. Warum also nicht darüber, was du machst, schreiben? Zum einen könnte es ja tatsächlich sein, dass sich ein Suchender auf den Blog verirrt, zum anderen ist es aber auch einfach eine sinnvolle Dokumentationsweise, und vielleicht sogar etwas Gutes für spätere Bewerbungen.
{{< figure src="etching-station.jpg" alt="Bild eines Aufbaus, um Platinen manuell zu ätzen; im Bild: ein selbst gebauter UV-Belichter, ein Ätzgerät sowie ein Gefäß mit Natronlauge" caption="Der Ätzaufbau" >}}
Also, hingesetzt und nach Möglichkeiten gesucht, einen Blog zu erstellen. Natürlich musste er selbst gehostet sein, und vielleicht sogar ein bisschen selbst gemacht. Das führte mich zu [Hugo](https://gohugo.io/) (auch Jekyll war eine Überlegung), einem relativ simplen (und sehr schnellen) Static-Site-Generator, der aus Markdown (unter anderem) Websites generieren kann und somit eigentlich perfekt für einen Blog geeignet ist. Bei der Theme-Auswahl schwankte ich anfangs zwischen „selbst erstellen“ und „vorhandenes nutzen“. Aus Zeitmangel und Gründen der Einfachheit wurde es dann eben ein vorhandenes, genauer [Terminal](https://themes.gohugo.io/themes/hugo-theme-terminal/). An meine Bedürfnisse angepasst, war der Blog an sich schon recht schnell fertig[^3]. Jetzt wartet er nur noch darauf, mit Inhalt gefüllt zu werden.
[^3]: ...einige Nachmittage (und Abende bis Nächte) gingen aber doch dafür drauf (um ehrlich zu sein).
## Geplante Inhalte {id=planned-content}
Was man am Anfang plant, wird selten genau so umgesetzt - und so wird es vermutlich auch mit diesem Blog sein, und das ist gut so. Schließlich entwickelt sich alles weiter. Aber ich schreibe hier jetzt dennoch auf, was ich plane, in Zukunft auf diesem Blog zu schreiben - eine grobe Vorstellung habe ich nämlich doch.
- über meine DIY-Projekte,
- über neue Erfahrungen, die ich beim Basteln sammle,
- auch hier und da ein Update zu vorhandenen Projekten, Libraries von mir,
- und vielleicht ja auch etwas ganz Neues!
Zusammengefasst: alles, was ich DIY-mäßig tue, möchte ich hier (wenn Zeit und Lust da sind) teilen bzw. dokumentieren - in der Hoffnung, dass sich vielleicht wirklich mal jemand die genau selbe Frage stellt wie ich oder eine ähnliche Idee hat wie ich, und sich dann in diesen Blog verirrt.

View File

@@ -0,0 +1,111 @@
+++
title = 'How everything began - or: the first post!'
date = 2025-04-13T15:10:20+02:00
draft = false
toc = true
cover = 'cover.png'
+++
## Initial considerations {id=thinking}
I've been thinking about how to write this post for a long time. What needs to be told, what is unimportant? A lot has to be left out for the sake of clarity, and I might not even remember some of it. In any case, I would like to use this article to explain my intention in starting this blog. But to explain that, you have to understand the origins.
## How it all began {id=beginnings}
It all started when I was a 5th or 6th grade student (I can't remember exactly!) and started writing a batch script on a laptop for school. Yes, that's how it was, I admit - even if I don't know who or what drove me to do it. But I have a rough idea: I think it was a child's intrinsic motivation to find out how this computer in front of him works that made me do it.
Be that as it may, one of my “programs” looked something like this (yes, partially german):
```batch
@echo off
echo Herzlich Wilkommen , bitte Passwort eingeben
color 7b
:PSWD
set/p x=
if ''%x%''==''sehrsicher'' goto openfile
pause
:false
echo Falsches Passwort , bitte erneut versuchen.
color 7c
goto PWSD
:openfile
echo Passwort richtig , bitte 'Enter' druecken!
goto Video
pause
:Video
echo Wenn sie sich ein Video anschauen moechten , dann geben sie jetzt ,,Ja`` ein , wenn nicht dann einfach ,,Nein''!
color 7b
:PSWD
set/p x=
if ''%x%''==''Ja'' goto OpenVideo
:false
goto exit
:OpenVideo
start C:\Users\<CENSORED>\<YES, REALLY>\
:exit
exit
```
Well, then my father gave me the book, a textbook on Python3[^1], and there was no turning back. I think I read the entire textbook when I was 11 or 12 years old. Anyway, at some point I switched to Linux (initially [Linux Mint](https://linuxmint.com/)) - then came COVID-19[^2].
[^1]: [Python3 - das umfassende Handbuch von Johannes Ernesti und Peter Kaiser](https://www.rheinwerk-verlag.de/python-3-das-umfassende-handbuch/) (no advertising!)
[^2]: Then again, it wasn't that easy, but for the sake of clarity I've just simplified here.
## COVID-19 {id=covid-19}
For students, COVID-19 and the associated homeschooling and isolation meant one thing above all: a lot of time. They used it in different ways. I used it to pursue my new hobby intensively. During this time, I learned new programming languages like Java (partly for Minecraft plugins, [here](https://git.privacynerd.de/BlueFox/MC-Plugins) you can find some), and even taught myself some C and assembler.
During this time, I was given my first Raspberry Pi - with far-reaching consequences. Because it led to me turning more and more to the hardware side. While I had previously written web apps with a database in [Django](https://www.djangoproject.com/) or [Flask](https://flask.palletsprojects.com/en/stable/) and Python, I was now programming simple blinking circuits, then at some point scripts that read sensor data and displayed it on a small OLED display (0.96") or switched the lamps in my room on and off at the touch of a button (because a light switch is not enough!). During this time, I also discovered for myself a 3D printer that had been sitting around almost unused for a long time.
{{< figure src="esafep.jpg" alt="Picture of the ESafeP - a wooden ”safe“ with its own software" caption="The ”ESafeP“ - very stable!" >}}
Things got even more hardware-oriented with my first ESP32 - new ideas emerged and with them new projects. A self-built safe (super safe made of wood!) with my own [software](https://git.privacynerd.de/BlueFox/ESafeP) was just as much a part of it as my own [MP3 (and much more) player](https://git.privacynerd.de/NetSpeaker/NetSpeaker). The 3D printer was also used time and again, as it is common in the DIY space - for example for the housing for my battery-powered [ePaper showing the german ”Tageslosung“ - a verse from the bible for every day](https://git.privacynerd.de/BlueFox/losungepaper).
{{< figure src="netspeaker.jpg" alt="Image of a finished, self-made NetSpeaker in housing - which is (not) just MP3 player." caption="A NetSpeaker" >}}
{{< figure src="losung-epaper.jpg" alt="Image of the finished ePaper, which displays the current daily verse of the bibel (german ”Tageslosung“)" caption="Losungs-ePaper (showing a biblical verse of the day)" >}}
All in all, the corona pandemic had opened up previously unimagined new spaces, at least for me, and also had its positive sides: During this time, I developed an interest in 3D printing, which could also be the subject of this blog.
## Until now... {id=until-now}
Well, not much has changed since then. At some point, self-hosting got a thing for me, and I also got to know wood as an exciting material (as already mentioned above). It's so cool to see what you can host yourself: your own file synchronization service, your [own Github](https://git.privacynerd.de/), media servers, and so on. Initially, everything ran on the aforementioned Raspberry Pi. Later, however, access from outside the home network was required, and since then many services have been running on a rented server.
{{< figure src="gitea-a-self-hosted-github.png" alt="Screenshot of my self-hosted instance of Gitea" caption="A ”self-hosted Github“" >}}
Not so long ago, I had an idea: I was learning to etch circuit boards myself, and the information I was getting was mainly from other makers' blogs. Thus, why not write about what you do? On the one hand, it could actually be that someone looking for it might find their way to the blog, but on the other hand, it's simply a useful way of documenting it, and maybe even something good for future job applications.
{{< figure src="etching-station.jpg" alt="Picture of a setup for manually etching circuit boards; in the picture: a self-built UV exposure unit, an etching unit and a container with caustic soda solution" caption="The etching setup" >}}
So, I sat down and looked for ways to create a blog. Of course, it had to be self-hosted, and maybe even a bit self-made. This led me to [Hugo](https://gohugo.io/) (Jekyll was also a consideration), a relatively simple (and very fast) static site generator that can generate websites from Markdown (among other things) and is therefore actually perfect for a blog. When choosing a theme, I initially wavered between ”create it myself“ and ”use an existing one“. Due to a lack of time and for reasons of simplicity, I ended up using an existing one, more precisely [Terminal](https://themes.gohugo.io/themes/hugo-theme-terminal/). Adapted to my needs, the blog itself was already finished relatively quickly[^3]. Now it's just waiting to be filled with content.
[^3]: ...but, to be honest, a few afternoons (and evenings and nights) were spent on it.
## Planned content {id=planned-content}
What you plan at the beginning is rarely implemented in exactly the same way in the end - and that will probably also be the case with this blog, and that's a good thing. After all, everything evolves. But I'm still going to write down what I plan to write on this blog in the future - because I do have a rough idea.
- about my DIY projects,
- about new experiences that I gather while tinkering,
- also an update here and there on existing projects and libraries of mine,
- and maybe something completely new!
To summarize: everything I do DIY-wise, I would like to share resp. document here (if there is time and inclination) - in the hope that maybe someone will ask themselves the exact same question as me or have a similar idea to mine, and then find their way to this blog.

Binary file not shown.

After

Width:  |  Height:  |  Size: 257 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 230 KiB

View File

@@ -1,8 +0,0 @@
+++
title = 'Deutscher Test Post'
date = 2025-04-05T20:14:29+02:00
draft = false
toc = false
+++
# Nureinwort

View File

@@ -1,8 +0,0 @@
+++
title = 'English Test Post'
date = 2025-04-05T22:48:12+02:00
draft = false
toc = false
+++
# Justoneword

View File

@@ -1,33 +0,0 @@
+++
title = 'Deutscher Test Post'
date = 2025-04-05T20:14:29+02:00
draft = false
+++
# Test Post in German
## Lorem ipsum
### dolor sit amet
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim aeque doleamus animo, cum corpore dolemus, fieri tamen permagna accessio potest, si aliquod aeternum et infinitum impendere malum nobis opinemur. Quod idem licet transferre in voluptatem, ut postea variari voluptas distinguique possit, augeri amplificarique non possit. At etiam Athenis, ut e.
### Consectetur adipiscing
Bonum sit aut quid iudicat, quo aut petat aut fugiat aliquid, praeter voluptatem et dolorem. Ad haec et quae vel aliter pararetur et qua etiam carere possent sine dolore tum in morbos gravis, tum in damna, tum in dedecora incurrunt, saepe etiam legum iudiciorumque poenis obligantur. Qui autem ita frui volunt voluptatibus, ut nulli propter eas consequantur dolores, et qui suum iudicium retinent, ne voluptate victi faciant id.
Sumitur contra mortis timorem et constantia contra metum religionis et sedatio animi omnium rerum occultarum ignoratione sublata et moderatio natura cupiditatum generibusque earum explicatis, et, ut dixi, ad lineam, hunc naturalem esse omnium corporum motum. Deinde ibidem homo acutus, cum illud ocurreret, si omnia dixi hausta e fonte naturae, si tota oratio nostra omnem sibi fidem sensibus confirmat, id est in culpa qui officia deserunt mollitia animi, id est.
Posuit. Ea scientia et verborum vis et natura orationis et consequentium repugnantiumve ratio potest perspici. Omnium autem rerum natura cognita levamur superstitione, liberamur mortis metu, non conturbamur ignoratione rerum, e qua ipsa horribiles existunt saepe formidines. Denique etiam morati melius erimus.
## DeLorean ipsum
That's right. Huh? Go. Here you go, lady. There's a quarter. Good morning.
Marty, I always wear a suit to the office. You alright? It's a board with wheels. Yeah. What the hell is this? Marty, you're acting like you haven't seen me in a week.
Yes, yes, I'm George, George McFly, and I'm your density. I mean, I'm your destiny. It works, ha ha ha ha, it works. I finally invent something that works. Where the hell are they. That's Strickland. Jesus, didn't that guy ever have hair? Alright, alright, okay McFly, get a grip on yourself. It's all a dream. Just a very intense dream. Woh, hey, listen, you gotta help me.

View File

@@ -1,33 +0,0 @@
+++
title = 'English Test Post'
date = 2025-04-05T20:14:29+02:00
draft = false
+++
# Test Post in English
## Lorem ipsum
### dolor sit amet
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim aeque doleamus animo, cum corpore dolemus, fieri tamen permagna accessio potest, si aliquod aeternum et infinitum impendere malum nobis opinemur. Quod idem licet transferre in voluptatem, ut postea variari voluptas distinguique possit, augeri amplificarique non possit. At etiam Athenis, ut e.
### Consectetur adipiscing
Bonum sit aut quid iudicat, quo aut petat aut fugiat aliquid, praeter voluptatem et dolorem. Ad haec et quae vel aliter pararetur et qua etiam carere possent sine dolore tum in morbos gravis, tum in damna, tum in dedecora incurrunt, saepe etiam legum iudiciorumque poenis obligantur. Qui autem ita frui volunt voluptatibus, ut nulli propter eas consequantur dolores, et qui suum iudicium retinent, ne voluptate victi faciant id.
Sumitur contra mortis timorem et constantia contra metum religionis et sedatio animi omnium rerum occultarum ignoratione sublata et moderatio natura cupiditatum generibusque earum explicatis, et, ut dixi, ad lineam, hunc naturalem esse omnium corporum motum. Deinde ibidem homo acutus, cum illud ocurreret, si omnia dixi hausta e fonte naturae, si tota oratio nostra omnem sibi fidem sensibus confirmat, id est in culpa qui officia deserunt mollitia animi, id est.
Posuit. Ea scientia et verborum vis et natura orationis et consequentium repugnantiumve ratio potest perspici. Omnium autem rerum natura cognita levamur superstitione, liberamur mortis metu, non conturbamur ignoratione rerum, e qua ipsa horribiles existunt saepe formidines. Denique etiam morati melius erimus.
## DeLorean ipsum
That's right. Huh? Go. Here you go, lady. There's a quarter. Good morning.
Marty, I always wear a suit to the office. You alright? It's a board with wheels. Yeah. What the hell is this? Marty, you're acting like you haven't seen me in a week.
Yes, yes, I'm George, George McFly, and I'm your density. I mean, I'm your destiny. It works, ha ha ha ha, it works. I finally invent something that works. Where the hell are they. That's Strickland. Jesus, didn't that guy ever have hair? Alright, alright, okay McFly, get a grip on yourself. It's all a dream. Just a very intense dream. Woh, hey, listen, you gotta help me.

View File

@@ -1,13 +1,19 @@
#baseURL = "https://blog.privacynerd.de/" baseURL = "https://blog.privacynerd.de/"
baseURL = "/" #baseURL = "/"
title = "Privacynerd's blog" title = "Privacynerd's blog"
theme = "re-terminal" # v2.4.1 (working!) #theme = "re-terminal" # v2.4.1 (working!)
#theme = "terminal" # 4.2.1 (working!)
theme = "terminal-fork" # for devel purposes
defaultContentLanguage = "en" defaultContentLanguage = "en"
defaultContentLanguageInSubdir = true defaultContentLanguageInSubdir = true
pagination.pagerSize = 5 pagination.pagerSize = 5
# Required for Chroma and the custom syntax highlighting (terminal theme)
[markup.highlight]
noClasses = false
[params] [params]
# dir name of your main content (default is `content/posts`). # dir name of your main content (default is `content/posts`).
# the list of set content will show up on your index page (baseurl). # the list of set content will show up on your index page (baseurl).
@@ -17,10 +23,16 @@ pagination.pagerSize = 5
themeColor = "green" themeColor = "green"
# if you set this to 0, only submenu trigger will be visible # if you set this to 0, only submenu trigger will be visible
showMenuItems = 2 showMenuItems = 3
# show selector to switch language # show selector to switch language
showLanguageSelector = true # (default: false) showLanguageSelector = true # (default: false)
# ↓ currently in a PR (and in my fork in the my-master branch)
# the language selector always links...
# - true: the translated content equivalent (e.g. /en/posts/some-post directly → /de/posts/some-post),
# - false: just to the translated root (e.g. /en/posts/some-post → /de)
changeLanguageOfCurrentPage = true # (default: false)
# set theme to full screen width # set theme to full screen width
fullWidthTheme = false # (default: false) fullWidthTheme = false # (default: false)
@@ -35,18 +47,16 @@ pagination.pagerSize = 5
# set post to show the last updated # set post to show the last updated
# If you use git, you can set `enableGitInfo` to `true` and then post will automatically get the last updated # If you use git, you can set `enableGitInfo` to `true` and then post will automatically get the last updated
#showLastUpdated = true # (default: false) # showLastUpdated = true # (default: false)
# set a custom favicon (default is a `themeColor` square)
# favicon = "favicon.ico"
# Provide a string as a prefix for the last update date. By default, it looks like this: 2020-xx-xx [Updated: 2020-xx-xx] :: Author # Provide a string as a prefix for the last update date. By default, it looks like this: 2020-xx-xx [Updated: 2020-xx-xx] :: Author
# updatedDatePrefix = "Updated" # updatedDatePrefix = "Updated"
# set all headings to their default size (depending on browser settings) # set all headings to their default size (depending on browser settings)
# oneHeadingSize = true # default oneHeadingSize = false # (default: true)
# whether to show a page's estimated reading time # whether to show a page's estimated reading time
# showReadingTime = true # (for the re-terminal theme with adaptions in layouts/ folder; default: false)
readingTime = true # (default: false) readingTime = true # (default: false)
# whether to show a table of contents # whether to show a table of contents
@@ -73,6 +83,7 @@ pagination.pagerSize = 5
languageName = "English" languageName = "English"
weight = 1 weight = 1
[languages.en.params] [languages.en.params]
readingSpeed = 108 # currently in a PR (and in my fork in the my-master branch)
subtitle = "Blog of privacynerd" subtitle = "Blog of privacynerd"
owner = "" owner = ""
keywords = "" keywords = ""
@@ -87,16 +98,21 @@ pagination.pagerSize = 5
# set title for the table of contents # set title for the table of contents
# can be overridden in a page's front-matter # can be overridden in a page's front-matter
TocTitle = "Table of Contents" # default TocTitle = "Table of Contents" # default
_menu = "Menu" words = "words" # (default: words)
_minute = "minute"
_minutes = "minutes" # below are items added by BlueFox (me)
_readingTime = "to read"
_word = "word"
_words = "words"
_imprint = "Imprint" _imprint = "Imprint"
_by = "by" _made_by = "made by"
_customized = "customized" _customized = "customized"
# and the following are currently in a PR (and in my fork in the my-master branch)
menuTitle = "Menu"
minute = "minute"
minutes = "minutes"
to_read = "to read"
word = "word"
posts_for = "Posts for" # used with tags (taxonomies in general)
[languages.en.params.logo] [languages.en.params.logo]
logoText = "Privacynerd's blog" logoText = "Privacynerd's blog"
logoHomeLink = "/en" logoHomeLink = "/en"
@@ -111,17 +127,19 @@ pagination.pagerSize = 5
url = "/en/about" url = "/en/about"
weight = 10 weight = 10
[[languages.en.menu.main]] [[languages.en.menu.main]]
identifier = "posts" identifier = "tags"
name = "Posts" name = "Tags"
url = "/en/posts" url = "/en/tags"
weight = 20 weight = 20
[languages.de] [languages.de]
languageCode = "de" languageCode = "de"
languageName = "Deutsch" languageName = "Deutsch"
weight = 2 weight = 2
[languages.de.params] [languages.de.params]
readingSpeed = 111 # currently in a PR (and in my fork in the my-master branch)
subtitle = "Blog von privacynerd" subtitle = "Blog von privacynerd"
owner = "" owner = ""
keywords = "" keywords = ""
@@ -136,16 +154,22 @@ pagination.pagerSize = 5
# set title for the table of contents # set title for the table of contents
# can be overridden in a page's front-matter # can be overridden in a page's front-matter
TocTitle = "Inhaltsverzeichnis" # default TocTitle = "Inhaltsverzeichnis" # default
_menu = "Menü" words = "Wörter"
_minute = "Minute"
_minutes = "Minuten" # below are items added by BlueFox (me)
_readingTime = "Lesezeit"
_word = "Wort"
_words = "Wörter"
_imprint = "Impressum" _imprint = "Impressum"
_by = "von" _made_by = "erstellt von"
_customized = "angepasst" _customized = "angepasst"
# and the following are currently in a PR (and in my fork in the my-master branch)
menuTitle = "Menü"
minute = "Minute"
minutes = "Minuten"
to_read = "Lesezeit"
word = "Wort"
posts_for = "Posts für"
[languages.de.params.logo] [languages.de.params.logo]
logoText = "Privacynerd's blog" logoText = "Privacynerd's blog"
logoHomeLink = "/de" logoHomeLink = "/de"
@@ -160,7 +184,8 @@ pagination.pagerSize = 5
url = "/de/about" url = "/de/about"
weight = 10 weight = 10
[[languages.de.menu.main]] [[languages.de.menu.main]]
identifier = "posts" identifier = "tags"
name = "Posts" name = "Tags"
url = "/de/posts" url = "/de/tags"
weight = 20 weight = 20

View File

@@ -0,0 +1,22 @@
<!--
To add an extended footer section, please create
`layouts/partials/extended_footer.html` in your Hugo directory.
-->
<script src="https://swetrix.privacynerd.de/script.js" defer=""></script>
<script>
document.addEventListener('DOMContentLoaded', function() {
swetrix.init('GyBjobBbBEEC', {apiURL: 'https://swetrix.privacynerd.de/api/log',})
swetrix.trackViews()
swetrix.trackErrors({
sampleRate: 1,
callback: undefined,
})
})
</script>
<noscript>
<img
src="https://swetrix.privacynerd.de/api/log/noscript?pid=GyBjobBbBEEC"
alt=""
referrerpolicy="no-referrer-when-downgrade"
/>
</noscript>

View File

@@ -0,0 +1,32 @@
<!--
To add an extended head section, please create
`layouts/partials/extended_head.html` in your Hugo directory.
-->
<style>
#banner {
width: 100%;
height: 2rem;
display: grid;
grid-template-columns: 1fr auto;
background: var(--accent);
}
#banner span {
display: flex;
align-items: center;
justify-content: center;
}
#banner a {
color: var(--background);
display: inline;
}
#banner > button {
padding: 0 5px 0 0;
margin: 0;
}
</style>
<div id="banner"><span><a href="{{ $.Site.Params.Banner.url }}">{{ $.Site.Params.Banner.text }}</a></span></div>

View File

@@ -11,24 +11,17 @@
<span>© {{ now.Year }} Powered by <a href="https://gohugo.io">Hugo</a></span> <span>© {{ now.Year }} Powered by <a href="https://gohugo.io">Hugo</a></span>
{{ end }} {{ end }}
<span style="margin-right: 10px">:: <a href="https://privacynerd.de/impressum?referrer={{ $.Page.Permalink }}">{{ $.Site.Params._Imprint }}</a></span> <span style="margin-right: 10px">:: <a href="https://privacynerd.de/impressum?referrer={{ $.Page.Permalink }}">{{ $.Site.Params._Imprint }}</a></span>
<span>:: <a href="https://github.com/mirus-ua/hugo-theme-re-terminal" target="_blank">Theme</a> {{ $.Site.Params._By }} <a href="https://github.com/mirus-ua" target="_blank">Mirus</a> ({{ $.Site.Params._Customized }})</span> <span>:: <a href="https://github.com/panr/hugo-theme-terminal" target="_blank">Theme</a> {{ $.Site.Params._made_by }} <a href="https://github.com/panr" target="_blank">panr</a> ({{ $.Site.Params._Customized }})</span>
</div> </div>
</div> </div>
</footer> </footer>
{{ $menu := resources.Get "js/menu.js" | js.Build }} {{ $menu := resources.Get "js/menu.js" | js.Build }}
{{ $prism := resources.Get "js/prism.js" | js.Build }} {{ $cp := resources.Get "js/code.js" | js.Build }}
{{ $bundle := slice $menu $prism | resources.Concat "bundle.js" | resources.Minify }} {{ $bundle := slice $menu $cp | resources.Concat "bundle.js" | resources.Minify }}
<script type="text/javascript" src="{{ $bundle.RelPermalink }}"></script> <script type="text/javascript" src="{{ $bundle.RelPermalink }}"></script>
<!-- Banner JS if it enabled -->
{{ if .Site.Params.Banner }}
{{ $banner := resources.Get "js/banner.js" | js.Build | resources.Minify }}
<script type="text/javascript" src="{{ $banner.RelPermalink }}"></script>
{{ end }}
<!-- Extended footer section--> <!-- Extended footer section-->
{{ partial "extended_footer.html" . }} {{ partial "extended_footer.html" . }}

View File

@@ -5,8 +5,14 @@
</div> </div>
{{ end }} {{ end }}
<div class="posts"> <div class="posts">
<!--<style>
.post:first-of-type {
margin: 0px auto 10px !important;
padding: 0px 0px 45px !important;
}
</style>-->
{{ range .Paginator.Pages }} {{ range .Paginator.Pages }}
<article class="post on-list"> <article class="post on-list" style="padding-bottom: 45px;">
<h1 class="post-title"> <h1 class="post-title">
<a href="{{ .Permalink }}">{{ .Title | markdownify }}</a> <a href="{{ .Permalink }}">{{ .Title | markdownify }}</a>
</h1> </h1>
@@ -36,20 +42,13 @@
{{ partial "cover.html" . }} {{ partial "cover.html" . }}
<div class="post-content"> <div class="post-content">
{{ if .Params.showFullContent }} {{ if .Description }}
{{ .Content }}
{{ else if .Description }}
{{ .Description | markdownify }} {{ .Description | markdownify }}
{{ else }} {{ else }}
{{ .Summary }} {{ .Summary | safeHTML | strings.Truncate 300 "..." }}
{{ end }} {{ end }}
<p></p><a style="color: var(--accent); display: inline; text-decoration: none;" href="{{.RelPermalink}}">[ {{ $.Site.Params.ReadMore }} → ]</a>
</div> </div>
{{ if not .Params.showFullContent }}
<div>
<a class="read-more button" href="{{.RelPermalink}}">{{ $.Site.Params.ReadMore }} →</a>
</div>
{{ end }}
</article> </article>
{{ end }} {{ end }}

View File

@@ -15,8 +15,8 @@
{{- with .Params.Author -}} {{- with .Params.Author -}}
<span class="post-author">{{ . }}</span> <span class="post-author">{{ . }}</span>
{{- end -}} {{- end -}}
{{- if and (.Param "readingTime") (eq (.Param "readingTime") true) -}} {{- if and (.Param "ShowReadingTime") (eq (.Param "ShowReadingTime") true) -}}{{ $customReadingTime := div (float .WordCount) .Site.Params.readingSpeed }}{{ $customReadingTime = math.Ceil $customReadingTime }}<!-- (browsers insert spaces sometimes)
<span class="post-reading-time">{{ .ReadingTime }} {{ if eq .ReadingTime 1 }}{{ $.Site.Params._minute | default "minute" }}{{ else }}{{ $.Site.Params._minutes | default "minutes" }}{{ end }} {{$.Site.Params._readingTime | default "to read" }} ({{ .WordCount }} {{ if eq .WordCount 1 }}{{ $.Site.Params._word | default "word" }}{{ else }}{{ $.Site.Params._words | default "words" }}{{ end }})</span> --><span class="post-reading-time">{{ $customReadingTime }} {{ if eq $customReadingTime 1 }}{{ $.Site.Params._minute | default "minute" }}{{ else }}{{ $.Site.Params._minutes | default "minutes" }}{{ end }} {{$.Site.Params._readingTime | default "to read" }} ({{ .WordCount }} {{ if eq .WordCount 1 }}{{ $.Site.Params._word | default "word" }}{{ else }}{{ $.Site.Params._words | default "words" }}{{ end }})</span>
{{- end -}} {{- end -}}
<!-- comments counter -->{{ partial "comments_counter.html" . }} <!-- comments counter -->{{ partial "comments_counter.html" . }}
</div> </div>

View File

@@ -1,5 +1,5 @@
{{ define "main" }} {{ define "main" }}
<h1>Posts for: #{{ .Title }}</h1> <h1>Posts for: <b style="opacity: 0.5;">#{{ .Title | strings.ToLower }}</b></h1>
{{ with .Content }} {{ with .Content }}
<div class="index-content"> <div class="index-content">
{{ . }} {{ . }}

View File

@@ -13,7 +13,7 @@
{{ $count := .Count }} {{ $count := .Count }}
{{ with $.Site.GetPage (printf "/%s/%s" $type $name) }} {{ with $.Site.GetPage (printf "/%s/%s" $type $name) }}
<li> <li>
<a class="terms-title" href="{{ .Permalink }}">{{ .Name }} [{{ $count }}]</a> <a class="terms-title" href="{{ .Permalink }}">{{ .Name | strings.ToLower }} [{{ $count }}]</a>
</li> </li>
{{ end }} {{ end }}
{{ end }} {{ end }}

View File

@@ -1,13 +1,17 @@
<footer class="footer"> <footer class="footer">
<style>
.antidiscovery i { display: none; }
</style>
<div class="footer__inner"> <div class="footer__inner">
{{ if $.Site.Params.Copyright }} {{ if $.Site.Params.Copyright }}
<div class="copyright copyright--user"> <div class="copyright copyright--user">
<span>{{ $.Site.Params.Copyright | safeHTML }}</span> <span class="antidiscovery">© {{ now.Year }} {{ $.Site.Params.Copyright | safeHTML }}</span>
{{ else }} {{ else }}
<div class="copyright"> <div class="copyright">
<span>© {{ now.Year }} Powered by <a href="https://gohugo.io">Hugo</a></span> <span>© {{ now.Year }} Powered by <a href="https://gohugo.io">Hugo</a></span>
{{ end }} {{ end }}
<span>:: <a href="https://github.com/mirus-ua/hugo-theme-re-terminal" target="_blank">Theme</a> made by <a href="https://github.com/mirus-ua" target="_blank">Mirus</a></span> <span style="margin-right: 10px">:: <a href="https://privacynerd.de/impressum?referrer={{ $.Page.Permalink }}">{{ $.Site.Params._Imprint }}</a></span>
<span>:: <a href="https://github.com/mirus-ua/hugo-theme-re-terminal" target="_blank">Theme</a> {{ $.Site.Params._By }} <a href="https://github.com/mirus-ua" target="_blank">Mirus</a> ({{ $.Site.Params._Customized }})</span>
</div> </div>
</div> </div>
</footer> </footer>

0
public/.keepdirectory Normal file
View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 KiB

BIN
public/apple-touch-icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

9
public/browserconfig.xml Normal file
View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<browserconfig>
<msapplication>
<tile>
<square150x150logo src="/mstile-150x150.png"/>
<TileColor>#da532c</TileColor>
</tile>
</msapplication>
</browserconfig>

56
public/bundle.min.js vendored

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
.button-container{display:table;margin-left:auto;margin-right:auto}button,.button,a.button{position:relative;display:inline-flex;align-items:center;justify-content:center;padding:8px 18px;text-decoration:none;text-align:center;font:inherit;font-weight:700;appearance:none;cursor:pointer;outline:none}button.outline,.button.outline,a.button.outline{background:0 0;box-shadow:none;padding:8px 18px}button.outline :hover,.button.outline :hover,a.button.outline :hover{transform:none;box-shadow:none}button.link,.button.link,a.button.link{background:0 0;font-size:var(--font-size)}button.small,.button.small,a.button.small{font-size:calc(var(--font-size) * .8)}button.wide,.button.wide,a.button.wide{min-width:200px;padding:14px 24px}a.button.inline{background:0 0;color:var(--accent);padding:initial;margin:initial;border:initial;font-weight:initial;text-decoration:none}a.button.inline:active,a.button.inline:hover{background:0 0}a.read-more,a.read-more:hover,a.read-more:active{display:inline-flex;border:none;background:0 0;box-shadow:none;padding:0;max-width:100%;text-decoration:none}

View File

@@ -0,0 +1 @@
:root{--code-border:color-mix(in srgb, var(--foreground) 10%, transparent)}pre:not(.chroma){margin:20px 0;padding:10px}pre.chroma{margin:0;padding:10px 0;color:var(--foreground)}pre code{color:var(--foreground);border:none}code{color:var(--accent)}.highlight{position:relative;margin:20px 0;border:1px solid var(--code-border)}.highlight pre{border:none}.code-title{display:flex;align-items:center;justify-content:space-between;background:color-mix(in srgb,var(--foreground) 5%,transparent);border-bottom:1px solid var(--code-border);color:var(--comment);text-transform:uppercase;font-size:calc(var(--font-size) * .8);padding:6px 10px;line-height:1}.copy-button{position:relative;display:inline-flex;align-items:center;justify-content:center;padding:3px 8px;text-decoration:none;text-align:center;font-size:13px;font-weight:500;border:1px solid color-mix(in srgb,var(--accent) 15%,transparent);appearance:none;cursor:pointer;outline:none}.code-title .copy-button{z-index:1;background:color-mix(in srgb,var(--foreground) 5%,var(--background))}.code-title:hover .copy-button{display:inline-block}.code-title .copy-button:hover{background:color-mix(in srgb,var(--accent) 10%,var(--background))}.collapsable-code{position:relative;width:100%;margin:20px 0;border:1px solid var(--accent);.highlight { margin: 0; }}.collapsable-code__title{display:inline-flex;align-items:center;flex:1;color:var(--accent);padding:3px 10px;font-size:calc(var(--font-size) * .9);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.collapsable-code__language{color:var(--accent);border:1px solid var(--accent);border-bottom:none;text-transform:uppercase;padding:3px 10px}.collapsable-code summary{color:var(--accent);padding:0 10px;cursor:pointer}.collapsable-code summary:hover{background:color-mix(in srgb,var(--accent) 10%,transparent)}.collapsable-code pre{margin-top:0}.collapsable-code pre::first-line{line-height:0}

View File

@@ -0,0 +1 @@
@font-face{font-family:fira code;font-style:normal;font-weight:300 700;font-display:swap;src:url(../fonts/FiraCode-LatinExt.woff2)format('woff2');unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:fira code;font-style:normal;font-weight:300 700;font-display:swap;src:url(../fonts/FiraCode-Latin.woff2)format('woff2');unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}

View File

@@ -0,0 +1 @@
.footer{padding:40px 0;flex-grow:0;opacity:.65}.footer__inner{display:flex;align-items:center;justify-content:space-between;margin:0;max-width:100%}.footer a{color:inherit}.footer .copyright{display:flex;flex-flow:row wrap;flex:1;align-items:center;justify-content:center}.footer .copyright--user{margin:auto;text-align:center}.footer .copyright>*:first-child:not(:only-child){margin-right:10px}.footer .copyright span{white-space:nowrap}@media(max-width:900px){.footer__inner{flex-direction:column}}

View File

@@ -0,0 +1 @@
body .gist .blob-num,body .gist .blob-code-inner{border:none}

View File

@@ -0,0 +1 @@
.header{display:flex;flex-direction:column;position:relative}.header__inner{display:flex;align-items:center;justify-content:space-between}.header__logo{display:flex;flex:1}.header__logo::after{content:"";background:repeating-linear-gradient(90deg,var(--accent),var(--accent) 2px,transparent 0,transparent 10px);display:block;width:100%;right:10px}.header__logo a{flex:none;max-width:100%;text-decoration:none}.logo{display:flex;align-items:center;text-decoration:none;background:var(--accent);color:var(--background);font-weight:700;padding:5px 10px}@media print{.header{display:none}}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
.navigation-menu{display:flex;align-items:flex-start;justify-content:space-between;margin:20px 1px}.navigation-menu__inner{display:flex;flex:1;flex-wrap:wrap;list-style:none;margin:0;padding:0}.navigation-menu__inner>li{flex:none;margin-bottom:10px;white-space:nowrap}.navigation-menu__inner>li:not(:last-of-type){margin-right:20px}.navigation-menu .spacer{flex-grow:1!important}.menu{display:flex;flex-direction:column;position:relative;list-style:none;padding:0;margin:0}.menu__trigger{margin-right:0!important;color:var(--accent);user-select:none;cursor:pointer}.menu__dropdown{display:none;flex-direction:column;position:absolute;background:var(--background);box-shadow:0 10px var(--background),-10px 10px var(--background),10px 10px var(--background);color:var(--accent);border:2px solid var(--accent);margin:0;padding:10px;top:10px;left:0;list-style:none;z-index:99}.open .menu__dropdown{display:flex}.menu__dropdown>li{flex:none}.menu__dropdown>li:not(:last-of-type){margin-bottom:10px}.menu__dropdown>li a{display:flex;padding:5px}.menu--mobile .menu__trigger{color:var(--accent);border:2px solid;margin-left:10px;height:100%;padding:3px 8px;margin-bottom:0!important;position:relative;cursor:pointer;display:none}.menu--mobile li{flex:none}.menu--mobile li:not(:last-of-type){margin-bottom:10px}.menu--language-selector .menu__trigger{color:var(--accent);border:2px solid;margin-left:5px;height:100%;padding:3px 8px;margin-bottom:0!important;position:relative;cursor:pointer}.menu--language-selector .menu__dropdown{left:auto;right:0}@media(max-width:684px){.navigation-menu{margin:0}.navigation-menu__inner{flex-direction:column;align-items:flex-start;padding:0}.navigation-menu__inner li{margin:0;padding:5px}.menu--desktop{display:none}.menu--mobile .menu__trigger{display:block}.menu--mobile .menu__dropdown{left:auto;right:0}.menu--language-selector .menu__trigger{display:none}}

View File

@@ -0,0 +1 @@
.pagination{margin-top:50px}.pagination__title{display:flex;text-align:center;position:relative;margin:100px 0 20px}.pagination__title-h{text-align:center;margin:0 auto;padding:5px 10px;background:var(--background);color:color-mix(in srgb var(--foreground) 30%,transparent);font-size:calc(var(--font-size) * .8);text-transform:uppercase;text-decoration:none;letter-spacing:.1em;z-index:1}.pagination__title hr{position:absolute;left:0;right:0;width:100%;margin-top:15px;z-index:0}.pagination__buttons{display:flex;align-items:center;justify-content:center;flex-flow:row wrap;gap:10px}.pagination__buttons a{display:inline-flex;max-width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;text-decoration:none}.button{position:relative;display:inline-flex;align-items:center;justify-content:center;font-size:inherit;padding:0;appearance:none}.button a{display:flex;justify-content:center;flex:1;padding:8px 16px}.button__text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.next .button__icon{margin-left:8px}.prev .button__icon{margin-right:8px}@media print{.pagination{display:none}}

View File

@@ -0,0 +1 @@
.index-content{margin:25px 0}.framed{border:1px solid var(--accent);padding:20px}.framed *:first-child{margin-top:0}.framed *:last-child{margin-bottom:0}.posts{width:100%}.post{width:100%;text-align:left;padding:30px 0}.post:not(:last-of-type){border-bottom:1px solid color-mix(in srgb,var(--foreground) 10%,transparent)}.post-meta{font-size:inherit;margin-bottom:10px;color:color-mix(in srgb,var(--foreground) 65%,transparent)}.post-meta>*:not(:first-child)::before{content:"::";display:inline-block;margin:0 8px}.post-title{position:relative;color:var(--accent);margin-top:0!important;margin-bottom:15px!important;padding-bottom:15px;border-bottom:3px dotted var(--accent);text-decoration:none!important}.post-title::after{content:"";position:absolute;bottom:2px;display:block;width:100%;border-bottom:3px dotted var(--accent)}.post-title a{text-decoration:none}.post-tags{display:block;margin-bottom:20px;font-size:inherit;color:var(--accent)}.table-of-contents{margin:40px 0}.post-content{margin-top:25px}.post-cover{margin:25px 0}.post ul{list-style:none}.post ul li:not(:empty)::before{content:"-";position:absolute;left:-20px;color:var(--accent)}.post--regulation h1{justify-content:center}.post--regulation h2{justify-content:center;margin-bottom:10px}.post--regulation h2+h2{margin-top:-10px;margin-bottom:20px}.hanchor{position:absolute;color:var(--accent);text-decoration:none;margin-left:10px;visibility:hidden}h1:hover .hanchor,h2:hover .hanchor,h3:hover .hanchor,h4:hover .hanchor,h5:hover .hanchor,h6:hover .hanchor{visibility:visible}.footnotes{color:color-mix(in srgb,var(--foreground) 50%,transparent)}.footnotes hr{background:color-mix(in srgb,var(--foreground) 50%,transparent)}@media(max-width:684px){.post-cover{padding:10px;border-width:10px}}

View File

@@ -0,0 +1 @@
:root{--first-tone:var(--accent);--second-tone:color-mix(in srgb, var(--accent) 70%, transparent);--comment:color-mix(in srgb, var(--foreground) 50%, transparent)}.bg{}.chroma{overflow:auto}.chroma .x{}.chroma .err{}.chroma .cl{}.chroma .lnlinks{outline:none;text-decoration:none;color:inherit}.chroma .lntd{width:100%;vertical-align:top;padding:0;margin:0;border:0}.chroma .lntd:first-child{width:auto}.chroma .lntd code{display:grid}.chroma .lntable{width:100%;border-spacing:0;padding:0;margin:0;border:0}.chroma .hl{background-color:color-mix(in srgb,var(--foreground) 5%,transparent)!important}.chroma .lnt{color:var(--comment);white-space:pre;-webkit-user-select:none;user-select:none;padding:0 10px}.chroma .ln{color:var(--comment);white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.8em;padding:0 .4em 0 0}.chroma .line{display:flex;padding:0 10px}.chroma .k{color:var(--second-tone)}.chroma .kc{color:var(--second-tone)}.chroma .kd{color:var(--second-tone)}.chroma .kn{color:var(--second-tone)}.chroma .kp{color:var(--second-tone)}.chroma .kr{color:var(--second-tone)}.chroma .kt{color:var(--second-tone)}.chroma .n{color:var(--first-tone)}.chroma .na{color:var(--second-tone)}.chroma .nb{color:var(--first-tone)}.chroma .bp{color:var(--first-tone)}.chroma .nc{color:var(--foreground)}.chroma .no{color:var(--first-tone)}.chroma .nd{color:var(--first-tone)}.chroma .ni{color:var(--first-tone)}.chroma .ne{color:var(--first-tone)}.chroma .nf{color:var(--first-tone)}.chroma .fm{color:var(--first-tone)}.chroma .nl{color:var(--first-tone)}.chroma .nn{color:var(--first-tone)}.chroma .nx{color:var(--first-tone)}.chroma .py{color:var(--first-tone)}.chroma .nt{color:var(--first-tone)}.chroma .nv{color:var(--first-tone)}.chroma .vc{color:var(--first-tone)}.chroma .vg{color:var(--first-tone)}.chroma .vi{color:var(--first-tone)}.chroma .vm{color:var(--first-tone)}.chroma .l{}.chroma .ld{}.chroma .s{color:var(--foreground)}.chroma .sa{color:var(--foreground)}.chroma .sb{color:var(--foreground)}.chroma .sc{color:var(--foreground)}.chroma .dl{color:var(--foreground)}.chroma .sd{color:var(--foreground)}.chroma .s2{color:var(--foreground)}.chroma .se{color:var(--foreground)}.chroma .sh{color:var(--foreground)}.chroma .si{color:var(--foreground)}.chroma .sx{color:var(--foreground)}.chroma .sr{color:var(--foreground)}.chroma .s1{color:var(--foreground)}.chroma .ss{color:var(--foreground)}.chroma .m{color:var(--first-tone)}.chroma .mb{color:var(--first-tone)}.chroma .mf{color:var(--first-tone)}.chroma .mh{color:var(--first-tone)}.chroma .mi{color:var(--first-tone)}.chroma .il{color:var(--first-tone)}.chroma .mo{color:var(--first-tone)}.chroma .o{color:var(--foreground)}.chroma .ow{color:var(--foreground)}.chroma .p{color:var(--foreground)}.chroma .c{color:var(--comment)}.chroma .ch{color:var(--comment)}.chroma .cm{color:var(--comment)}.chroma .c1{color:var(--comment)}.chroma .cs{color:var(--comment)}.chroma .cp{color:var(--comment)}.chroma .cpf{color:var(--comment)}.chroma .g{}.chroma .gd{color:var(--first-tone)}.chroma .ge{}.chroma .gr{}.chroma .gh{}.chroma .gi{color:var(--second-tone)}.chroma .go{}.chroma .gp{}.chroma .gs{}.chroma .gu{}.chroma .gt{}.chroma .gl{}.chroma .w{}.chroma .language-php .cp{color:var(--foreground)}

View File

@@ -0,0 +1,2 @@
/* Placeholder file for your custom settings. */
/* You can get the color scheme variables from https://panr.github.io/terminal-css/ */

View File

@@ -0,0 +1 @@
.terms h3{font-size:initial}.terms ul{list-style:none}.terms ul li a{color:var(--accent)}.terms ul li:not(:empty)::before{content:"-";position:absolute;left:-20px;color:var(--accent)}

View File

@@ -11,30 +11,59 @@
<meta name="robots" content="noodp" /> <meta name="robots" content="noodp" />
<link rel="canonical" href="/de/404.html" /> <link rel="canonical" href="https://blog.privacynerd.de/de/404.html" />
<link rel="stylesheet" href="https://blog.privacynerd.de/css/buttons.min.86f6b4c106b6c6eb690ae5203d36b442c1f66f718ff4e8164fa86cf6c61ad641.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/code.min.4f0ccc8439f99bf7f7970298556b94011aabc1fcae743b6842fc3361a2da9ea3.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/fonts.min.5bb7ed13e1d00d8ff39ea84af26737007eb5051b157b86fc24487c94f3dc8bbe.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/footer.min.eb8dfc2c6a7eafa36cd3ba92d63e69e849e2200e0002a228d137f236b09ecd75.css">
<link rel="stylesheet" href="/styles.css"> <link rel="stylesheet" href="https://blog.privacynerd.de/css/gist.min.a751e8b0abe1ba8bc53ced52a38b19d8950fe78ca29454ea8c2595cf26aad5c0.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/header.min.75c7eb0e2872d95ff48109c6647d0223a38db52e2561dd87966eb5fc7c6bdac6.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/main.min.15870410d15d02abd22fb5ef00996f65a00d04b3a7435e9f83831c7c2298de88.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/menu.min.3c17467ebeb3d38663dce68f71f519901124fa5cbb4519b2fb0667a21e9aca39.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/pagination.min.bbb986dbce00a5ce5aca0504b7925fc1c581992a4bf57f163e5d69cc1db7d836.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/post.min.e6dddd258e64c83e05cec0cd49c05216742d42fc8ecbfbe6b67083412b609bd3.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/syntax.min.a0773cce9310cb6d8ed23e50f005448facf29a53001b57e038828daa466b25c0.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/terminal.min.e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/terms.min.b81791663c3790e738e571cdbf802312390d30e4b1d8dc9d814a5b5454d0ac11.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/terminal.css">
<link rel="shortcut icon" href="https://blog.privacynerd.de/favicon.png">
<link rel="apple-touch-icon" href="https://blog.privacynerd.de/apple-touch-icon.png">
<link rel="shortcut icon" href="/img/theme-colors/green.png">
<link rel="apple-touch-icon" href="/img/theme-colors/green.png">
<meta name="twitter:card" content="summary" /> <meta name="twitter:card" content="summary" />
@@ -50,12 +79,10 @@
<meta property="og:type" content="website" /> <meta property="og:type" content="website" />
<meta property="og:title" content="404 Page not found"> <meta property="og:title" content="404 Page not found">
<meta property="og:description" content="" /> <meta property="og:description" content="" />
<meta property="og:url" content="/de/404.html" /> <meta property="og:url" content="https://blog.privacynerd.de/de/404.html" />
<meta property="og:site_name" content="Privacynerd&#39;s blog" /> <meta property="og:site_name" content="Privacynerd&#39;s blog" />
<meta property="og:image" content="https://blog.privacynerd.de/og-image.png">
<meta property="og:image" content="/img/favicon/green.png">
<meta property="og:image:width" content="1200"> <meta property="og:image:width" content="1200">
<meta property="og:image:height" content="627"> <meta property="og:image:height" content="627">
@@ -71,29 +98,40 @@
<style>
#banner {
width: 100%;
height: 2rem;
display: grid;
grid-template-columns: 1fr auto;
background: var(--accent);
}
#banner span {
display: flex;
align-items: center;
justify-content: center;
}
#banner a {
color: var(--background);
display: inline;
}
#banner > button {
padding: 0 5px 0 0;
margin: 0;
}
</style>
<div id="banner"><span><a href="https://git.privacynerd.de/git.privacynerd.de/blog.privacynerd.de">Baustelle 🚧 | laufende Arbeiten</a></span></div>
</head> </head>
<body class="green"> <body>
<div id="banner">
<span>
<a href="https://git.privacynerd.de/git.privacynerd.de/blog.privacynerd.de">Baustelle 🚧 | laufende Arbeiten</a>
</span>
</div>
<div class="container center">
<div class="container center headings--one-size">
<header class="header"> <header class="header">
<div class="header__inner"> <div class="header__inner">
@@ -116,19 +154,28 @@
<li><a href="/de/posts">Posts</a></li> <li><a href="/de/tags">Tags</a></li>
<hr /> <hr />
<li>
<a href='/en/404.html'>English</a>
</li>
<li>
<a href='/de/404.html'>Deutsch</a> <li>
</li>
<a href="/en/404.html">English</a>
</li>
<li>
<b>
<a href="/de/404.html">Deutsch</a>
</b>
</li>
</ul> </ul>
@@ -138,21 +185,32 @@
<ul class="menu menu--desktop menu--language-selector"> <ul class="menu menu--desktop menu--language-selector">
<li class="menu__trigger">de&nbsp;</li> <li class="menu__trigger">de&nbsp;</li>
<li> <li>
<ul class="menu__dropdown"> <ul class="menu__dropdown">
<li><a href='/en/404.html'>English</a></li>
<li><a href='/de/404.html'>Deutsch</a></li> <li>
<a href="/en/404.html">English</a>
</li>
<li>
<b>
<a href="/de/404.html">Deutsch</a>
</b>
</li>
</ul> </ul>
</li> </li>
</ul> </ul>
</div> </div>
@@ -160,13 +218,12 @@
<ul class="navigation-menu__inner menu--desktop"> <ul class="navigation-menu__inner menu--desktop">
<li><a href="/de/about" >Über</a></li> <li><a href="/de/about" >Über</a></li>
<li><a href="/de/posts" >Posts</a></li> <li><a href="/de/tags" >Tags</a></li>
@@ -184,7 +241,7 @@
<h1 class="post-title">404 — Seite konnte nicht gefunden werden...</h1> <h1 class="post-title">404 — Seite konnte nicht gefunden werden...</h1>
<div class="post-content"> <div class="post-content">
<a href="/">Zurück zur Startseite&nbsp;</a> <a href="https://blog.privacynerd.de/">Zurück zur Startseite&nbsp;</a>
</div> </div>
</div> </div>
@@ -201,8 +258,8 @@
<div class="copyright copyright--user"> <div class="copyright copyright--user">
<span class="antidiscovery">© 2025 <i>L</i>B<i>P</i>e<i>o</i>n<i>i</i>j<i>n</i>a<i>c</i>m<i>G</i>i<i>N</i>n<i>U</i> <i>S</i>B<i>k</i>u<i>o</i>r<i>K</i>k<i>y</i>h<i>f</i>a<i>H</i>r<i>r</i>d<i>y</i>t</span> <span class="antidiscovery">© 2025 <i>L</i>B<i>P</i>e<i>o</i>n<i>i</i>j<i>n</i>a<i>c</i>m<i>G</i>i<i>N</i>n<i>U</i> <i>S</i>B<i>k</i>u<i>o</i>r<i>K</i>k<i>y</i>h<i>f</i>a<i>H</i>r<i>r</i>d<i>y</i>t</span>
<span style="margin-right: 10px">:: <a href="https://privacynerd.de/impressum?referrer=%2fde%2f404.html">Impressum</a></span> <span style="margin-right: 10px">:: <a href="https://privacynerd.de/impressum?referrer=https%3a%2f%2fblog.privacynerd.de%2fde%2f404.html">Impressum</a></span>
<span>:: <a href="https://github.com/mirus-ua/hugo-theme-re-terminal" target="_blank">Theme</a> von <a href="https://github.com/mirus-ua" target="_blank">Mirus</a> (angepasst)</span> <span>:: <a href="https://github.com/panr/hugo-theme-terminal" target="_blank">Theme</a> erstellt von <a href="https://github.com/panr" target="_blank">panr</a> (angepasst)</span>
</div> </div>
</div> </div>
</footer> </footer>
@@ -216,13 +273,24 @@
<script src="https://swetrix.privacynerd.de/script.js" defer=""></script>
<script>
<script type="text/javascript" src="/js/banner.min.js"></script> document.addEventListener('DOMContentLoaded', function() {
swetrix.init('GyBjobBbBEEC', {apiURL: 'https://swetrix.privacynerd.de/api/log',})
swetrix.trackViews()
swetrix.trackErrors({
sampleRate: 1,
callback: undefined,
})
})
</script>
<noscript>
<img
src="https://swetrix.privacynerd.de/api/log/noscript?pid=GyBjobBbBEEC"
alt=""
referrerpolicy="no-referrer-when-downgrade"
/>
</noscript>

View File

@@ -6,38 +6,66 @@
<meta http-equiv="content-type" content="text/html; charset=utf-8"> <meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Hallo in a new age You can call me Mirus and I forked the original Terminal theme for Hugo, because Radek, the original creator of the theme stop the maintenance and archived the repo. <meta name="description" content="Worum es hier gehen soll Also, mein Name ist Benjamin, und ich bin meistens als BlueFox bekannt. Ich liebe es, an Elektronik herumzubasteln, Sachen in 3D zu drucken und mit Holz zu arbeiten, aber ich programmiere auch ein bisschen und bin ein begeisterter Selbsthoster.
So I already pushed a few improvements that I did for my humble blog and I&rsquo;m going to add some more features in the future, also any contribution is welcome Dies ist mein persönlicher Blog (den ich in meiner Freizeit betreibe, all das ist nur ein Hobby), in dem ich über alle möglichen Dinge schreibe, die ich DIY-mäßig mache. Dazu gehören:
Below you can read the original about from Radek
" /> " />
<meta name="keywords" content="" /> <meta name="keywords" content="" />
<meta name="robots" content="noodp" /> <meta name="robots" content="noodp" />
<link rel="canonical" href="/de/about/" /> <link rel="canonical" href="https://blog.privacynerd.de/de/about/" />
<link rel="stylesheet" href="https://blog.privacynerd.de/css/buttons.min.86f6b4c106b6c6eb690ae5203d36b442c1f66f718ff4e8164fa86cf6c61ad641.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/code.min.4f0ccc8439f99bf7f7970298556b94011aabc1fcae743b6842fc3361a2da9ea3.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/fonts.min.5bb7ed13e1d00d8ff39ea84af26737007eb5051b157b86fc24487c94f3dc8bbe.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/footer.min.eb8dfc2c6a7eafa36cd3ba92d63e69e849e2200e0002a228d137f236b09ecd75.css">
<link rel="stylesheet" href="/styles.css"> <link rel="stylesheet" href="https://blog.privacynerd.de/css/gist.min.a751e8b0abe1ba8bc53ced52a38b19d8950fe78ca29454ea8c2595cf26aad5c0.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/header.min.75c7eb0e2872d95ff48109c6647d0223a38db52e2561dd87966eb5fc7c6bdac6.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/main.min.15870410d15d02abd22fb5ef00996f65a00d04b3a7435e9f83831c7c2298de88.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/menu.min.3c17467ebeb3d38663dce68f71f519901124fa5cbb4519b2fb0667a21e9aca39.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/pagination.min.bbb986dbce00a5ce5aca0504b7925fc1c581992a4bf57f163e5d69cc1db7d836.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/post.min.e6dddd258e64c83e05cec0cd49c05216742d42fc8ecbfbe6b67083412b609bd3.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/syntax.min.a0773cce9310cb6d8ed23e50f005448facf29a53001b57e038828daa466b25c0.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/terminal.min.e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/terms.min.b81791663c3790e738e571cdbf802312390d30e4b1d8dc9d814a5b5454d0ac11.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/terminal.css">
<link rel="shortcut icon" href="https://blog.privacynerd.de/favicon.png">
<link rel="apple-touch-icon" href="https://blog.privacynerd.de/apple-touch-icon.png">
<link rel="shortcut icon" href="/img/theme-colors/green.png">
<link rel="apple-touch-icon" href="/img/theme-colors/green.png">
<meta name="twitter:card" content="summary" /> <meta name="twitter:card" content="summary" />
@@ -52,24 +80,19 @@ Below you can read the original about from Radek
<meta property="og:locale" content="de" /> <meta property="og:locale" content="de" />
<meta property="og:type" content="article" /> <meta property="og:type" content="article" />
<meta property="og:title" content="Über"> <meta property="og:title" content="Über">
<meta property="og:description" content="Hallo in a new age You can call me Mirus and I forked the original Terminal theme for Hugo, because Radek, the original creator of the theme stop the maintenance and archived the repo. <meta property="og:description" content="Worum es hier gehen soll Also, mein Name ist Benjamin, und ich bin meistens als BlueFox bekannt. Ich liebe es, an Elektronik herumzubasteln, Sachen in 3D zu drucken und mit Holz zu arbeiten, aber ich programmiere auch ein bisschen und bin ein begeisterter Selbsthoster.
So I already pushed a few improvements that I did for my humble blog and I&rsquo;m going to add some more features in the future, also any contribution is welcome Dies ist mein persönlicher Blog (den ich in meiner Freizeit betreibe, all das ist nur ein Hobby), in dem ich über alle möglichen Dinge schreibe, die ich DIY-mäßig mache. Dazu gehören:
Below you can read the original about from Radek
" /> " />
<meta property="og:url" content="/de/about/" /> <meta property="og:url" content="https://blog.privacynerd.de/de/about/" />
<meta property="og:site_name" content="Privacynerd&#39;s blog" /> <meta property="og:site_name" content="Privacynerd&#39;s blog" />
<meta property="og:image" content="https://blog.privacynerd.de/og-image.png">
<meta property="og:image" content="/img/favicon/green.png">
<meta property="og:image:width" content="1200"> <meta property="og:image:width" content="1200">
<meta property="og:image:height" content="627"> <meta property="og:image:height" content="627">
<meta property="article:published_time" content="2025-04-05 20:14:29 &#43;0200 CEST" /> <meta property="article:published_time" content="2025-04-13 13:02:20 &#43;0200 CEST" />
@@ -81,27 +104,40 @@ Below you can read the original about from Radek
<style>
#banner {
width: 100%;
height: 2rem;
display: grid;
grid-template-columns: 1fr auto;
background: var(--accent);
}
#banner span {
display: flex;
align-items: center;
justify-content: center;
}
#banner a {
color: var(--background);
display: inline;
}
#banner > button {
padding: 0 5px 0 0;
margin: 0;
}
</style>
<div id="banner"><span><a href="https://git.privacynerd.de/git.privacynerd.de/blog.privacynerd.de">Baustelle 🚧 | laufende Arbeiten</a></span></div>
</head> </head>
<body class="green"> <body>
<div id="banner">
<span>
<a href="https://git.privacynerd.de/git.privacynerd.de/blog.privacynerd.de">Baustelle 🚧 | laufende Arbeiten</a>
</span>
</div>
<div class="container center">
<div class="container center headings--one-size">
<header class="header"> <header class="header">
<div class="header__inner"> <div class="header__inner">
@@ -124,19 +160,28 @@ Below you can read the original about from Radek
<li><a href="/de/posts">Posts</a></li> <li><a href="/de/tags">Tags</a></li>
<hr /> <hr />
<li>
<a href='/en/about/'>English</a>
</li>
<li>
<a href='/de/about/'>Deutsch</a> <li>
</li>
<a href="/en/about/">English</a>
</li>
<li>
<b>
<a href="/de/about/">Deutsch</a>
</b>
</li>
</ul> </ul>
@@ -146,21 +191,32 @@ Below you can read the original about from Radek
<ul class="menu menu--desktop menu--language-selector"> <ul class="menu menu--desktop menu--language-selector">
<li class="menu__trigger">de&nbsp;</li> <li class="menu__trigger">de&nbsp;</li>
<li> <li>
<ul class="menu__dropdown"> <ul class="menu__dropdown">
<li><a href='/en/about/'>English</a></li>
<li><a href='/de/about/'>Deutsch</a></li> <li>
<a href="/en/about/">English</a>
</li>
<li>
<b>
<a href="/de/about/">Deutsch</a>
</b>
</li>
</ul> </ul>
</li> </li>
</ul> </ul>
</div> </div>
@@ -168,13 +224,12 @@ Below you can read the original about from Radek
<ul class="navigation-menu__inner menu--desktop"> <ul class="navigation-menu__inner menu--desktop">
<li><a href="/de/about" >Über</a></li> <li><a href="/de/about" >Über</a></li>
<li><a href="/de/posts" >Posts</a></li> <li><a href="/de/tags" >Tags</a></li>
@@ -190,45 +245,31 @@ Below you can read the original about from Radek
<article class="post"> <article class="post">
<h1 class="post-title"> <h1 class="post-title">
<a href="/de/about/">Über</a> <a href="https://blog.privacynerd.de/de/about/">Über</a>
</h1> </h1>
<div class="post-meta"><time class="post-date">2025-04-05</time><span class="post-reading-time">1 Minute Lesezeit (190 Wörter)</span> <div class="post-meta"><time class="post-date">2025-04-13</time><span class="post-reading-time">3 Minuten Lesezeit (246 Wörter)</span></div>
</div>
<div class="post-content"><div> <div class="post-content"><div>
<h1 id="hallo-in-a-new-age">Hallo in a new age<a href="#hallo-in-a-new-age" class="hanchor" ariaLabel="Anchor">&#8983;</a> </h1> <h2 id="intention">Worum es hier gehen soll<a href="#intention" class="hanchor" ariaLabel="Anchor">#</a> </h2>
<p>You can call me Mirus and I forked the original Terminal theme for Hugo, because Radek, the original creator of the theme stop the maintenance and archived the repo.</p> <p>Also, mein Name ist Benjamin, und ich bin meistens als BlueFox bekannt. Ich liebe es, an Elektronik herumzubasteln, Sachen in 3D zu drucken und mit Holz zu arbeiten, aber ich programmiere auch ein bisschen und bin ein begeisterter Selbsthoster.</p>
<p>So I already pushed a few improvements that I did for my humble blog and I&rsquo;m going to add some more features in the future, also any contribution is welcome</p> <p>Dies ist mein persönlicher Blog (den ich in meiner Freizeit betreibe, all das ist nur ein Hobby), in dem ich über alle möglichen Dinge schreibe, die ich DIY-mäßig mache. Dazu gehören:</p>
<p>Below you can read the original about from Radek</p>
<blockquote>
<p>Hi there</p>
<p>My name is Radek and I&rsquo;m the author of this theme.
I made it to help you present your ideas easier.</p>
<p>We all know how hard is to start something on the web,
especially these days. You need to prepare a bunch of stuff,
configure them and when thats done — create the content.</p>
<p>This theme is pretty basic and covers all of the essentials.
All you have to do is start typing!</p>
<p>The theme includes:</p>
<ul> <ul>
<li><strong>5 duotone themes</strong>, <li>Posts über meine DIY-Projekte,</li>
depending on your preferences (orange, red, blue, green, pink)</li> <li>über neue Erfahrungen, die ich beim Basteln sammle,</li>
<li><a href="https://github.com/tonsky/FiraCode"><strong>Fira Code</strong></a> <li>auch hier und da ein Update zu vorhandenen Projekten, Libraries von mir,</li>
as default monospaced font. It&rsquo;s gorgeous!</li> <li>und vielleicht ja auch etwas ganz Neues!</li>
<li><strong>really nice, custom duotone</strong> syntax highlighting based on
<a href="https://prismjs.com"><strong>PrismJS</strong></a></li>
<li>mobile friendly layout</li>
</ul> </ul>
<p>So, there you have it&hellip; enjoy!</p></blockquote> <p>Schau dich doch <a href="/de/">einfach mal um</a>, und vielleicht findest du ja etwas Interessantes!</p>
<p>Blubb.</p> <h2 id="the-logo">Das Logo<a href="#the-logo" class="hanchor" ariaLabel="Anchor">#</a> </h2>
<p>Das Logo für diesen Blog ist entstanden, als mir irgendwann mal langweilig war. Es gefiel mir einfach, und seitdem verwende ich es regelmäßig für meine Projekte. Um genau zu sein, habe ich es gezeichnet, als ich vielleicht 11 Jahre alt war, und das erste Mal wurde es in einem <code>Django + Python</code>-Projekt von mir verwendet, das sich „PiFi“ nannte - was jetzt auch der Name eines High-Speed-Wifi-Nachrüstsatzes und eines HiFi-Systems ist, die beide auf Raspberry Pi&rsquo;s basieren (aber diese sind völlig unabhängig voneinander und konnten meine Namensgebung nicht kennen). Naja.</p>
<h2 id="the-story-behind-it">Die Geschichte dahinter (und noch mehr)<a href="#the-story-behind-it" class="hanchor" ariaLabel="Anchor">#</a> </h2>
<p>Der erste Post in diesem Blog verrät viel über die Geschichte und wie es zu der Idee für diesen Blog kam. Wen es interessiert, der kann es <a href="https://blog.privacynerd.de/de/posts/how-it-all-began/">hier</a> nachlesen.</p>
</div></div> </div></div>
@@ -252,8 +293,8 @@ as default monospaced font. It&rsquo;s gorgeous!</li>
<div class="copyright copyright--user"> <div class="copyright copyright--user">
<span class="antidiscovery">© 2025 <i>L</i>B<i>P</i>e<i>o</i>n<i>i</i>j<i>n</i>a<i>c</i>m<i>G</i>i<i>N</i>n<i>U</i> <i>S</i>B<i>k</i>u<i>o</i>r<i>K</i>k<i>y</i>h<i>f</i>a<i>H</i>r<i>r</i>d<i>y</i>t</span> <span class="antidiscovery">© 2025 <i>L</i>B<i>P</i>e<i>o</i>n<i>i</i>j<i>n</i>a<i>c</i>m<i>G</i>i<i>N</i>n<i>U</i> <i>S</i>B<i>k</i>u<i>o</i>r<i>K</i>k<i>y</i>h<i>f</i>a<i>H</i>r<i>r</i>d<i>y</i>t</span>
<span style="margin-right: 10px">:: <a href="https://privacynerd.de/impressum?referrer=%2fde%2fabout%2f">Impressum</a></span> <span style="margin-right: 10px">:: <a href="https://privacynerd.de/impressum?referrer=https%3a%2f%2fblog.privacynerd.de%2fde%2fabout%2f">Impressum</a></span>
<span>:: <a href="https://github.com/mirus-ua/hugo-theme-re-terminal" target="_blank">Theme</a> von <a href="https://github.com/mirus-ua" target="_blank">Mirus</a> (angepasst)</span> <span>:: <a href="https://github.com/panr/hugo-theme-terminal" target="_blank">Theme</a> erstellt von <a href="https://github.com/panr" target="_blank">panr</a> (angepasst)</span>
</div> </div>
</div> </div>
</footer> </footer>
@@ -267,13 +308,24 @@ as default monospaced font. It&rsquo;s gorgeous!</li>
<script src="https://swetrix.privacynerd.de/script.js" defer=""></script>
<script>
<script type="text/javascript" src="/js/banner.min.js"></script> document.addEventListener('DOMContentLoaded', function() {
swetrix.init('GyBjobBbBEEC', {apiURL: 'https://swetrix.privacynerd.de/api/log',})
swetrix.trackViews()
swetrix.trackErrors({
sampleRate: 1,
callback: undefined,
})
})
</script>
<noscript>
<img
src="https://swetrix.privacynerd.de/api/log/noscript?pid=GyBjobBbBEEC"
alt=""
referrerpolicy="no-referrer-when-downgrade"
/>
</noscript>

View File

@@ -11,30 +11,59 @@
<meta name="robots" content="noodp" /> <meta name="robots" content="noodp" />
<link rel="canonical" href="/de/categories/" /> <link rel="canonical" href="https://blog.privacynerd.de/de/categories/" />
<link rel="stylesheet" href="https://blog.privacynerd.de/css/buttons.min.86f6b4c106b6c6eb690ae5203d36b442c1f66f718ff4e8164fa86cf6c61ad641.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/code.min.4f0ccc8439f99bf7f7970298556b94011aabc1fcae743b6842fc3361a2da9ea3.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/fonts.min.5bb7ed13e1d00d8ff39ea84af26737007eb5051b157b86fc24487c94f3dc8bbe.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/footer.min.eb8dfc2c6a7eafa36cd3ba92d63e69e849e2200e0002a228d137f236b09ecd75.css">
<link rel="stylesheet" href="/styles.css"> <link rel="stylesheet" href="https://blog.privacynerd.de/css/gist.min.a751e8b0abe1ba8bc53ced52a38b19d8950fe78ca29454ea8c2595cf26aad5c0.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/header.min.75c7eb0e2872d95ff48109c6647d0223a38db52e2561dd87966eb5fc7c6bdac6.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/main.min.15870410d15d02abd22fb5ef00996f65a00d04b3a7435e9f83831c7c2298de88.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/menu.min.3c17467ebeb3d38663dce68f71f519901124fa5cbb4519b2fb0667a21e9aca39.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/pagination.min.bbb986dbce00a5ce5aca0504b7925fc1c581992a4bf57f163e5d69cc1db7d836.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/post.min.e6dddd258e64c83e05cec0cd49c05216742d42fc8ecbfbe6b67083412b609bd3.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/syntax.min.a0773cce9310cb6d8ed23e50f005448facf29a53001b57e038828daa466b25c0.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/terminal.min.e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/terms.min.b81791663c3790e738e571cdbf802312390d30e4b1d8dc9d814a5b5454d0ac11.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/terminal.css">
<link rel="shortcut icon" href="https://blog.privacynerd.de/favicon.png">
<link rel="apple-touch-icon" href="https://blog.privacynerd.de/apple-touch-icon.png">
<link rel="shortcut icon" href="/img/theme-colors/green.png">
<link rel="apple-touch-icon" href="/img/theme-colors/green.png">
<meta name="twitter:card" content="summary" /> <meta name="twitter:card" content="summary" />
@@ -50,12 +79,10 @@
<meta property="og:type" content="website" /> <meta property="og:type" content="website" />
<meta property="og:title" content="Categories"> <meta property="og:title" content="Categories">
<meta property="og:description" content="" /> <meta property="og:description" content="" />
<meta property="og:url" content="/de/categories/" /> <meta property="og:url" content="https://blog.privacynerd.de/de/categories/" />
<meta property="og:site_name" content="Privacynerd&#39;s blog" /> <meta property="og:site_name" content="Privacynerd&#39;s blog" />
<meta property="og:image" content="https://blog.privacynerd.de/og-image.png">
<meta property="og:image" content="/img/favicon/green.png">
<meta property="og:image:width" content="1200"> <meta property="og:image:width" content="1200">
<meta property="og:image:height" content="627"> <meta property="og:image:height" content="627">
@@ -73,29 +100,40 @@
<style>
#banner {
width: 100%;
height: 2rem;
display: grid;
grid-template-columns: 1fr auto;
background: var(--accent);
}
#banner span {
display: flex;
align-items: center;
justify-content: center;
}
#banner a {
color: var(--background);
display: inline;
}
#banner > button {
padding: 0 5px 0 0;
margin: 0;
}
</style>
<div id="banner"><span><a href="https://git.privacynerd.de/git.privacynerd.de/blog.privacynerd.de">Baustelle 🚧 | laufende Arbeiten</a></span></div>
</head> </head>
<body class="green"> <body>
<div id="banner">
<span>
<a href="https://git.privacynerd.de/git.privacynerd.de/blog.privacynerd.de">Baustelle 🚧 | laufende Arbeiten</a>
</span>
</div>
<div class="container center">
<div class="container center headings--one-size">
<header class="header"> <header class="header">
<div class="header__inner"> <div class="header__inner">
@@ -118,19 +156,28 @@
<li><a href="/de/posts">Posts</a></li> <li><a href="/de/tags">Tags</a></li>
<hr /> <hr />
<li>
<a href='/en/categories/'>English</a>
</li>
<li>
<a href='/de/categories/'>Deutsch</a> <li>
</li>
<a href="/en/categories/">English</a>
</li>
<li>
<b>
<a href="/de/categories/">Deutsch</a>
</b>
</li>
</ul> </ul>
@@ -140,21 +187,32 @@
<ul class="menu menu--desktop menu--language-selector"> <ul class="menu menu--desktop menu--language-selector">
<li class="menu__trigger">de&nbsp;</li> <li class="menu__trigger">de&nbsp;</li>
<li> <li>
<ul class="menu__dropdown"> <ul class="menu__dropdown">
<li><a href='/en/categories/'>English</a></li>
<li><a href='/de/categories/'>Deutsch</a></li> <li>
<a href="/en/categories/">English</a>
</li>
<li>
<b>
<a href="/de/categories/">Deutsch</a>
</b>
</li>
</ul> </ul>
</li> </li>
</ul> </ul>
</div> </div>
@@ -162,13 +220,12 @@
<ul class="navigation-menu__inner menu--desktop"> <ul class="navigation-menu__inner menu--desktop">
<li><a href="/de/about" >Über</a></li> <li><a href="/de/about" >Über</a></li>
<li><a href="/de/posts" >Posts</a></li> <li><a href="/de/tags" >Tags</a></li>
@@ -203,8 +260,8 @@
<div class="copyright copyright--user"> <div class="copyright copyright--user">
<span class="antidiscovery">© 2025 <i>L</i>B<i>P</i>e<i>o</i>n<i>i</i>j<i>n</i>a<i>c</i>m<i>G</i>i<i>N</i>n<i>U</i> <i>S</i>B<i>k</i>u<i>o</i>r<i>K</i>k<i>y</i>h<i>f</i>a<i>H</i>r<i>r</i>d<i>y</i>t</span> <span class="antidiscovery">© 2025 <i>L</i>B<i>P</i>e<i>o</i>n<i>i</i>j<i>n</i>a<i>c</i>m<i>G</i>i<i>N</i>n<i>U</i> <i>S</i>B<i>k</i>u<i>o</i>r<i>K</i>k<i>y</i>h<i>f</i>a<i>H</i>r<i>r</i>d<i>y</i>t</span>
<span style="margin-right: 10px">:: <a href="https://privacynerd.de/impressum?referrer=%2fde%2fcategories%2f">Impressum</a></span> <span style="margin-right: 10px">:: <a href="https://privacynerd.de/impressum?referrer=https%3a%2f%2fblog.privacynerd.de%2fde%2fcategories%2f">Impressum</a></span>
<span>:: <a href="https://github.com/mirus-ua/hugo-theme-re-terminal" target="_blank">Theme</a> von <a href="https://github.com/mirus-ua" target="_blank">Mirus</a> (angepasst)</span> <span>:: <a href="https://github.com/panr/hugo-theme-terminal" target="_blank">Theme</a> erstellt von <a href="https://github.com/panr" target="_blank">panr</a> (angepasst)</span>
</div> </div>
</div> </div>
</footer> </footer>
@@ -218,13 +275,24 @@
<script src="https://swetrix.privacynerd.de/script.js" defer=""></script>
<script>
<script type="text/javascript" src="/js/banner.min.js"></script> document.addEventListener('DOMContentLoaded', function() {
swetrix.init('GyBjobBbBEEC', {apiURL: 'https://swetrix.privacynerd.de/api/log',})
swetrix.trackViews()
swetrix.trackErrors({
sampleRate: 1,
callback: undefined,
})
})
</script>
<noscript>
<img
src="https://swetrix.privacynerd.de/api/log/noscript?pid=GyBjobBbBEEC"
alt=""
referrerpolicy="no-referrer-when-downgrade"
/>
</noscript>

View File

@@ -2,9 +2,10 @@
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel> <channel>
<title>Categories on Privacynerd&#39;s blog</title> <title>Categories on Privacynerd&#39;s blog</title>
<link>/de/categories/</link> <link>https://blog.privacynerd.de/de/categories/</link>
<description>Recent content in Categories on Privacynerd&#39;s blog</description> <description>Recent content in Categories on Privacynerd&#39;s blog</description>
<generator>Hugo -- gohugo.io</generator> <generator>Hugo</generator>
<language>de</language><atom:link href="/de/categories/index.xml" rel="self" type="application/rss+xml" /> <language>de</language>
<atom:link href="https://blog.privacynerd.de/de/categories/index.xml" rel="self" type="application/rss+xml" />
</channel> </channel>
</rss> </rss>

View File

@@ -12,30 +12,59 @@
<meta name="robots" content="noodp" /> <meta name="robots" content="noodp" />
<link rel="canonical" href="/de/" /> <link rel="canonical" href="https://blog.privacynerd.de/de/" />
<link rel="stylesheet" href="https://blog.privacynerd.de/css/buttons.min.86f6b4c106b6c6eb690ae5203d36b442c1f66f718ff4e8164fa86cf6c61ad641.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/code.min.4f0ccc8439f99bf7f7970298556b94011aabc1fcae743b6842fc3361a2da9ea3.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/fonts.min.5bb7ed13e1d00d8ff39ea84af26737007eb5051b157b86fc24487c94f3dc8bbe.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/footer.min.eb8dfc2c6a7eafa36cd3ba92d63e69e849e2200e0002a228d137f236b09ecd75.css">
<link rel="stylesheet" href="/styles.css"> <link rel="stylesheet" href="https://blog.privacynerd.de/css/gist.min.a751e8b0abe1ba8bc53ced52a38b19d8950fe78ca29454ea8c2595cf26aad5c0.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/header.min.75c7eb0e2872d95ff48109c6647d0223a38db52e2561dd87966eb5fc7c6bdac6.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/main.min.15870410d15d02abd22fb5ef00996f65a00d04b3a7435e9f83831c7c2298de88.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/menu.min.3c17467ebeb3d38663dce68f71f519901124fa5cbb4519b2fb0667a21e9aca39.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/pagination.min.bbb986dbce00a5ce5aca0504b7925fc1c581992a4bf57f163e5d69cc1db7d836.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/post.min.e6dddd258e64c83e05cec0cd49c05216742d42fc8ecbfbe6b67083412b609bd3.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/syntax.min.a0773cce9310cb6d8ed23e50f005448facf29a53001b57e038828daa466b25c0.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/terminal.min.e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/terms.min.b81791663c3790e738e571cdbf802312390d30e4b1d8dc9d814a5b5454d0ac11.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/terminal.css">
<link rel="shortcut icon" href="https://blog.privacynerd.de/favicon.png">
<link rel="apple-touch-icon" href="https://blog.privacynerd.de/apple-touch-icon.png">
<link rel="shortcut icon" href="/img/theme-colors/green.png">
<link rel="apple-touch-icon" href="/img/theme-colors/green.png">
<meta name="twitter:card" content="summary" /> <meta name="twitter:card" content="summary" />
@@ -51,17 +80,17 @@
<meta property="og:type" content="website" /> <meta property="og:type" content="website" />
<meta property="og:title" content="Privacynerd&#39;s blog"> <meta property="og:title" content="Privacynerd&#39;s blog">
<meta property="og:description" content="Blog von privacynerd" /> <meta property="og:description" content="Blog von privacynerd" />
<meta property="og:url" content="/de/" /> <meta property="og:url" content="https://blog.privacynerd.de/de/" />
<meta property="og:site_name" content="Privacynerd&#39;s blog" /> <meta property="og:site_name" content="Privacynerd&#39;s blog" />
<meta property="og:image" content="https://blog.privacynerd.de/og-image.png">
<meta property="og:image" content="/img/favicon/green.png">
<meta property="og:image:width" content="1200"> <meta property="og:image:width" content="1200">
<meta property="og:image:height" content="627"> <meta property="og:image:height" content="627">
<meta property="article:published_time" content="2025-04-13 12:54:00 &#43;0200 CEST" />
@@ -74,29 +103,40 @@
<style>
#banner {
width: 100%;
height: 2rem;
display: grid;
grid-template-columns: 1fr auto;
background: var(--accent);
}
#banner span {
display: flex;
align-items: center;
justify-content: center;
}
#banner a {
color: var(--background);
display: inline;
}
#banner > button {
padding: 0 5px 0 0;
margin: 0;
}
</style>
<div id="banner"><span><a href="https://git.privacynerd.de/git.privacynerd.de/blog.privacynerd.de">Baustelle 🚧 | laufende Arbeiten</a></span></div>
</head> </head>
<body class="green"> <body>
<div id="banner">
<span>
<a href="https://git.privacynerd.de/git.privacynerd.de/blog.privacynerd.de">Baustelle 🚧 | laufende Arbeiten</a>
</span>
</div>
<div class="container center">
<div class="container center headings--one-size">
<header class="header"> <header class="header">
<div class="header__inner"> <div class="header__inner">
@@ -119,19 +159,28 @@
<li><a href="/de/posts">Posts</a></li> <li><a href="/de/tags">Tags</a></li>
<hr /> <hr />
<li>
<a href='/en/'>English</a>
</li>
<li>
<a href='/de/'>Deutsch</a> <li>
</li>
<a href="/en/">English</a>
</li>
<li>
<b>
<a href="/de/">Deutsch</a>
</b>
</li>
</ul> </ul>
@@ -141,21 +190,32 @@
<ul class="menu menu--desktop menu--language-selector"> <ul class="menu menu--desktop menu--language-selector">
<li class="menu__trigger">de&nbsp;</li> <li class="menu__trigger">de&nbsp;</li>
<li> <li>
<ul class="menu__dropdown"> <ul class="menu__dropdown">
<li><a href='/en/'>English</a></li>
<li><a href='/de/'>Deutsch</a></li> <li>
<a href="/en/">English</a>
</li>
<li>
<b>
<a href="/de/">Deutsch</a>
</b>
</li>
</ul> </ul>
</li> </li>
</ul> </ul>
</div> </div>
@@ -163,13 +223,12 @@
<ul class="navigation-menu__inner menu--desktop"> <ul class="navigation-menu__inner menu--desktop">
<li><a href="/de/about" >Über</a></li> <li><a href="/de/about" >Über</a></li>
<li><a href="/de/posts" >Posts</a></li> <li><a href="/de/tags" >Tags</a></li>
@@ -184,6 +243,14 @@
<div class="content"> <div class="content">
<div class="index-content framed">
<h1 id="ich-grüße-sie-">Ich grüße Sie! 👋</h1>
<p>Mein Name ist Benjamin, und ich bin hauptsächlich als <em>BlueFox</em> bekannt.</p>
<p>Willkommen in diesem Blog! Ich liebe es, an Elektronik herumzubasteln, Sachen in 3D zu drucken und mit Holz zu arbeiten, aber ich <code>programmiere</code> auch ein bisschen und bin ein begeisterter Selbsthoster. Hier poste ich hin und wieder, was ich so anstelle.</p>
<p><strong>Schau dich doch einfach mal um!</strong></p>
</div>
<div class="posts"> <div class="posts">
@@ -196,62 +263,62 @@
<article class="post on-list"> <article class="post on-list">
<h1 class="post-title"> <h2 class="post-title">
<a href="/de/posts/one-word/">Deutscher Test Post</a> <a href="https://blog.privacynerd.de/de/posts/diy-uv-pcb-exposure-unit/">UV-Belichter (LED) aus Marke Eigenbau</a>
</h1> </h2>
<div class="post-meta"><time class="post-date">2025-04-05</time> <div class="post-meta"><time class="post-date">2025-04-14</time></div>
</div>
<img src="/en/posts/diy-uv-pcb-exposure-unit/cover.jpg"
class="post-cover"
alt="UV-Belichter (LED) aus Marke Eigenbau"
title="Cover Image" />
<div class="post-content"> <div class="post-content">
<h1 id="nureinwort">Nureinwort</h1> <p>Ist man eine gewisse Zeit lang in der (Elektronik-)DIY-Szene unterwegs, kommt man irgendwann auch um Platinen (gedruckte Leiterplatten/PCBs) nicht herum. Vorteile gegenüber dem manuellen Löten von Schaltungen auf Loch- bzw. Streifenrasterplatinen sind vor allem die einfachere Replizierbarkeit (einmal designed kann man eine Schaltung theoretisch beliebig oft herstellen) und die Möglichkeit, Platz effizienter zu nutzen (eine Platine ist fast immer kleiner als eine gelötete Lochrasterplatine mit der selben Schaltung). Letzendlich wirken Geräte mit Platinen aber auch schlicht professioneller. Sicherlich gibt es noch mehr Vorteile (und natürlich auch Nachteile!), auf deren Auflistung ich hier allerdings aus Gründen der Einfachheit verzichte.</p>
</div> </div>
<div> <div>
<a class="read-more button" href="/de/posts/one-word/">Mehr lesen</a> <a class="read-more button inline" href="/de/posts/diy-uv-pcb-exposure-unit/">[Mehr lesen]</a>
</div> </div>
</article> </article>
<article class="post on-list"> <article class="post on-list">
<h1 class="post-title"> <h2 class="post-title">
<a href="/de/posts/test-post/">Deutscher Test Post</a> <a href="https://blog.privacynerd.de/de/posts/how-it-all-began/">Wie es alles anfing - oder: der erste Post!</a>
</h1> </h2>
<div class="post-meta"><time class="post-date">2025-04-05</time> <div class="post-meta"><time class="post-date">2025-04-13</time></div>
</div>
<img src="/en/posts/how-it-all-began/cover.png"
class="post-cover"
alt="Wie es alles anfing - oder: der erste Post!"
title="Cover Image" />
<div class="post-content"> <div class="post-content">
<h1 id="test-post-in-german">Test Post in German</h1> <h2 id="thinking">Vorüberlegungen</h2>
<h2 id="lorem-ipsum">Lorem ipsum</h2> <p>Ich habe lange überlegt, wie ich diesen Post schreibe. Was muss erzählt werden, was ist unwichtig? Vieles muss wegen der Übersichtlichkeit weggelassen werden, und an so manches erinnere ich mich vielleicht schon gar nicht mehr. Jedenfalls möchte ich mit diesem Artikel meine Intention erklären, wie ich dazu kam, diesen Blog zu starten. Doch um das zu erklären, muss man die Ursprünge verstehen.</p>
<h3 id="dolor-sit-amet">dolor sit amet</h3> <h2 id="beginnings">Wie alles anfing</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim aeque doleamus animo, cum corpore dolemus, fieri tamen permagna accessio potest, si aliquod aeternum et infinitum impendere malum nobis opinemur. Quod idem licet transferre in voluptatem, ut postea variari voluptas distinguique possit, augeri amplificarique non possit. At etiam Athenis, ut e.</p> <p>Alles begann damit, dass ich als Schüler der 5. oder 6. Klasse (ich weiß es nicht mehr so genau!) anfing, auf einem Laptop für die Schule ein Batch-Skript zu schreiben. Ja, so war es, ich gebe es zu - auch wenn ich nicht weiß, wer oder was mich dazu trieb. Eine grobe Vorstellung habe ich aber: Ich glaube, es war so eine intrinsische Motivation eines Kindes, herauszufinden, wie dieser Computer da vor ihm funktioniert, die mich dazu trieb.</p>
</div> </div>
<div> <div>
<a class="read-more button" href="/de/posts/test-post/">Mehr lesen</a> <a class="read-more button inline" href="/de/posts/how-it-all-began/">[Mehr lesen]</a>
</div> </div>
</article> </article>
@@ -261,6 +328,7 @@
<div class="pagination__buttons"> <div class="pagination__buttons">
</div> </div>
</div> </div>
@@ -278,8 +346,8 @@
<div class="copyright copyright--user"> <div class="copyright copyright--user">
<span class="antidiscovery">© 2025 <i>L</i>B<i>P</i>e<i>o</i>n<i>i</i>j<i>n</i>a<i>c</i>m<i>G</i>i<i>N</i>n<i>U</i> <i>S</i>B<i>k</i>u<i>o</i>r<i>K</i>k<i>y</i>h<i>f</i>a<i>H</i>r<i>r</i>d<i>y</i>t</span> <span class="antidiscovery">© 2025 <i>L</i>B<i>P</i>e<i>o</i>n<i>i</i>j<i>n</i>a<i>c</i>m<i>G</i>i<i>N</i>n<i>U</i> <i>S</i>B<i>k</i>u<i>o</i>r<i>K</i>k<i>y</i>h<i>f</i>a<i>H</i>r<i>r</i>d<i>y</i>t</span>
<span style="margin-right: 10px">:: <a href="https://privacynerd.de/impressum?referrer=%2fde%2f">Impressum</a></span> <span style="margin-right: 10px">:: <a href="https://privacynerd.de/impressum?referrer=https%3a%2f%2fblog.privacynerd.de%2fde%2f">Impressum</a></span>
<span>:: <a href="https://github.com/mirus-ua/hugo-theme-re-terminal" target="_blank">Theme</a> von <a href="https://github.com/mirus-ua" target="_blank">Mirus</a> (angepasst)</span> <span>:: <a href="https://github.com/panr/hugo-theme-terminal" target="_blank">Theme</a> erstellt von <a href="https://github.com/panr" target="_blank">panr</a> (angepasst)</span>
</div> </div>
</div> </div>
</footer> </footer>
@@ -293,13 +361,24 @@
<script src="https://swetrix.privacynerd.de/script.js" defer=""></script>
<script>
<script type="text/javascript" src="/js/banner.min.js"></script> document.addEventListener('DOMContentLoaded', function() {
swetrix.init('GyBjobBbBEEC', {apiURL: 'https://swetrix.privacynerd.de/api/log',})
swetrix.trackViews()
swetrix.trackErrors({
sampleRate: 1,
callback: undefined,
})
})
</script>
<noscript>
<img
src="https://swetrix.privacynerd.de/api/log/noscript?pid=GyBjobBbBEEC"
alt=""
referrerpolicy="no-referrer-when-downgrade"
/>
</noscript>

View File

@@ -2,84 +2,32 @@
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel> <channel>
<title>Privacynerd&#39;s blog</title> <title>Privacynerd&#39;s blog</title>
<link>/de/</link> <link>https://blog.privacynerd.de/de/</link>
<description>Recent content on Privacynerd&#39;s blog</description> <description>Recent content on Privacynerd&#39;s blog</description>
<generator>Hugo -- gohugo.io</generator> <generator>Hugo</generator>
<language>de</language> <language>de</language>
<lastBuildDate>Sat, 05 Apr 2025 20:14:29 +0200</lastBuildDate><atom:link href="/de/index.xml" rel="self" type="application/rss+xml" /> <lastBuildDate>Mon, 14 Apr 2025 08:11:20 +0200</lastBuildDate>
<atom:link href="https://blog.privacynerd.de/de/index.xml" rel="self" type="application/rss+xml" />
<item> <item>
<title>Deutscher Test Post</title> <title>UV-Belichter (LED) aus Marke Eigenbau</title>
<link>/de/posts/one-word/</link> <link>https://blog.privacynerd.de/de/posts/diy-uv-pcb-exposure-unit/</link>
<pubDate>Sat, 05 Apr 2025 20:14:29 +0200</pubDate> <pubDate>Mon, 14 Apr 2025 08:11:20 +0200</pubDate>
<guid>https://blog.privacynerd.de/de/posts/diy-uv-pcb-exposure-unit/</guid>
<guid>/de/posts/one-word/</guid> <description>&lt;p&gt;Ist man eine gewisse Zeit lang in der (Elektronik-)DIY-Szene unterwegs, kommt man irgendwann auch um Platinen (gedruckte Leiterplatten/PCBs) nicht herum. Vorteile gegenüber dem manuellen Löten von Schaltungen auf Loch- bzw. Streifenrasterplatinen sind vor allem die einfachere Replizierbarkeit (einmal designed kann man eine Schaltung theoretisch beliebig oft herstellen) und die Möglichkeit, Platz effizienter zu nutzen (eine Platine ist fast immer kleiner als eine gelötete Lochrasterplatine mit der selben Schaltung). Letzendlich wirken Geräte mit Platinen aber auch schlicht professioneller. Sicherlich gibt es noch mehr Vorteile (und natürlich auch Nachteile!), auf deren Auflistung ich hier allerdings aus Gründen der Einfachheit verzichte.&lt;/p&gt;</description>
<description>&lt;h1 id=&#34;nureinwort&#34;&gt;Nureinwort&lt;/h1&gt;</description>
<content>&lt;h1 id=&#34;nureinwort&#34;&gt;Nureinwort&lt;/h1&gt;
</content>
</item> </item>
<item> <item>
<title>Deutscher Test Post</title> <title>Wie es alles anfing - oder: der erste Post!</title>
<link>/de/posts/test-post/</link> <link>https://blog.privacynerd.de/de/posts/how-it-all-began/</link>
<pubDate>Sat, 05 Apr 2025 20:14:29 +0200</pubDate> <pubDate>Sun, 13 Apr 2025 15:10:20 +0200</pubDate>
<guid>https://blog.privacynerd.de/de/posts/how-it-all-began/</guid>
<guid>/de/posts/test-post/</guid> <description>&lt;h2 id=&#34;thinking&#34;&gt;Vorüberlegungen&lt;/h2&gt;&#xA;&lt;p&gt;Ich habe lange überlegt, wie ich diesen Post schreibe. Was muss erzählt werden, was ist unwichtig? Vieles muss wegen der Übersichtlichkeit weggelassen werden, und an so manches erinnere ich mich vielleicht schon gar nicht mehr. Jedenfalls möchte ich mit diesem Artikel meine Intention erklären, wie ich dazu kam, diesen Blog zu starten. Doch um das zu erklären, muss man die Ursprünge verstehen.&lt;/p&gt;&#xA;&lt;h2 id=&#34;beginnings&#34;&gt;Wie alles anfing&lt;/h2&gt;&#xA;&lt;p&gt;Alles begann damit, dass ich als Schüler der 5. oder 6. Klasse (ich weiß es nicht mehr so genau!) anfing, auf einem Laptop für die Schule ein Batch-Skript zu schreiben. Ja, so war es, ich gebe es zu - auch wenn ich nicht weiß, wer oder was mich dazu trieb. Eine grobe Vorstellung habe ich aber: Ich glaube, es war so eine intrinsische Motivation eines Kindes, herauszufinden, wie dieser Computer da vor ihm funktioniert, die mich dazu trieb.&lt;/p&gt;</description>
<description>&lt;h1 id=&#34;test-post-in-german&#34;&gt;Test Post in German&lt;/h1&gt;
&lt;h2 id=&#34;lorem-ipsum&#34;&gt;Lorem ipsum&lt;/h2&gt;
&lt;h3 id=&#34;dolor-sit-amet&#34;&gt;dolor sit amet&lt;/h3&gt;
&lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim aeque doleamus animo, cum corpore dolemus, fieri tamen permagna accessio potest, si aliquod aeternum et infinitum impendere malum nobis opinemur. Quod idem licet transferre in voluptatem, ut postea variari voluptas distinguique possit, augeri amplificarique non possit. At etiam Athenis, ut e.&lt;/p&gt;</description>
<content>&lt;h1 id=&#34;test-post-in-german&#34;&gt;Test Post in German&lt;/h1&gt;
&lt;h2 id=&#34;lorem-ipsum&#34;&gt;Lorem ipsum&lt;/h2&gt;
&lt;h3 id=&#34;dolor-sit-amet&#34;&gt;dolor sit amet&lt;/h3&gt;
&lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim aeque doleamus animo, cum corpore dolemus, fieri tamen permagna accessio potest, si aliquod aeternum et infinitum impendere malum nobis opinemur. Quod idem licet transferre in voluptatem, ut postea variari voluptas distinguique possit, augeri amplificarique non possit. At etiam Athenis, ut e.&lt;/p&gt;
&lt;h3 id=&#34;consectetur-adipiscing&#34;&gt;Consectetur adipiscing&lt;/h3&gt;
&lt;p&gt;Bonum sit aut quid iudicat, quo aut petat aut fugiat aliquid, praeter voluptatem et dolorem. Ad haec et quae vel aliter pararetur et qua etiam carere possent sine dolore tum in morbos gravis, tum in damna, tum in dedecora incurrunt, saepe etiam legum iudiciorumque poenis obligantur. Qui autem ita frui volunt voluptatibus, ut nulli propter eas consequantur dolores, et qui suum iudicium retinent, ne voluptate victi faciant id.&lt;/p&gt;
&lt;p&gt;Sumitur contra mortis timorem et constantia contra metum religionis et sedatio animi omnium rerum occultarum ignoratione sublata et moderatio natura cupiditatum generibusque earum explicatis, et, ut dixi, ad lineam, hunc naturalem esse omnium corporum motum. Deinde ibidem homo acutus, cum illud ocurreret, si omnia dixi hausta e fonte naturae, si tota oratio nostra omnem sibi fidem sensibus confirmat, id est in culpa qui officia deserunt mollitia animi, id est.&lt;/p&gt;
&lt;p&gt;Posuit. Ea scientia et verborum vis et natura orationis et consequentium repugnantiumve ratio potest perspici. Omnium autem rerum natura cognita levamur superstitione, liberamur mortis metu, non conturbamur ignoratione rerum, e qua ipsa horribiles existunt saepe formidines. Denique etiam morati melius erimus.&lt;/p&gt;
&lt;h2 id=&#34;delorean-ipsum&#34;&gt;DeLorean ipsum&lt;/h2&gt;
&lt;p&gt;That&amp;rsquo;s right. Huh? Go. Here you go, lady. There&amp;rsquo;s a quarter. Good morning.&lt;/p&gt;
&lt;p&gt;Marty, I always wear a suit to the office. You alright? It&amp;rsquo;s a board with wheels. Yeah. What the hell is this? Marty, you&amp;rsquo;re acting like you haven&amp;rsquo;t seen me in a week.&lt;/p&gt;
&lt;p&gt;Yes, yes, I&amp;rsquo;m George, George McFly, and I&amp;rsquo;m your density. I mean, I&amp;rsquo;m your destiny. It works, ha ha ha ha, it works. I finally invent something that works. Where the hell are they. That&amp;rsquo;s Strickland. Jesus, didn&amp;rsquo;t that guy ever have hair? Alright, alright, okay McFly, get a grip on yourself. It&amp;rsquo;s all a dream. Just a very intense dream. Woh, hey, listen, you gotta help me.&lt;/p&gt;
</content>
</item> </item>
<item> <item>
<title>Über</title> <title>Über</title>
<link>/de/about/</link> <link>https://blog.privacynerd.de/de/about/</link>
<pubDate>Sat, 05 Apr 2025 20:14:29 +0200</pubDate> <pubDate>Sun, 13 Apr 2025 13:02:20 +0200</pubDate>
<guid>https://blog.privacynerd.de/de/about/</guid>
<guid>/de/about/</guid> <description>&lt;h2 id=&#34;intention&#34;&gt;Worum es hier gehen soll&lt;/h2&gt;&#xA;&lt;p&gt;Also, mein Name ist Benjamin, und ich bin meistens als BlueFox bekannt. Ich liebe es, an Elektronik herumzubasteln, Sachen in 3D zu drucken und mit Holz zu arbeiten, aber ich programmiere auch ein bisschen und bin ein begeisterter Selbsthoster.&lt;/p&gt;&#xA;&lt;p&gt;Dies ist mein persönlicher Blog (den ich in meiner Freizeit betreibe, all das ist nur ein Hobby), in dem ich über alle möglichen Dinge schreibe, die ich DIY-mäßig mache. Dazu gehören:&lt;/p&gt;</description>
<description>&lt;h1 id=&#34;hallo-in-a-new-age&#34;&gt;Hallo in a new age&lt;/h1&gt;
&lt;p&gt;You can call me Mirus and I forked the original Terminal theme for Hugo, because Radek, the original creator of the theme stop the maintenance and archived the repo.&lt;/p&gt;
&lt;p&gt;So I already pushed a few improvements that I did for my humble blog and I&amp;rsquo;m going to add some more features in the future, also any contribution is welcome&lt;/p&gt;
&lt;p&gt;Below you can read the original about from Radek&lt;/p&gt;</description>
<content>&lt;h1 id=&#34;hallo-in-a-new-age&#34;&gt;Hallo in a new age&lt;/h1&gt;
&lt;p&gt;You can call me Mirus and I forked the original Terminal theme for Hugo, because Radek, the original creator of the theme stop the maintenance and archived the repo.&lt;/p&gt;
&lt;p&gt;So I already pushed a few improvements that I did for my humble blog and I&amp;rsquo;m going to add some more features in the future, also any contribution is welcome&lt;/p&gt;
&lt;p&gt;Below you can read the original about from Radek&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hi there&lt;/p&gt;
&lt;p&gt;My name is Radek and I&amp;rsquo;m the author of this theme.
I made it to help you present your ideas easier.&lt;/p&gt;
&lt;p&gt;We all know how hard is to start something on the web,
especially these days. You need to prepare a bunch of stuff,
configure them and when thats done — create the content.&lt;/p&gt;
&lt;p&gt;This theme is pretty basic and covers all of the essentials.
All you have to do is start typing!&lt;/p&gt;
&lt;p&gt;The theme includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;5 duotone themes&lt;/strong&gt;,
depending on your preferences (orange, red, blue, green, pink)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/tonsky/FiraCode&#34;&gt;&lt;strong&gt;Fira Code&lt;/strong&gt;&lt;/a&gt;
as default monospaced font. It&amp;rsquo;s gorgeous!&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;really nice, custom duotone&lt;/strong&gt; syntax highlighting based on
&lt;a href=&#34;https://prismjs.com&#34;&gt;&lt;strong&gt;PrismJS&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;mobile friendly layout&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So, there you have it&amp;hellip; enjoy!&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Blubb.&lt;/p&gt;
</content>
</item> </item>
</channel> </channel>
</rss> </rss>

View File

@@ -1,10 +1,10 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="de"> <html lang="de">
<head> <head>
<title>/de/</title> <title>https://blog.privacynerd.de/de/</title>
<link rel="canonical" href="/de/"> <link rel="canonical" href="https://blog.privacynerd.de/de/">
<meta name="robots" content="noindex"> <meta name="robots" content="noindex">
<meta charset="utf-8"> <meta charset="utf-8">
<meta http-equiv="refresh" content="0; url=/de/"> <meta http-equiv="refresh" content="0; url=https://blog.privacynerd.de/de/">
</head> </head>
</html> </html>

View File

@@ -0,0 +1,435 @@
<!DOCTYPE html>
<html lang="de">
<head>
<title>UV-Belichter (LED) aus Marke Eigenbau :: Privacynerd&#39;s blog</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Ist man eine gewisse Zeit lang in der (Elektronik-)DIY-Szene unterwegs, kommt man irgendwann auch um Platinen (gedruckte Leiterplatten/PCBs) nicht herum. Vorteile gegenüber dem manuellen Löten von Schaltungen auf Loch- bzw. Streifenrasterplatinen sind vor allem die einfachere Replizierbarkeit (einmal designed kann man eine Schaltung theoretisch beliebig oft herstellen) und die Möglichkeit, Platz effizienter zu nutzen (eine Platine ist fast immer kleiner als eine gelötete Lochrasterplatine mit der selben Schaltung). Letzendlich wirken Geräte mit Platinen aber auch schlicht professioneller. Sicherlich gibt es noch mehr Vorteile (und natürlich auch Nachteile!), auf deren Auflistung ich hier allerdings aus Gründen der Einfachheit verzichte.
" />
<meta name="keywords" content="" />
<meta name="robots" content="noodp" />
<link rel="canonical" href="https://blog.privacynerd.de/de/posts/diy-uv-pcb-exposure-unit/" />
<link rel="stylesheet" href="https://blog.privacynerd.de/css/buttons.min.86f6b4c106b6c6eb690ae5203d36b442c1f66f718ff4e8164fa86cf6c61ad641.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/code.min.4f0ccc8439f99bf7f7970298556b94011aabc1fcae743b6842fc3361a2da9ea3.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/fonts.min.5bb7ed13e1d00d8ff39ea84af26737007eb5051b157b86fc24487c94f3dc8bbe.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/footer.min.eb8dfc2c6a7eafa36cd3ba92d63e69e849e2200e0002a228d137f236b09ecd75.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/gist.min.a751e8b0abe1ba8bc53ced52a38b19d8950fe78ca29454ea8c2595cf26aad5c0.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/header.min.75c7eb0e2872d95ff48109c6647d0223a38db52e2561dd87966eb5fc7c6bdac6.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/main.min.15870410d15d02abd22fb5ef00996f65a00d04b3a7435e9f83831c7c2298de88.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/menu.min.3c17467ebeb3d38663dce68f71f519901124fa5cbb4519b2fb0667a21e9aca39.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/pagination.min.bbb986dbce00a5ce5aca0504b7925fc1c581992a4bf57f163e5d69cc1db7d836.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/post.min.e6dddd258e64c83e05cec0cd49c05216742d42fc8ecbfbe6b67083412b609bd3.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/syntax.min.a0773cce9310cb6d8ed23e50f005448facf29a53001b57e038828daa466b25c0.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/terminal.min.e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/terms.min.b81791663c3790e738e571cdbf802312390d30e4b1d8dc9d814a5b5454d0ac11.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/terminal.css">
<link rel="shortcut icon" href="https://blog.privacynerd.de/favicon.png">
<link rel="apple-touch-icon" href="https://blog.privacynerd.de/apple-touch-icon.png">
<meta name="twitter:card" content="summary" />
<meta name="twitter:site" content="" />
<meta name="twitter:creator" content="" />
<meta property="og:locale" content="de" />
<meta property="og:type" content="article" />
<meta property="og:title" content="UV-Belichter (LED) aus Marke Eigenbau">
<meta property="og:description" content="Ist man eine gewisse Zeit lang in der (Elektronik-)DIY-Szene unterwegs, kommt man irgendwann auch um Platinen (gedruckte Leiterplatten/PCBs) nicht herum. Vorteile gegenüber dem manuellen Löten von Schaltungen auf Loch- bzw. Streifenrasterplatinen sind vor allem die einfachere Replizierbarkeit (einmal designed kann man eine Schaltung theoretisch beliebig oft herstellen) und die Möglichkeit, Platz effizienter zu nutzen (eine Platine ist fast immer kleiner als eine gelötete Lochrasterplatine mit der selben Schaltung). Letzendlich wirken Geräte mit Platinen aber auch schlicht professioneller. Sicherlich gibt es noch mehr Vorteile (und natürlich auch Nachteile!), auf deren Auflistung ich hier allerdings aus Gründen der Einfachheit verzichte.
" />
<meta property="og:url" content="https://blog.privacynerd.de/de/posts/diy-uv-pcb-exposure-unit/" />
<meta property="og:site_name" content="Privacynerd&#39;s blog" />
<meta property="og:image" content="https://blog.privacynerd.de/en/posts/diy-uv-pcb-exposure-unit/cover.jpg">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="627">
<meta property="article:published_time" content="2025-04-14 08:11:20 &#43;0200 CEST" />
<style>
#banner {
width: 100%;
height: 2rem;
display: grid;
grid-template-columns: 1fr auto;
background: var(--accent);
}
#banner span {
display: flex;
align-items: center;
justify-content: center;
}
#banner a {
color: var(--background);
display: inline;
}
#banner > button {
padding: 0 5px 0 0;
margin: 0;
}
</style>
<div id="banner"><span><a href="https://git.privacynerd.de/git.privacynerd.de/blog.privacynerd.de">Baustelle 🚧 | laufende Arbeiten</a></span></div>
</head>
<body>
<div class="container center">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="/de">
<div class="logo">
Privacynerd&#39;s blog
</div>
</a>
</div>
<ul class="menu menu--mobile">
<li class="menu__trigger">Menü&nbsp;</li>
<li>
<ul class="menu__dropdown">
<li><a href="/de/about">Über</a></li>
<li><a href="/de/tags">Tags</a></li>
<hr />
<li>
<a href="/en/posts/diy-uv-pcb-exposure-unit/">English</a>
</li>
<li>
<b>
<a href="/de/posts/diy-uv-pcb-exposure-unit/">Deutsch</a>
</b>
</li>
</ul>
</li>
</ul>
<ul class="menu menu--desktop menu--language-selector">
<li class="menu__trigger">de&nbsp;</li>
<li>
<ul class="menu__dropdown">
<li>
<a href="/en/posts/diy-uv-pcb-exposure-unit/">English</a>
</li>
<li>
<b>
<a href="/de/posts/diy-uv-pcb-exposure-unit/">Deutsch</a>
</b>
</li>
</ul>
</li>
</ul>
</div>
<nav class="navigation-menu">
<ul class="navigation-menu__inner menu--desktop">
<li><a href="/de/about" >Über</a></li>
<li><a href="/de/tags" >Tags</a></li>
</ul>
</nav>
</header>
<div class="content">
<article class="post">
<h1 class="post-title">
<a href="https://blog.privacynerd.de/de/posts/diy-uv-pcb-exposure-unit/">UV-Belichter (LED) aus Marke Eigenbau</a>
</h1>
<div class="post-meta"><time class="post-date">2025-04-14</time><span class="post-reading-time">10 Minuten Lesezeit (1009 Wörter)</span></div>
<img src="/en/posts/diy-uv-pcb-exposure-unit/cover.jpg"
class="post-cover"
alt="UV-Belichter (LED) aus Marke Eigenbau"
title="Cover Image" />
<div class="table-of-contents">
<h2>
Inhaltsverzeichnis
</h2>
<nav id="TableOfContents">
<ul>
<li><a href="#the-housing">Das Gehäuse</a></li>
<li><a href="#the-leds">Die LEDs</a></li>
<li><a href="#the-lacquering">Die Lackierung</a></li>
<li><a href="#the-control-unit">Die Steuerelektronik</a></li>
<li><a href="#exposure-time">Die Praxis - Belichtungszeit</a></li>
</ul>
</nav>
</div>
<div class="post-content"><div>
<p>Ist man eine gewisse Zeit lang in der (Elektronik-)DIY-Szene unterwegs, kommt man irgendwann auch um Platinen (gedruckte Leiterplatten/PCBs) nicht herum. Vorteile gegenüber dem manuellen Löten von Schaltungen auf Loch- bzw. Streifenrasterplatinen sind vor allem die einfachere Replizierbarkeit (einmal designed kann man eine Schaltung theoretisch beliebig oft herstellen) und die Möglichkeit, Platz effizienter zu nutzen (eine Platine ist fast immer kleiner als eine gelötete Lochrasterplatine mit der selben Schaltung). Letzendlich wirken Geräte mit Platinen aber auch schlicht professioneller. Sicherlich gibt es noch mehr Vorteile (und natürlich auch Nachteile!), auf deren Auflistung ich hier allerdings aus Gründen der Einfachheit verzichte.</p>
<p>Heutzutage kann man (selbst) kreierte Leiterplattendesigns sehr leicht herstellen lassen, bei einschlägigen Angeboten aus China zahlt man für eine einfache Platine mit 2 Seiten nicht mehr als 5€. Im Preis allerdings nicht mit inbegriffen sind die Versandkosten und die Wartezeit, in der man auf seine Platinen warten muss. Wenn man nicht vorhat, mehrere verschiedene Designs im Jahr anzufertigen, oder nur einmalig eine spezielle Platine braucht, ist mit solchen Angeboten gut bedient. Braucht man allerdings des öfteren Spezialanfertigungen, kann es (auch bei den chinesischen Angeboten) schnell lukrativ erscheinen, sich die Fertigung ins Haus zu holen. Letztlich macht es auch einfach Spaß und gibt einem zumindest das Gefühl von ein wenig Unabhängigkeit, seine Platinen selbst herzustellen!</p>
<p>Nachdem ich also schon länger von eigens hergestellten Platinen träumte, bin ich nun einen Schritt weiter in die Umsetzung gegangen. Es gibt verschiedene Möglichkeiten, Leiterplatten selbst herzustellen. Die günstigste Methode ist hierbei vermutlich das Belichten eines Platinenrohlings mit photopositiver Beschichtung, und das anschließende Entwickeln und schließlich Ätzen der belichteten Stellen. Das Gerät zum Ätzen selbst zu bauen erschien mir zu heikel, hier entschied ich mich vorerst für ein gebrauchtes <a href="https://gie-tec.de/produkt/aetzgeraete-fuer-platinen/">Ätzgerät 1 von pro-ma</a>, was mit 50€ sehr günstig war. Was man aber sicher selbst bauen kann, ist der <strong>UV-Belichter</strong>. Hier gibt es verschiedene Ansätze, ich möchte hier einfach meinen teilen (siehe z.B. <a href="https://www.all4hardware4u.de/platinenherstellung/belichtung/belichtungsgeraet-mit-uv-leds/">hier</a> oder auch <a href="http://www.fdm-ware.de/UV-Led/">hier</a> für die Modelle, bei denen ich Inspiration gefunden habe)!</p>
<p>Jetzt also genug der Vorrede, es folgt das wirklich Wichtige!</p>
<h2 id="the-housing">Das Gehäuse<a href="#the-housing" class="hanchor" ariaLabel="Anchor">#</a> </h2>
<p>Als Gehäuse habe ich einen einfachen Quader aus MDF-Platten mit einem zusätzlichen kleinen Abschnitt vorne gebaut, in dem die
Steuerelektronik ihren Platz später finden soll.</p>
<figure><img src="/en/posts/diy-uv-pcb-exposure-unit/housing-raw-finished.jpg"
alt="Dieses Bild würde das fertige Gehäuse mit Acrylglasscheibe und einigen losen Bauteilen zeigen."><figcaption>
<p>Das fertige Gehäuse mit Acrlyglas-Scheibe</p>
</figcaption>
</figure>
<p>Damit das UV-Licht an die beschichtete Platine kommen kann, muss die Halterung Transparent sein. Hier tut eine Acrylglas-Scheibe ihre Dienste. Wichtig hierbei: diese <strong>muss</strong> UV-durchlässig ist, was besonders bei Scheiben für den Gartenbereich nicht unbedingt gegeben ist! Baumarkt-Mitarbeiter konnten da in meinem Fall nicht helfen (ist ja auch eine sehr spezielle Anforderung ;), aber dank Internet kann man hier schon mehr ausfindig machen. Manchmal hilft es schon, auf der Webseite des Baumarktes der Wahl nach UV-durchlässigen Acrylglasscheiben nachzusehen.</p>
<p>Diese Scheibe muss zu den LEDs einen gewissen Abstand haben, damit sich das Licht der LEDs gleichmäßig verteilen kann. Hier kann man natürlich einen perfekten Abstand ausrechnen - über den Abstrahlwinkel der und den Abstand zwischen den einzelnen LEDs. Ich habe mich hier allerdings für die einfachere (und manchmal sehr ungenaue) Pi-mal-Daumen-Methode entschieden - die aber funktioniert hat.</p>
<figure><img src="/en/posts/diy-uv-pcb-exposure-unit/collage-plans.png"
alt="Dieses Bild zeigt Skizzen für die einzelnen Seiten des Holzkastens"><figcaption>
<p>Pläne des Kastens</p>
</figcaption>
</figure>
<h2 id="the-leds">Die LEDs<a href="#the-leds" class="hanchor" ariaLabel="Anchor">#</a> </h2>
<p>UV-LEDs bekommt man recht einfach im Elektronik-Versand, ich entschied mich für diesen Eigenbau vorerst für 48 LEDs in 6 Reihen mit je 8 LEDs auf zwei 160x100mm-Lochrasterplatinen (ja, Streifenraster geht auch und wäre einfacher gewesen :). Da UV-LEDs eine Betriebsspannung von etwa 3,0 bis 3,3V haben und ich ein 12V-Netzteil nutzen wollte, braucht man für jede LED einen Widerstand von 470 Ohm, an dem bei 20mA etwa 9V abfallen (für die Berechnung von LED-Vorwiderständen gibt es etliche gute Tutorials im Internet!)</p>
<p>Was die Belichtungszeit betrifft, steht weiter unten im Abschnitt <a href="/de/posts/diy-uv-pcb-exposure-unit/#exposure-time">„Die Praxis - Belichtungszeit“</a>.</p>
<figure><img src="/en/posts/diy-uv-pcb-exposure-unit/led-distribution.png"
alt="Links: Skizze über die Verteilung der LEDs, Rechts: Blick von oben auf die LEDs"><figcaption>
<p>li.: Skizze über die Verteilung der LEDs; re.: Blick von oben auf die LEDs</p>
</figcaption>
</figure>
<h2 id="the-lacquering">Die Lackierung<a href="#the-lacquering" class="hanchor" ariaLabel="Anchor">#</a> </h2>
<p>Als Lackierung für den Belichterraum bot sich Chrom-Effekt-Lack an. Also, alles bis auf den Belichtungsraum abgeklebt (und naürlich auch die LEDs!) und mehrmals, den Angaben auf der Sprühdose entsprechend, lackiert, und über Nacht trocknen lassen.</p>
<figure><img src="/en/posts/diy-uv-pcb-exposure-unit/masked_for_painting.jpg"
alt="Bild des zur Lackierung abgeklebten Kastens"><figcaption>
<p>Kasten ist abgeklebt, gleich wird lackiert!</p>
</figcaption>
</figure>
<figure><img src="/en/posts/diy-uv-pcb-exposure-unit/painted_inside.jpg"
alt="Bild des innen fertig lackierten Kastens"><figcaption>
<p>Es glänzt!</p>
</figcaption>
</figure>
<h2 id="the-control-unit">Die Steuerelektronik<a href="#the-control-unit" class="hanchor" ariaLabel="Anchor">#</a> </h2>
<p>Hier stand ich vor der Wahl: einen einfachen Schalter verbauen, oder eine komplexere Logik mit Timerfunktion? Die Idee des eingebauten Timers wirkte anziehend - endlich mal wieder was Hardwarenahes programmieren. Also: eine Lochrasterplatine (vielleicht die letzte jemals?!) mit Raspberry Pi Pico, Relais, Anschluss für ein LCD-Display und einige Steuerelemente bestückt, mit meinen schon vorhandenen Libraries ein kleines Interface programmiert und fertig war die Elektronik! Um in das Gehäuse eingebaut zu werden, brauchte es noch eine Blende. Alles hierzu findet sich im dazugehörigen <a href="https://git.privacynerd.de/BlueFox/uv-belichter-software">Git-Repository</a>!</p>
<figure><img src="/en/posts/diy-uv-pcb-exposure-unit/controller-on-dividing-wall.jpg"
alt="Bild der Steuerplatine"><figcaption>
<p>Die Steuerplatine</p>
</figcaption>
</figure>
<figure><img src="/en/posts/diy-uv-pcb-exposure-unit/front-panel.jpg"
alt="Bild der Blende mit LCD-Displays und Steuerelementen im Betrieb"><figcaption>
<p>Blende mit LCD-Displays und Steuerelementen im Betrieb</p>
</figcaption>
</figure>
<h2 id="exposure-time">Die Praxis - Belichtungszeit<a href="#exposure-time" class="hanchor" ariaLabel="Anchor">#</a> </h2>
<p>Wie schaut&rsquo;s nun also in der Praxis aus - die entscheidende Frage zum Schluss. Ich möchte dazu sagen, dass es sich hier um meine ersten Erfahrungen mit der manuellen Platinenherstellung handelt. Ich verwendete eine einfache Blinkschaltung (die auch mein erstes vollständig selbst erstelltes Leiterplattendesign war) für die Tests.</p>
<figure><img src="/en/posts/diy-uv-pcb-exposure-unit/blinky-test-pcb.png"
alt="Seite-zu-Seite-Ansicht des gedruckten Schaltkreises und der Ansicht am Computer mit allen Layern"><figcaption>
<p>Das Testobjekt&hellip;</p>
</figcaption>
</figure>
<p>Also, meine ersten Erfahrungen mit dem selbstgebautem Belichter waren gemischt. Der erste Versuch mit 3 Minuten Belichtungszeit ging etwas schief. Konkret sah man auch nach 10-20 Minuten im Entwickler auf Raumtemperatur keine Konturen, und auch nach 20-30 Minuten Ätzen passierte nichts. Der zweite Versuch war schon vielversprechender, nach 30 min belichten sah man nach ca. 15 min entwickeln erste Konturen, die dann beim Ätzen auch tatsächlich verschwanden. Nach einigen weiteren Versuchen kam ich schließlich auf die Idee, statt mit einer bedruckten Folie, mit zwei übereinander gelegten zu arbeiten, wodurch viel weniger Licht durch die bedruckten Flächen kommt. Die Ergebnisse wurden schlagartig besser, und nach kurzer Zeit hatte die Leiterplatte zur Funktion des Schaltkreises ausreichende Qualität!</p>
<figure><img src="/en/posts/diy-uv-pcb-exposure-unit/first-diy-pcbs.jpg"
alt="Collage der ersten Herstellungsversuche bis zum ersten funktionstüchtigen Exemplar"><figcaption>
<p>&hellip;und die Ergebnisse</p>
</figcaption>
</figure>
<p>Also: Die Belichtungszeit, bei der sich erfolgreiche Ausführungen ergeben, liegt zwischen 40 und 45 Minuten. Das ist zugegebenermaßen eine recht lange Zeit, für meine ersten Versuche allerdings ausreichend und wenn man den Preis fertiger Belichter bedenkt (der gut mal in die Hunderte gehen kann) mehr als akzeptabel (zusammengerechnet hat der Belichter ca. 30-50€ Materialwert - und der Bau hat viel Spaß gemacht!). Für kürzere Belichtungszeiten überlege ich, nachträglich die LED-Anzahl zu erhöhen. Aber das ist eine Geschichte für ein andermal.</p>
</div></div>
<div class="pagination">
<div class="pagination__title">
<span class="pagination__title-h">Andere Posts lesen</span>
<hr />
</div>
<div class="pagination__buttons">
<a href="https://blog.privacynerd.de/de/posts/how-it-all-began/" class="button inline next">
[<span class="button__text">Wie es alles anfing - oder: der erste Post!</span>] &gt;
</a>
</div>
</div>
</article>
</div>
<footer class="footer">
<style>
.antidiscovery i { display: none; }
</style>
<div class="footer__inner">
<div class="copyright copyright--user">
<span class="antidiscovery">© 2025 <i>L</i>B<i>P</i>e<i>o</i>n<i>i</i>j<i>n</i>a<i>c</i>m<i>G</i>i<i>N</i>n<i>U</i> <i>S</i>B<i>k</i>u<i>o</i>r<i>K</i>k<i>y</i>h<i>f</i>a<i>H</i>r<i>r</i>d<i>y</i>t</span>
<span style="margin-right: 10px">:: <a href="https://privacynerd.de/impressum?referrer=https%3a%2f%2fblog.privacynerd.de%2fde%2fposts%2fdiy-uv-pcb-exposure-unit%2f">Impressum</a></span>
<span>:: <a href="https://github.com/panr/hugo-theme-terminal" target="_blank">Theme</a> erstellt von <a href="https://github.com/panr" target="_blank">panr</a> (angepasst)</span>
</div>
</div>
</footer>
<script type="text/javascript" src="/bundle.min.js"></script>
<script src="https://swetrix.privacynerd.de/script.js" defer=""></script>
<script>
document.addEventListener('DOMContentLoaded', function() {
swetrix.init('GyBjobBbBEEC', {apiURL: 'https://swetrix.privacynerd.de/api/log',})
swetrix.trackViews()
swetrix.trackErrors({
sampleRate: 1,
callback: undefined,
})
})
</script>
<noscript>
<img
src="https://swetrix.privacynerd.de/api/log/noscript?pid=GyBjobBbBEEC"
alt=""
referrerpolicy="no-referrer-when-downgrade"
/>
</noscript>
</div>
</body>
</html>

View File

@@ -0,0 +1,469 @@
<!DOCTYPE html>
<html lang="de">
<head>
<title>Wie es alles anfing - oder: der erste Post! :: Privacynerd&#39;s blog</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Vorüberlegungen Ich habe lange überlegt, wie ich diesen Post schreibe. Was muss erzählt werden, was ist unwichtig? Vieles muss wegen der Übersichtlichkeit weggelassen werden, und an so manches erinnere ich mich vielleicht schon gar nicht mehr. Jedenfalls möchte ich mit diesem Artikel meine Intention erklären, wie ich dazu kam, diesen Blog zu starten. Doch um das zu erklären, muss man die Ursprünge verstehen.
Wie alles anfing Alles begann damit, dass ich als Schüler der 5. oder 6. Klasse (ich weiß es nicht mehr so genau!) anfing, auf einem Laptop für die Schule ein Batch-Skript zu schreiben. Ja, so war es, ich gebe es zu - auch wenn ich nicht weiß, wer oder was mich dazu trieb. Eine grobe Vorstellung habe ich aber: Ich glaube, es war so eine intrinsische Motivation eines Kindes, herauszufinden, wie dieser Computer da vor ihm funktioniert, die mich dazu trieb.
" />
<meta name="keywords" content="" />
<meta name="robots" content="noodp" />
<link rel="canonical" href="https://blog.privacynerd.de/de/posts/how-it-all-began/" />
<link rel="stylesheet" href="https://blog.privacynerd.de/css/buttons.min.86f6b4c106b6c6eb690ae5203d36b442c1f66f718ff4e8164fa86cf6c61ad641.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/code.min.4f0ccc8439f99bf7f7970298556b94011aabc1fcae743b6842fc3361a2da9ea3.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/fonts.min.5bb7ed13e1d00d8ff39ea84af26737007eb5051b157b86fc24487c94f3dc8bbe.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/footer.min.eb8dfc2c6a7eafa36cd3ba92d63e69e849e2200e0002a228d137f236b09ecd75.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/gist.min.a751e8b0abe1ba8bc53ced52a38b19d8950fe78ca29454ea8c2595cf26aad5c0.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/header.min.75c7eb0e2872d95ff48109c6647d0223a38db52e2561dd87966eb5fc7c6bdac6.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/main.min.15870410d15d02abd22fb5ef00996f65a00d04b3a7435e9f83831c7c2298de88.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/menu.min.3c17467ebeb3d38663dce68f71f519901124fa5cbb4519b2fb0667a21e9aca39.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/pagination.min.bbb986dbce00a5ce5aca0504b7925fc1c581992a4bf57f163e5d69cc1db7d836.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/post.min.e6dddd258e64c83e05cec0cd49c05216742d42fc8ecbfbe6b67083412b609bd3.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/syntax.min.a0773cce9310cb6d8ed23e50f005448facf29a53001b57e038828daa466b25c0.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/terminal.min.e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/terms.min.b81791663c3790e738e571cdbf802312390d30e4b1d8dc9d814a5b5454d0ac11.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/terminal.css">
<link rel="shortcut icon" href="https://blog.privacynerd.de/favicon.png">
<link rel="apple-touch-icon" href="https://blog.privacynerd.de/apple-touch-icon.png">
<meta name="twitter:card" content="summary" />
<meta name="twitter:site" content="" />
<meta name="twitter:creator" content="" />
<meta property="og:locale" content="de" />
<meta property="og:type" content="article" />
<meta property="og:title" content="Wie es alles anfing - oder: der erste Post!">
<meta property="og:description" content="Vorüberlegungen Ich habe lange überlegt, wie ich diesen Post schreibe. Was muss erzählt werden, was ist unwichtig? Vieles muss wegen der Übersichtlichkeit weggelassen werden, und an so manches erinnere ich mich vielleicht schon gar nicht mehr. Jedenfalls möchte ich mit diesem Artikel meine Intention erklären, wie ich dazu kam, diesen Blog zu starten. Doch um das zu erklären, muss man die Ursprünge verstehen.
Wie alles anfing Alles begann damit, dass ich als Schüler der 5. oder 6. Klasse (ich weiß es nicht mehr so genau!) anfing, auf einem Laptop für die Schule ein Batch-Skript zu schreiben. Ja, so war es, ich gebe es zu - auch wenn ich nicht weiß, wer oder was mich dazu trieb. Eine grobe Vorstellung habe ich aber: Ich glaube, es war so eine intrinsische Motivation eines Kindes, herauszufinden, wie dieser Computer da vor ihm funktioniert, die mich dazu trieb.
" />
<meta property="og:url" content="https://blog.privacynerd.de/de/posts/how-it-all-began/" />
<meta property="og:site_name" content="Privacynerd&#39;s blog" />
<meta property="og:image" content="https://blog.privacynerd.de/en/posts/how-it-all-began/cover.png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="627">
<meta property="article:published_time" content="2025-04-13 15:10:20 &#43;0200 CEST" />
<style>
#banner {
width: 100%;
height: 2rem;
display: grid;
grid-template-columns: 1fr auto;
background: var(--accent);
}
#banner span {
display: flex;
align-items: center;
justify-content: center;
}
#banner a {
color: var(--background);
display: inline;
}
#banner > button {
padding: 0 5px 0 0;
margin: 0;
}
</style>
<div id="banner"><span><a href="https://git.privacynerd.de/git.privacynerd.de/blog.privacynerd.de">Baustelle 🚧 | laufende Arbeiten</a></span></div>
</head>
<body>
<div class="container center">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="/de">
<div class="logo">
Privacynerd&#39;s blog
</div>
</a>
</div>
<ul class="menu menu--mobile">
<li class="menu__trigger">Menü&nbsp;</li>
<li>
<ul class="menu__dropdown">
<li><a href="/de/about">Über</a></li>
<li><a href="/de/tags">Tags</a></li>
<hr />
<li>
<a href="/en/posts/how-it-all-began/">English</a>
</li>
<li>
<b>
<a href="/de/posts/how-it-all-began/">Deutsch</a>
</b>
</li>
</ul>
</li>
</ul>
<ul class="menu menu--desktop menu--language-selector">
<li class="menu__trigger">de&nbsp;</li>
<li>
<ul class="menu__dropdown">
<li>
<a href="/en/posts/how-it-all-began/">English</a>
</li>
<li>
<b>
<a href="/de/posts/how-it-all-began/">Deutsch</a>
</b>
</li>
</ul>
</li>
</ul>
</div>
<nav class="navigation-menu">
<ul class="navigation-menu__inner menu--desktop">
<li><a href="/de/about" >Über</a></li>
<li><a href="/de/tags" >Tags</a></li>
</ul>
</nav>
</header>
<div class="content">
<article class="post">
<h1 class="post-title">
<a href="https://blog.privacynerd.de/de/posts/how-it-all-began/">Wie es alles anfing - oder: der erste Post!</a>
</h1>
<div class="post-meta"><time class="post-date">2025-04-13</time><span class="post-reading-time">9 Minuten Lesezeit (994 Wörter)</span></div>
<img src="/en/posts/how-it-all-began/cover.png"
class="post-cover"
alt="Wie es alles anfing - oder: der erste Post!"
title="Cover Image" />
<div class="table-of-contents">
<h2>
Inhaltsverzeichnis
</h2>
<nav id="TableOfContents">
<ul>
<li><a href="#thinking">Vorüberlegungen</a></li>
<li><a href="#beginnings">Wie alles anfing</a></li>
<li><a href="#covid-19">Corona</a></li>
<li><a href="#until-now">Bis jetzt&hellip;</a></li>
<li><a href="#planned-content">Geplante Inhalte</a></li>
</ul>
</nav>
</div>
<div class="post-content"><div>
<h2 id="thinking">Vorüberlegungen<a href="#thinking" class="hanchor" ariaLabel="Anchor">#</a> </h2>
<p>Ich habe lange überlegt, wie ich diesen Post schreibe. Was muss erzählt werden, was ist unwichtig? Vieles muss wegen der Übersichtlichkeit weggelassen werden, und an so manches erinnere ich mich vielleicht schon gar nicht mehr. Jedenfalls möchte ich mit diesem Artikel meine Intention erklären, wie ich dazu kam, diesen Blog zu starten. Doch um das zu erklären, muss man die Ursprünge verstehen.</p>
<h2 id="beginnings">Wie alles anfing<a href="#beginnings" class="hanchor" ariaLabel="Anchor">#</a> </h2>
<p>Alles begann damit, dass ich als Schüler der 5. oder 6. Klasse (ich weiß es nicht mehr so genau!) anfing, auf einem Laptop für die Schule ein Batch-Skript zu schreiben. Ja, so war es, ich gebe es zu - auch wenn ich nicht weiß, wer oder was mich dazu trieb. Eine grobe Vorstellung habe ich aber: Ich glaube, es war so eine intrinsische Motivation eines Kindes, herauszufinden, wie dieser Computer da vor ihm funktioniert, die mich dazu trieb.</p>
<p>Wie dem auch sei, eines meiner „Programme“ sah in etwa so aus:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-batch" data-lang="batch"><span class="line"><span class="cl"><span class="p">@</span><span class="k">echo</span> off
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">echo</span> Herzlich Wilkommen , bitte Passwort eingeben
</span></span><span class="line"><span class="cl"><span class="k">color</span> 7b
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="p">:</span><span class="nl">PSWD</span>
</span></span><span class="line"><span class="cl"><span class="k">set/p</span> <span class="nv">x</span><span class="p">=</span>
</span></span><span class="line"><span class="cl"><span class="k">if</span> &#39;&#39;<span class="nv">%x%</span>&#39;&#39;<span class="o">==</span>&#39;&#39;sehrsicher&#39;&#39; <span class="k">goto</span> <span class="nl">openfile</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">pause</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="p">:</span><span class="nl">false</span><span class="c1"> </span>
</span></span><span class="line"><span class="cl"><span class="k">echo</span> Falsches Passwort , bitte erneut versuchen.
</span></span><span class="line"><span class="cl"><span class="k">color</span> 7c
</span></span><span class="line"><span class="cl"><span class="k">goto</span> <span class="nl">PWSD</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="p">:</span><span class="nl">openfile</span>
</span></span><span class="line"><span class="cl"><span class="k">echo</span> Passwort richtig , bitte &#39;Enter&#39; druecken!
</span></span><span class="line"><span class="cl"><span class="k">goto</span> <span class="nl">Video</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">pause</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="p">:</span><span class="nl">Video</span>
</span></span><span class="line"><span class="cl"><span class="k">echo</span> Wenn sie sich ein Video anschauen moechten , dann geben sie jetzt ,,Ja`` ein , wenn nicht dann einfach ,,Nein&#39;&#39;!
</span></span><span class="line"><span class="cl"><span class="k">color</span> 7b
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="p">:</span><span class="nl">PSWD</span>
</span></span><span class="line"><span class="cl"><span class="k">set/p</span> <span class="nv">x</span><span class="p">=</span>
</span></span><span class="line"><span class="cl"><span class="k">if</span> &#39;&#39;<span class="nv">%x%</span>&#39;&#39;<span class="o">==</span>&#39;&#39;Ja&#39;&#39; <span class="k">goto</span> <span class="nl">OpenVideo</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="p">:</span><span class="nl">false</span>
</span></span><span class="line"><span class="cl"><span class="k">goto</span> <span class="nl">exit</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="p">:</span><span class="nl">OpenVideo</span><span class="c1"> </span>
</span></span><span class="line"><span class="cl"><span class="k">start</span> C:\Users\<span class="p">&lt;</span>ZENSIERT<span class="p">&gt;</span>\<span class="p">&lt;</span>JA WIRKLICH<span class="p">&gt;</span>\
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="p">:</span><span class="nl">exit</span>
</span></span><span class="line"><span class="cl"><span class="k">exit</span>
</span></span></code></pre></div><p>Nun ja, daraufhin schenkte mir mein Vater das Buch ein Lehrbuch zu Python3<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>, und es gab kein Zurück mehr. Ich glaube, ich habe mit meinen 11 oder 12 Jahren das gesamte Lehrbuch durchgelesen. Jedenfalls stieg ich irgendwann auf Linux um (anfangs <a href="https://linuxmint.com/">Linux Mint</a>) - dann kam Corona<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup>.</p>
<h2 id="covid-19">Corona<a href="#covid-19" class="hanchor" ariaLabel="Anchor">#</a> </h2>
<p>Für Schüler bedeutete Corona und das damit einhergehende Homeschooling und die Isolation vor allem eins: viel Zeit. Man nutzte sie unterschiedlich. Ich eben dafür, meinem neuen Hobby intensiv nachzugehen. In dieser Zeit lernte ich neue Programmiersprachen wie Java (z.T. für Minecraft-Plugins, <a href="https://git.privacynerd.de/BlueFox/MC-Plugins">hier</a> sind einige zu finden), brachte mir sogar etwas C und Assembler bei.</p>
<p>In dieser Zeit bekam ich meinen ersten Raspberry Pi geschenkt - mit weitreichenden Folgen. Denn es führte dazu, dass ich mich mehr und mehr der Hardwareseite zuwandte. Hatte ich zuvor Webapps mit Datenbank in <a href="https://www.djangoproject.com/">Django</a> bzw. <a href="https://flask.palletsprojects.com/en/stable/">Flask</a> und Python geschrieben, programmierte ich jetzt einfache Blinkschaltungen, dann irgendwann Skripte, die Sensordaten auslesen und auf einem kleinen OLED-Display (0.96&quot;) anzeigen oder die Lampen in meinem Zimmer auf Knopfdruck an- und ausschalteten (weil ein Lichtschalter ja nicht genug ist!). Ich entdeckte in dieser Zeit auch einen 3D-Drucker für mich, der bei uns seit längerer Zeit fast unbenutzt herumstand.</p>
<figure><img src="/en/posts/how-it-all-began/esafep.jpg"
alt="Bild des ESafeP - ein „Tresor“ aus Holz mit eigener Software"><figcaption>
<p>Der „ESafeP“ - sehr stabil!</p>
</figcaption>
</figure>
<p>Noch hardwarenäher wurde es dann mit meinem ersten ESP32 - neue Ideen entstanden und damit neue Projekte. Ein selbstgebauter Tresor (supersicher aus Holz!) mit eigener <a href="https://git.privacynerd.de/BlueFox/ESafeP">Software</a> gehörten ebenso dazu wie ein eigener <a href="https://git.privacynerd.de/NetSpeaker/NetSpeaker">MP3-(und vieles mehr)-Player</a>. Immer wieder kam dabei eben auch der 3D-Drucker zur Anwendung, wie es im DIY-Raum eben so üblich ist - zum Beispiel für das Gehäuse zu meinem batteriebetriebenen <a href="https://git.privacynerd.de/BlueFox/losungepaper">Losungs-ePaper</a>.</p>
<figure><img src="/en/posts/how-it-all-began/netspeaker.jpg"
alt="Bild eines fertigen, selbstgebauten NetSpeakers in Gehäuse - unter anderem ein MP3-Player."><figcaption>
<p>Ein NetSpeaker</p>
</figcaption>
</figure>
<figure><img src="/en/posts/how-it-all-began/losung-epaper.jpg"
alt="Bild des fertigen ePapers, welches die aktuelle Tageslosung anzeigt"><figcaption>
<p>Das Losungs-ePaper</p>
</figcaption>
</figure>
<p>Alles in allem hatte die Corona-Pandemie dadurch zumindest für mich vorher ungeahnte neue Räume eröffnet und eben auch ihre positiven Seiten: In dieser Zeit entwickelte sich mein Interesse am 3D-Druck, was auch in diesem Blog thematisiert werden könnte.</p>
<h2 id="until-now">Bis jetzt&hellip;<a href="#until-now" class="hanchor" ariaLabel="Anchor">#</a> </h2>
<p>Nun, sehr viel hat sich seither nicht mehr geändert. Irgendwann kam dann noch das Self-Hosting dazu, und ich lernte auch Holz als spannendes Werksmaterial kennen (wie etwas weiter oben schon angerissen). Es ist so spannend zu sehen, was man alles selber hosten kann: seinen eigenen Datei-Synchronisationsservice, sein <a href="https://git.privacynerd.de/">eigenes Github</a>, Medienserver, und so weiter. Anfangs lief alles auf dem besagten Raspberry Pi. Später musste jedoch auch Zugang von außerhalb des Heimnetzes her, und seither laufen viele Dienste auf einem angemieteten Server.</p>
<figure><img src="/en/posts/how-it-all-began/gitea-a-self-hosted-github.png"
alt="Screenshot meiner selbstgehosteten Gitea-Instanz"><figcaption>
<p>Ein „selbst gehostetes Github“</p>
</figcaption>
</figure>
<p>Vor nicht allzu langer Zeit kam mir dann eine Idee. Ich war dabei, selbst Platinen ätzen zu lernen, und die Informationen hierzu bezog ich vor allem in Blogs anderer „Maker”. Warum also nicht darüber, was du machst, schreiben? Zum einen könnte es ja tatsächlich sein, dass sich ein Suchender auf den Blog verirrt, zum anderen ist es aber auch einfach eine sinnvolle Dokumentationsweise, und vielleicht sogar etwas Gutes für spätere Bewerbungen.</p>
<figure><img src="/en/posts/how-it-all-began/etching-station.jpg"
alt="Bild eines Aufbaus, um Platinen manuell zu ätzen; im Bild: ein selbst gebauter UV-Belichter, ein Ätzgerät sowie ein Gefäß mit Natronlauge"><figcaption>
<p>Der Ätzaufbau</p>
</figcaption>
</figure>
<p>Also, hingesetzt und nach Möglichkeiten gesucht, einen Blog zu erstellen. Natürlich musste er selbst gehostet sein, und vielleicht sogar ein bisschen selbst gemacht. Das führte mich zu <a href="https://gohugo.io/">Hugo</a> (auch Jekyll war eine Überlegung), einem relativ simplen (und sehr schnellen) Static-Site-Generator, der aus Markdown (unter anderem) Websites generieren kann und somit eigentlich perfekt für einen Blog geeignet ist. Bei der Theme-Auswahl schwankte ich anfangs zwischen „selbst erstellen“ und „vorhandenes nutzen“. Aus Zeitmangel und Gründen der Einfachheit wurde es dann eben ein vorhandenes, genauer <a href="https://themes.gohugo.io/themes/hugo-theme-terminal/">Terminal</a>. An meine Bedürfnisse angepasst, war der Blog an sich schon recht schnell fertig<sup id="fnref:3"><a href="#fn:3" class="footnote-ref" role="doc-noteref">3</a></sup>. Jetzt wartet er nur noch darauf, mit Inhalt gefüllt zu werden.</p>
<h2 id="planned-content">Geplante Inhalte<a href="#planned-content" class="hanchor" ariaLabel="Anchor">#</a> </h2>
<p>Was man am Anfang plant, wird selten genau so umgesetzt - und so wird es vermutlich auch mit diesem Blog sein, und das ist gut so. Schließlich entwickelt sich alles weiter. Aber ich schreibe hier jetzt dennoch auf, was ich plane, in Zukunft auf diesem Blog zu schreiben - eine grobe Vorstellung habe ich nämlich doch.</p>
<ul>
<li>über meine DIY-Projekte,</li>
<li>über neue Erfahrungen, die ich beim Basteln sammle,</li>
<li>auch hier und da ein Update zu vorhandenen Projekten, Libraries von mir,</li>
<li>und vielleicht ja auch etwas ganz Neues!</li>
</ul>
<p>Zusammengefasst: alles, was ich DIY-mäßig tue, möchte ich hier (wenn Zeit und Lust da sind) teilen bzw. dokumentieren - in der Hoffnung, dass sich vielleicht wirklich mal jemand die genau selbe Frage stellt wie ich oder eine ähnliche Idee hat wie ich, und sich dann in diesen Blog verirrt.</p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p><a href="https://www.rheinwerk-verlag.de/python-3-das-umfassende-handbuch/">Python3 - das umfassende Handbuch von Johannes Ernesti und Peter Kaiser</a> (keine Werbung!)&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:2">
<p>So einfach war es dann auch wieder nicht, aber aus Gründen der Übersichtlichkeit habe ich hier eben vereinfacht.&#160;<a href="#fnref:2" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:3">
<p>&hellip;einige Nachmittage (und Abende bis Nächte) gingen aber doch dafür drauf (um ehrlich zu sein).&#160;<a href="#fnref:3" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
</div></div>
<div class="pagination">
<div class="pagination__title">
<span class="pagination__title-h">Andere Posts lesen</span>
<hr />
</div>
<div class="pagination__buttons">
<a href="https://blog.privacynerd.de/de/posts/diy-uv-pcb-exposure-unit/" class="button inline prev">
&lt; [<span class="button__text">UV-Belichter (LED) aus Marke Eigenbau</span>]
</a>
</div>
</div>
</article>
</div>
<footer class="footer">
<style>
.antidiscovery i { display: none; }
</style>
<div class="footer__inner">
<div class="copyright copyright--user">
<span class="antidiscovery">© 2025 <i>L</i>B<i>P</i>e<i>o</i>n<i>i</i>j<i>n</i>a<i>c</i>m<i>G</i>i<i>N</i>n<i>U</i> <i>S</i>B<i>k</i>u<i>o</i>r<i>K</i>k<i>y</i>h<i>f</i>a<i>H</i>r<i>r</i>d<i>y</i>t</span>
<span style="margin-right: 10px">:: <a href="https://privacynerd.de/impressum?referrer=https%3a%2f%2fblog.privacynerd.de%2fde%2fposts%2fhow-it-all-began%2f">Impressum</a></span>
<span>:: <a href="https://github.com/panr/hugo-theme-terminal" target="_blank">Theme</a> erstellt von <a href="https://github.com/panr" target="_blank">panr</a> (angepasst)</span>
</div>
</div>
</footer>
<script type="text/javascript" src="/bundle.min.js"></script>
<script src="https://swetrix.privacynerd.de/script.js" defer=""></script>
<script>
document.addEventListener('DOMContentLoaded', function() {
swetrix.init('GyBjobBbBEEC', {apiURL: 'https://swetrix.privacynerd.de/api/log',})
swetrix.trackViews()
swetrix.trackErrors({
sampleRate: 1,
callback: undefined,
})
})
</script>
<noscript>
<img
src="https://swetrix.privacynerd.de/api/log/noscript?pid=GyBjobBbBEEC"
alt=""
referrerpolicy="no-referrer-when-downgrade"
/>
</noscript>
</div>
</body>
</html>

View File

@@ -11,30 +11,59 @@
<meta name="robots" content="noodp" /> <meta name="robots" content="noodp" />
<link rel="canonical" href="/de/posts/" /> <link rel="canonical" href="https://blog.privacynerd.de/de/posts/" />
<link rel="stylesheet" href="https://blog.privacynerd.de/css/buttons.min.86f6b4c106b6c6eb690ae5203d36b442c1f66f718ff4e8164fa86cf6c61ad641.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/code.min.4f0ccc8439f99bf7f7970298556b94011aabc1fcae743b6842fc3361a2da9ea3.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/fonts.min.5bb7ed13e1d00d8ff39ea84af26737007eb5051b157b86fc24487c94f3dc8bbe.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/footer.min.eb8dfc2c6a7eafa36cd3ba92d63e69e849e2200e0002a228d137f236b09ecd75.css">
<link rel="stylesheet" href="/styles.css"> <link rel="stylesheet" href="https://blog.privacynerd.de/css/gist.min.a751e8b0abe1ba8bc53ced52a38b19d8950fe78ca29454ea8c2595cf26aad5c0.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/header.min.75c7eb0e2872d95ff48109c6647d0223a38db52e2561dd87966eb5fc7c6bdac6.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/main.min.15870410d15d02abd22fb5ef00996f65a00d04b3a7435e9f83831c7c2298de88.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/menu.min.3c17467ebeb3d38663dce68f71f519901124fa5cbb4519b2fb0667a21e9aca39.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/pagination.min.bbb986dbce00a5ce5aca0504b7925fc1c581992a4bf57f163e5d69cc1db7d836.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/post.min.e6dddd258e64c83e05cec0cd49c05216742d42fc8ecbfbe6b67083412b609bd3.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/syntax.min.a0773cce9310cb6d8ed23e50f005448facf29a53001b57e038828daa466b25c0.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/terminal.min.e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/terms.min.b81791663c3790e738e571cdbf802312390d30e4b1d8dc9d814a5b5454d0ac11.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/terminal.css">
<link rel="shortcut icon" href="https://blog.privacynerd.de/favicon.png">
<link rel="apple-touch-icon" href="https://blog.privacynerd.de/apple-touch-icon.png">
<link rel="shortcut icon" href="/img/theme-colors/green.png">
<link rel="apple-touch-icon" href="/img/theme-colors/green.png">
<meta name="twitter:card" content="summary" /> <meta name="twitter:card" content="summary" />
@@ -50,12 +79,10 @@
<meta property="og:type" content="website" /> <meta property="og:type" content="website" />
<meta property="og:title" content="Posts"> <meta property="og:title" content="Posts">
<meta property="og:description" content="" /> <meta property="og:description" content="" />
<meta property="og:url" content="/de/posts/" /> <meta property="og:url" content="https://blog.privacynerd.de/de/posts/" />
<meta property="og:site_name" content="Privacynerd&#39;s blog" /> <meta property="og:site_name" content="Privacynerd&#39;s blog" />
<meta property="og:image" content="https://blog.privacynerd.de/og-image.png">
<meta property="og:image" content="/img/favicon/green.png">
<meta property="og:image:width" content="1200"> <meta property="og:image:width" content="1200">
<meta property="og:image:height" content="627"> <meta property="og:image:height" content="627">
@@ -73,29 +100,40 @@
<style>
#banner {
width: 100%;
height: 2rem;
display: grid;
grid-template-columns: 1fr auto;
background: var(--accent);
}
#banner span {
display: flex;
align-items: center;
justify-content: center;
}
#banner a {
color: var(--background);
display: inline;
}
#banner > button {
padding: 0 5px 0 0;
margin: 0;
}
</style>
<div id="banner"><span><a href="https://git.privacynerd.de/git.privacynerd.de/blog.privacynerd.de">Baustelle 🚧 | laufende Arbeiten</a></span></div>
</head> </head>
<body class="green"> <body>
<div id="banner">
<span>
<a href="https://git.privacynerd.de/git.privacynerd.de/blog.privacynerd.de">Baustelle 🚧 | laufende Arbeiten</a>
</span>
</div>
<div class="container center">
<div class="container center headings--one-size">
<header class="header"> <header class="header">
<div class="header__inner"> <div class="header__inner">
@@ -118,19 +156,28 @@
<li><a href="/de/posts">Posts</a></li> <li><a href="/de/tags">Tags</a></li>
<hr /> <hr />
<li>
<a href='/en/posts/'>English</a>
</li>
<li>
<a href='/de/posts/'>Deutsch</a> <li>
</li>
<a href="/en/posts/">English</a>
</li>
<li>
<b>
<a href="/de/posts/">Deutsch</a>
</b>
</li>
</ul> </ul>
@@ -140,21 +187,32 @@
<ul class="menu menu--desktop menu--language-selector"> <ul class="menu menu--desktop menu--language-selector">
<li class="menu__trigger">de&nbsp;</li> <li class="menu__trigger">de&nbsp;</li>
<li> <li>
<ul class="menu__dropdown"> <ul class="menu__dropdown">
<li><a href='/en/posts/'>English</a></li>
<li><a href='/de/posts/'>Deutsch</a></li> <li>
<a href="/en/posts/">English</a>
</li>
<li>
<b>
<a href="/de/posts/">Deutsch</a>
</b>
</li>
</ul> </ul>
</li> </li>
</ul> </ul>
</div> </div>
@@ -162,13 +220,12 @@
<ul class="navigation-menu__inner menu--desktop"> <ul class="navigation-menu__inner menu--desktop">
<li><a href="/de/about" >Über</a></li> <li><a href="/de/about" >Über</a></li>
<li><a href="/de/posts" >Posts</a></li> <li><a href="/de/tags" >Tags</a></li>
@@ -186,60 +243,60 @@
<div class="posts"> <div class="posts">
<article class="post on-list"> <article class="post on-list">
<h1 class="post-title"> <h2 class="post-title">
<a href="/de/posts/one-word/">Deutscher Test Post</a> <a href="https://blog.privacynerd.de/de/posts/diy-uv-pcb-exposure-unit/">UV-Belichter (LED) aus Marke Eigenbau</a>
</h1> </h2>
<div class="post-meta"><time class="post-date">2025-04-05</time> <div class="post-meta"><time class="post-date">2025-04-14</time></div>
</div>
<img src="/en/posts/diy-uv-pcb-exposure-unit/cover.jpg"
class="post-cover"
alt="UV-Belichter (LED) aus Marke Eigenbau"
title="Cover Image" />
<div class="post-content"> <div class="post-content">
<h1 id="nureinwort">Nureinwort</h1> <p>Ist man eine gewisse Zeit lang in der (Elektronik-)DIY-Szene unterwegs, kommt man irgendwann auch um Platinen (gedruckte Leiterplatten/PCBs) nicht herum. Vorteile gegenüber dem manuellen Löten von Schaltungen auf Loch- bzw. Streifenrasterplatinen sind vor allem die einfachere Replizierbarkeit (einmal designed kann man eine Schaltung theoretisch beliebig oft herstellen) und die Möglichkeit, Platz effizienter zu nutzen (eine Platine ist fast immer kleiner als eine gelötete Lochrasterplatine mit der selben Schaltung). Letzendlich wirken Geräte mit Platinen aber auch schlicht professioneller. Sicherlich gibt es noch mehr Vorteile (und natürlich auch Nachteile!), auf deren Auflistung ich hier allerdings aus Gründen der Einfachheit verzichte.</p>
</div> </div>
<div> <div>
<a class="read-more button" href="/de/posts/one-word/">Mehr lesen</a> <a class="read-more button inline" href="/de/posts/diy-uv-pcb-exposure-unit/">[Mehr lesen]</a>
</div> </div>
</article> </article>
<article class="post on-list"> <article class="post on-list">
<h1 class="post-title"> <h2 class="post-title">
<a href="/de/posts/test-post/">Deutscher Test Post</a> <a href="https://blog.privacynerd.de/de/posts/how-it-all-began/">Wie es alles anfing - oder: der erste Post!</a>
</h1> </h2>
<div class="post-meta"><time class="post-date">2025-04-05</time> <div class="post-meta"><time class="post-date">2025-04-13</time></div>
</div>
<img src="/en/posts/how-it-all-began/cover.png"
class="post-cover"
alt="Wie es alles anfing - oder: der erste Post!"
title="Cover Image" />
<div class="post-content"> <div class="post-content">
<h1 id="test-post-in-german">Test Post in German</h1> <h2 id="thinking">Vorüberlegungen</h2>
<h2 id="lorem-ipsum">Lorem ipsum</h2> <p>Ich habe lange überlegt, wie ich diesen Post schreibe. Was muss erzählt werden, was ist unwichtig? Vieles muss wegen der Übersichtlichkeit weggelassen werden, und an so manches erinnere ich mich vielleicht schon gar nicht mehr. Jedenfalls möchte ich mit diesem Artikel meine Intention erklären, wie ich dazu kam, diesen Blog zu starten. Doch um das zu erklären, muss man die Ursprünge verstehen.</p>
<h3 id="dolor-sit-amet">dolor sit amet</h3> <h2 id="beginnings">Wie alles anfing</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim aeque doleamus animo, cum corpore dolemus, fieri tamen permagna accessio potest, si aliquod aeternum et infinitum impendere malum nobis opinemur. Quod idem licet transferre in voluptatem, ut postea variari voluptas distinguique possit, augeri amplificarique non possit. At etiam Athenis, ut e.</p> <p>Alles begann damit, dass ich als Schüler der 5. oder 6. Klasse (ich weiß es nicht mehr so genau!) anfing, auf einem Laptop für die Schule ein Batch-Skript zu schreiben. Ja, so war es, ich gebe es zu - auch wenn ich nicht weiß, wer oder was mich dazu trieb. Eine grobe Vorstellung habe ich aber: Ich glaube, es war so eine intrinsische Motivation eines Kindes, herauszufinden, wie dieser Computer da vor ihm funktioniert, die mich dazu trieb.</p>
</div> </div>
<div> <div>
<a class="read-more button" href="/de/posts/test-post/">Mehr lesen</a> <a class="read-more button inline" href="/de/posts/how-it-all-began/">[Mehr lesen]</a>
</div> </div>
</article> </article>
@@ -249,6 +306,7 @@
<div class="pagination__buttons"> <div class="pagination__buttons">
</div> </div>
</div> </div>
@@ -266,8 +324,8 @@
<div class="copyright copyright--user"> <div class="copyright copyright--user">
<span class="antidiscovery">© 2025 <i>L</i>B<i>P</i>e<i>o</i>n<i>i</i>j<i>n</i>a<i>c</i>m<i>G</i>i<i>N</i>n<i>U</i> <i>S</i>B<i>k</i>u<i>o</i>r<i>K</i>k<i>y</i>h<i>f</i>a<i>H</i>r<i>r</i>d<i>y</i>t</span> <span class="antidiscovery">© 2025 <i>L</i>B<i>P</i>e<i>o</i>n<i>i</i>j<i>n</i>a<i>c</i>m<i>G</i>i<i>N</i>n<i>U</i> <i>S</i>B<i>k</i>u<i>o</i>r<i>K</i>k<i>y</i>h<i>f</i>a<i>H</i>r<i>r</i>d<i>y</i>t</span>
<span style="margin-right: 10px">:: <a href="https://privacynerd.de/impressum?referrer=%2fde%2fposts%2f">Impressum</a></span> <span style="margin-right: 10px">:: <a href="https://privacynerd.de/impressum?referrer=https%3a%2f%2fblog.privacynerd.de%2fde%2fposts%2f">Impressum</a></span>
<span>:: <a href="https://github.com/mirus-ua/hugo-theme-re-terminal" target="_blank">Theme</a> von <a href="https://github.com/mirus-ua" target="_blank">Mirus</a> (angepasst)</span> <span>:: <a href="https://github.com/panr/hugo-theme-terminal" target="_blank">Theme</a> erstellt von <a href="https://github.com/panr" target="_blank">panr</a> (angepasst)</span>
</div> </div>
</div> </div>
</footer> </footer>
@@ -281,13 +339,24 @@
<script src="https://swetrix.privacynerd.de/script.js" defer=""></script>
<script>
<script type="text/javascript" src="/js/banner.min.js"></script> document.addEventListener('DOMContentLoaded', function() {
swetrix.init('GyBjobBbBEEC', {apiURL: 'https://swetrix.privacynerd.de/api/log',})
swetrix.trackViews()
swetrix.trackErrors({
sampleRate: 1,
callback: undefined,
})
})
</script>
<noscript>
<img
src="https://swetrix.privacynerd.de/api/log/noscript?pid=GyBjobBbBEEC"
alt=""
referrerpolicy="no-referrer-when-downgrade"
/>
</noscript>

View File

@@ -2,46 +2,25 @@
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel> <channel>
<title>Posts on Privacynerd&#39;s blog</title> <title>Posts on Privacynerd&#39;s blog</title>
<link>/de/posts/</link> <link>https://blog.privacynerd.de/de/posts/</link>
<description>Recent content in Posts on Privacynerd&#39;s blog</description> <description>Recent content in Posts on Privacynerd&#39;s blog</description>
<generator>Hugo -- gohugo.io</generator> <generator>Hugo</generator>
<language>de</language> <language>de</language>
<lastBuildDate>Sat, 05 Apr 2025 20:14:29 +0200</lastBuildDate><atom:link href="/de/posts/index.xml" rel="self" type="application/rss+xml" /> <lastBuildDate>Mon, 14 Apr 2025 08:11:20 +0200</lastBuildDate>
<atom:link href="https://blog.privacynerd.de/de/posts/index.xml" rel="self" type="application/rss+xml" />
<item> <item>
<title>Deutscher Test Post</title> <title>UV-Belichter (LED) aus Marke Eigenbau</title>
<link>/de/posts/one-word/</link> <link>https://blog.privacynerd.de/de/posts/diy-uv-pcb-exposure-unit/</link>
<pubDate>Sat, 05 Apr 2025 20:14:29 +0200</pubDate> <pubDate>Mon, 14 Apr 2025 08:11:20 +0200</pubDate>
<guid>https://blog.privacynerd.de/de/posts/diy-uv-pcb-exposure-unit/</guid>
<guid>/de/posts/one-word/</guid> <description>&lt;p&gt;Ist man eine gewisse Zeit lang in der (Elektronik-)DIY-Szene unterwegs, kommt man irgendwann auch um Platinen (gedruckte Leiterplatten/PCBs) nicht herum. Vorteile gegenüber dem manuellen Löten von Schaltungen auf Loch- bzw. Streifenrasterplatinen sind vor allem die einfachere Replizierbarkeit (einmal designed kann man eine Schaltung theoretisch beliebig oft herstellen) und die Möglichkeit, Platz effizienter zu nutzen (eine Platine ist fast immer kleiner als eine gelötete Lochrasterplatine mit der selben Schaltung). Letzendlich wirken Geräte mit Platinen aber auch schlicht professioneller. Sicherlich gibt es noch mehr Vorteile (und natürlich auch Nachteile!), auf deren Auflistung ich hier allerdings aus Gründen der Einfachheit verzichte.&lt;/p&gt;</description>
<description>&lt;h1 id=&#34;nureinwort&#34;&gt;Nureinwort&lt;/h1&gt;</description>
<content>&lt;h1 id=&#34;nureinwort&#34;&gt;Nureinwort&lt;/h1&gt;
</content>
</item> </item>
<item> <item>
<title>Deutscher Test Post</title> <title>Wie es alles anfing - oder: der erste Post!</title>
<link>/de/posts/test-post/</link> <link>https://blog.privacynerd.de/de/posts/how-it-all-began/</link>
<pubDate>Sat, 05 Apr 2025 20:14:29 +0200</pubDate> <pubDate>Sun, 13 Apr 2025 15:10:20 +0200</pubDate>
<guid>https://blog.privacynerd.de/de/posts/how-it-all-began/</guid>
<guid>/de/posts/test-post/</guid> <description>&lt;h2 id=&#34;thinking&#34;&gt;Vorüberlegungen&lt;/h2&gt;&#xA;&lt;p&gt;Ich habe lange überlegt, wie ich diesen Post schreibe. Was muss erzählt werden, was ist unwichtig? Vieles muss wegen der Übersichtlichkeit weggelassen werden, und an so manches erinnere ich mich vielleicht schon gar nicht mehr. Jedenfalls möchte ich mit diesem Artikel meine Intention erklären, wie ich dazu kam, diesen Blog zu starten. Doch um das zu erklären, muss man die Ursprünge verstehen.&lt;/p&gt;&#xA;&lt;h2 id=&#34;beginnings&#34;&gt;Wie alles anfing&lt;/h2&gt;&#xA;&lt;p&gt;Alles begann damit, dass ich als Schüler der 5. oder 6. Klasse (ich weiß es nicht mehr so genau!) anfing, auf einem Laptop für die Schule ein Batch-Skript zu schreiben. Ja, so war es, ich gebe es zu - auch wenn ich nicht weiß, wer oder was mich dazu trieb. Eine grobe Vorstellung habe ich aber: Ich glaube, es war so eine intrinsische Motivation eines Kindes, herauszufinden, wie dieser Computer da vor ihm funktioniert, die mich dazu trieb.&lt;/p&gt;</description>
<description>&lt;h1 id=&#34;test-post-in-german&#34;&gt;Test Post in German&lt;/h1&gt;
&lt;h2 id=&#34;lorem-ipsum&#34;&gt;Lorem ipsum&lt;/h2&gt;
&lt;h3 id=&#34;dolor-sit-amet&#34;&gt;dolor sit amet&lt;/h3&gt;
&lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim aeque doleamus animo, cum corpore dolemus, fieri tamen permagna accessio potest, si aliquod aeternum et infinitum impendere malum nobis opinemur. Quod idem licet transferre in voluptatem, ut postea variari voluptas distinguique possit, augeri amplificarique non possit. At etiam Athenis, ut e.&lt;/p&gt;</description>
<content>&lt;h1 id=&#34;test-post-in-german&#34;&gt;Test Post in German&lt;/h1&gt;
&lt;h2 id=&#34;lorem-ipsum&#34;&gt;Lorem ipsum&lt;/h2&gt;
&lt;h3 id=&#34;dolor-sit-amet&#34;&gt;dolor sit amet&lt;/h3&gt;
&lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim aeque doleamus animo, cum corpore dolemus, fieri tamen permagna accessio potest, si aliquod aeternum et infinitum impendere malum nobis opinemur. Quod idem licet transferre in voluptatem, ut postea variari voluptas distinguique possit, augeri amplificarique non possit. At etiam Athenis, ut e.&lt;/p&gt;
&lt;h3 id=&#34;consectetur-adipiscing&#34;&gt;Consectetur adipiscing&lt;/h3&gt;
&lt;p&gt;Bonum sit aut quid iudicat, quo aut petat aut fugiat aliquid, praeter voluptatem et dolorem. Ad haec et quae vel aliter pararetur et qua etiam carere possent sine dolore tum in morbos gravis, tum in damna, tum in dedecora incurrunt, saepe etiam legum iudiciorumque poenis obligantur. Qui autem ita frui volunt voluptatibus, ut nulli propter eas consequantur dolores, et qui suum iudicium retinent, ne voluptate victi faciant id.&lt;/p&gt;
&lt;p&gt;Sumitur contra mortis timorem et constantia contra metum religionis et sedatio animi omnium rerum occultarum ignoratione sublata et moderatio natura cupiditatum generibusque earum explicatis, et, ut dixi, ad lineam, hunc naturalem esse omnium corporum motum. Deinde ibidem homo acutus, cum illud ocurreret, si omnia dixi hausta e fonte naturae, si tota oratio nostra omnem sibi fidem sensibus confirmat, id est in culpa qui officia deserunt mollitia animi, id est.&lt;/p&gt;
&lt;p&gt;Posuit. Ea scientia et verborum vis et natura orationis et consequentium repugnantiumve ratio potest perspici. Omnium autem rerum natura cognita levamur superstitione, liberamur mortis metu, non conturbamur ignoratione rerum, e qua ipsa horribiles existunt saepe formidines. Denique etiam morati melius erimus.&lt;/p&gt;
&lt;h2 id=&#34;delorean-ipsum&#34;&gt;DeLorean ipsum&lt;/h2&gt;
&lt;p&gt;That&amp;rsquo;s right. Huh? Go. Here you go, lady. There&amp;rsquo;s a quarter. Good morning.&lt;/p&gt;
&lt;p&gt;Marty, I always wear a suit to the office. You alright? It&amp;rsquo;s a board with wheels. Yeah. What the hell is this? Marty, you&amp;rsquo;re acting like you haven&amp;rsquo;t seen me in a week.&lt;/p&gt;
&lt;p&gt;Yes, yes, I&amp;rsquo;m George, George McFly, and I&amp;rsquo;m your density. I mean, I&amp;rsquo;m your destiny. It works, ha ha ha ha, it works. I finally invent something that works. Where the hell are they. That&amp;rsquo;s Strickland. Jesus, didn&amp;rsquo;t that guy ever have hair? Alright, alright, okay McFly, get a grip on yourself. It&amp;rsquo;s all a dream. Just a very intense dream. Woh, hey, listen, you gotta help me.&lt;/p&gt;
</content>
</item> </item>
</channel> </channel>
</rss> </rss>

View File

@@ -1,273 +0,0 @@
<!DOCTYPE html>
<html lang="de">
<head>
<title>Deutscher Test Post :: Privacynerd&#39;s blog</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Nureinwort" />
<meta name="keywords" content="" />
<meta name="robots" content="noodp" />
<link rel="canonical" href="/de/posts/one-word/" />
<link rel="stylesheet" href="/styles.css">
<link rel="shortcut icon" href="/img/theme-colors/green.png">
<link rel="apple-touch-icon" href="/img/theme-colors/green.png">
<meta name="twitter:card" content="summary" />
<meta name="twitter:site" content="" />
<meta name="twitter:creator" content="" />
<meta property="og:locale" content="de" />
<meta property="og:type" content="article" />
<meta property="og:title" content="Deutscher Test Post">
<meta property="og:description" content="Nureinwort" />
<meta property="og:url" content="/de/posts/one-word/" />
<meta property="og:site_name" content="Privacynerd&#39;s blog" />
<meta property="og:image" content="/img/favicon/green.png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="627">
<meta property="article:published_time" content="2025-04-05 20:14:29 &#43;0200 CEST" />
</head>
<body class="green">
<div id="banner">
<span>
<a href="https://git.privacynerd.de/git.privacynerd.de/blog.privacynerd.de">Baustelle 🚧 | laufende Arbeiten</a>
</span>
</div>
<div class="container center headings--one-size">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="/de">
<div class="logo">
Privacynerd&#39;s blog
</div>
</a>
</div>
<ul class="menu menu--mobile">
<li class="menu__trigger">Menü&nbsp;</li>
<li>
<ul class="menu__dropdown">
<li><a href="/de/about">Über</a></li>
<li><a href="/de/posts">Posts</a></li>
<hr />
<li>
<a href='/en/posts/one-word/'>English</a>
</li>
<li>
<a href='/de/posts/one-word/'>Deutsch</a>
</li>
</ul>
</li>
</ul>
<ul class="menu menu--desktop menu--language-selector">
<li class="menu__trigger">de&nbsp;</li>
<li>
<ul class="menu__dropdown">
<li><a href='/en/posts/one-word/'>English</a></li>
<li><a href='/de/posts/one-word/'>Deutsch</a></li>
</ul>
</li>
</ul>
</div>
<nav class="navigation-menu">
<ul class="navigation-menu__inner menu--desktop">
<li><a href="/de/about" >Über</a></li>
<li><a href="/de/posts" >Posts</a></li>
</ul>
</nav>
</header>
<div class="content">
<article class="post">
<h1 class="post-title">
<a href="/de/posts/one-word/">Deutscher Test Post</a>
</h1>
<div class="post-meta"><time class="post-date">2025-04-05</time><span class="post-reading-time">1 Minute Lesezeit (1 Wort)</span>
</div>
<div class="post-content"><div>
<h1 id="nureinwort">Nureinwort<a href="#nureinwort" class="hanchor" ariaLabel="Anchor">&#8983;</a> </h1>
</div></div>
<div class="pagination">
<div class="pagination__title">
<span class="pagination__title-h">Andere Posts lesen</span>
<hr />
</div>
<div class="pagination__buttons">
<span class="button next">
<a href="/de/posts/test-post/">
<span class="button__text">Deutscher Test Post</span>
<span class="button__icon"></span>
</a>
</span>
</div>
</div>
</article>
</div>
<footer class="footer">
<style>
.antidiscovery i { display: none; }
</style>
<div class="footer__inner">
<div class="copyright copyright--user">
<span class="antidiscovery">© 2025 <i>L</i>B<i>P</i>e<i>o</i>n<i>i</i>j<i>n</i>a<i>c</i>m<i>G</i>i<i>N</i>n<i>U</i> <i>S</i>B<i>k</i>u<i>o</i>r<i>K</i>k<i>y</i>h<i>f</i>a<i>H</i>r<i>r</i>d<i>y</i>t</span>
<span style="margin-right: 10px">:: <a href="https://privacynerd.de/impressum?referrer=%2fde%2fposts%2fone-word%2f">Impressum</a></span>
<span>:: <a href="https://github.com/mirus-ua/hugo-theme-re-terminal" target="_blank">Theme</a> von <a href="https://github.com/mirus-ua" target="_blank">Mirus</a> (angepasst)</span>
</div>
</div>
</footer>
<script type="text/javascript" src="/bundle.min.js"></script>
<script type="text/javascript" src="/js/banner.min.js"></script>
</div>
</body>
</html>

View File

@@ -1,10 +1,10 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="de"> <html lang="de">
<head> <head>
<title>/de/posts/</title> <title>https://blog.privacynerd.de/de/posts/</title>
<link rel="canonical" href="/de/posts/"> <link rel="canonical" href="https://blog.privacynerd.de/de/posts/">
<meta name="robots" content="noindex"> <meta name="robots" content="noindex">
<meta charset="utf-8"> <meta charset="utf-8">
<meta http-equiv="refresh" content="0; url=/de/posts/"> <meta http-equiv="refresh" content="0; url=https://blog.privacynerd.de/de/posts/">
</head> </head>
</html> </html>

View File

@@ -1,303 +0,0 @@
<!DOCTYPE html>
<html lang="de">
<head>
<title>Deutscher Test Post :: Privacynerd&#39;s blog</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Test Post in German Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim aeque doleamus animo, cum corpore dolemus, fieri tamen permagna accessio potest, si aliquod aeternum et infinitum impendere malum nobis opinemur. Quod idem licet transferre in voluptatem, ut postea variari voluptas distinguique possit, augeri amplificarique non possit. At etiam Athenis, ut e.
" />
<meta name="keywords" content="" />
<meta name="robots" content="noodp" />
<link rel="canonical" href="/de/posts/test-post/" />
<link rel="stylesheet" href="/styles.css">
<link rel="shortcut icon" href="/img/theme-colors/green.png">
<link rel="apple-touch-icon" href="/img/theme-colors/green.png">
<meta name="twitter:card" content="summary" />
<meta name="twitter:site" content="" />
<meta name="twitter:creator" content="" />
<meta property="og:locale" content="de" />
<meta property="og:type" content="article" />
<meta property="og:title" content="Deutscher Test Post">
<meta property="og:description" content="Test Post in German Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim aeque doleamus animo, cum corpore dolemus, fieri tamen permagna accessio potest, si aliquod aeternum et infinitum impendere malum nobis opinemur. Quod idem licet transferre in voluptatem, ut postea variari voluptas distinguique possit, augeri amplificarique non possit. At etiam Athenis, ut e.
" />
<meta property="og:url" content="/de/posts/test-post/" />
<meta property="og:site_name" content="Privacynerd&#39;s blog" />
<meta property="og:image" content="/img/favicon/green.png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="627">
<meta property="article:published_time" content="2025-04-05 20:14:29 &#43;0200 CEST" />
</head>
<body class="green">
<div id="banner">
<span>
<a href="https://git.privacynerd.de/git.privacynerd.de/blog.privacynerd.de">Baustelle 🚧 | laufende Arbeiten</a>
</span>
</div>
<div class="container center headings--one-size">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="/de">
<div class="logo">
Privacynerd&#39;s blog
</div>
</a>
</div>
<ul class="menu menu--mobile">
<li class="menu__trigger">Menü&nbsp;</li>
<li>
<ul class="menu__dropdown">
<li><a href="/de/about">Über</a></li>
<li><a href="/de/posts">Posts</a></li>
<hr />
<li>
<a href='/en/posts/test-post/'>English</a>
</li>
<li>
<a href='/de/posts/test-post/'>Deutsch</a>
</li>
</ul>
</li>
</ul>
<ul class="menu menu--desktop menu--language-selector">
<li class="menu__trigger">de&nbsp;</li>
<li>
<ul class="menu__dropdown">
<li><a href='/en/posts/test-post/'>English</a></li>
<li><a href='/de/posts/test-post/'>Deutsch</a></li>
</ul>
</li>
</ul>
</div>
<nav class="navigation-menu">
<ul class="navigation-menu__inner menu--desktop">
<li><a href="/de/about" >Über</a></li>
<li><a href="/de/posts" >Posts</a></li>
</ul>
</nav>
</header>
<div class="content">
<article class="post">
<h1 class="post-title">
<a href="/de/posts/test-post/">Deutscher Test Post</a>
</h1>
<div class="post-meta"><time class="post-date">2025-04-05</time><span class="post-reading-time">2 Minuten Lesezeit (369 Wörter)</span>
</div>
<div class="table-of-contents">
<h2>
Inhaltsverzeichnis
</h2>
<nav id="TableOfContents">
<ul>
<li><a href="#lorem-ipsum">Lorem ipsum</a>
<ul>
<li><a href="#dolor-sit-amet">dolor sit amet</a></li>
<li><a href="#consectetur-adipiscing">Consectetur adipiscing</a></li>
</ul>
</li>
<li><a href="#delorean-ipsum">DeLorean ipsum</a></li>
</ul>
</nav>
</div>
<div class="post-content"><div>
<h1 id="test-post-in-german">Test Post in German<a href="#test-post-in-german" class="hanchor" ariaLabel="Anchor">&#8983;</a> </h1>
<h2 id="lorem-ipsum">Lorem ipsum<a href="#lorem-ipsum" class="hanchor" ariaLabel="Anchor">&#8983;</a> </h2>
<h3 id="dolor-sit-amet">dolor sit amet<a href="#dolor-sit-amet" class="hanchor" ariaLabel="Anchor">&#8983;</a> </h3>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim aeque doleamus animo, cum corpore dolemus, fieri tamen permagna accessio potest, si aliquod aeternum et infinitum impendere malum nobis opinemur. Quod idem licet transferre in voluptatem, ut postea variari voluptas distinguique possit, augeri amplificarique non possit. At etiam Athenis, ut e.</p>
<h3 id="consectetur-adipiscing">Consectetur adipiscing<a href="#consectetur-adipiscing" class="hanchor" ariaLabel="Anchor">&#8983;</a> </h3>
<p>Bonum sit aut quid iudicat, quo aut petat aut fugiat aliquid, praeter voluptatem et dolorem. Ad haec et quae vel aliter pararetur et qua etiam carere possent sine dolore tum in morbos gravis, tum in damna, tum in dedecora incurrunt, saepe etiam legum iudiciorumque poenis obligantur. Qui autem ita frui volunt voluptatibus, ut nulli propter eas consequantur dolores, et qui suum iudicium retinent, ne voluptate victi faciant id.</p>
<p>Sumitur contra mortis timorem et constantia contra metum religionis et sedatio animi omnium rerum occultarum ignoratione sublata et moderatio natura cupiditatum generibusque earum explicatis, et, ut dixi, ad lineam, hunc naturalem esse omnium corporum motum. Deinde ibidem homo acutus, cum illud ocurreret, si omnia dixi hausta e fonte naturae, si tota oratio nostra omnem sibi fidem sensibus confirmat, id est in culpa qui officia deserunt mollitia animi, id est.</p>
<p>Posuit. Ea scientia et verborum vis et natura orationis et consequentium repugnantiumve ratio potest perspici. Omnium autem rerum natura cognita levamur superstitione, liberamur mortis metu, non conturbamur ignoratione rerum, e qua ipsa horribiles existunt saepe formidines. Denique etiam morati melius erimus.</p>
<h2 id="delorean-ipsum">DeLorean ipsum<a href="#delorean-ipsum" class="hanchor" ariaLabel="Anchor">&#8983;</a> </h2>
<p>That&rsquo;s right. Huh? Go. Here you go, lady. There&rsquo;s a quarter. Good morning.</p>
<p>Marty, I always wear a suit to the office. You alright? It&rsquo;s a board with wheels. Yeah. What the hell is this? Marty, you&rsquo;re acting like you haven&rsquo;t seen me in a week.</p>
<p>Yes, yes, I&rsquo;m George, George McFly, and I&rsquo;m your density. I mean, I&rsquo;m your destiny. It works, ha ha ha ha, it works. I finally invent something that works. Where the hell are they. That&rsquo;s Strickland. Jesus, didn&rsquo;t that guy ever have hair? Alright, alright, okay McFly, get a grip on yourself. It&rsquo;s all a dream. Just a very intense dream. Woh, hey, listen, you gotta help me.</p>
</div></div>
<div class="pagination">
<div class="pagination__title">
<span class="pagination__title-h">Andere Posts lesen</span>
<hr />
</div>
<div class="pagination__buttons">
<span class="button previous">
<a href="/de/posts/one-word/">
<span class="button__icon"></span>
<span class="button__text">Deutscher Test Post</span>
</a>
</span>
</div>
</div>
</article>
</div>
<footer class="footer">
<style>
.antidiscovery i { display: none; }
</style>
<div class="footer__inner">
<div class="copyright copyright--user">
<span class="antidiscovery">© 2025 <i>L</i>B<i>P</i>e<i>o</i>n<i>i</i>j<i>n</i>a<i>c</i>m<i>G</i>i<i>N</i>n<i>U</i> <i>S</i>B<i>k</i>u<i>o</i>r<i>K</i>k<i>y</i>h<i>f</i>a<i>H</i>r<i>r</i>d<i>y</i>t</span>
<span style="margin-right: 10px">:: <a href="https://privacynerd.de/impressum?referrer=%2fde%2fposts%2ftest-post%2f">Impressum</a></span>
<span>:: <a href="https://github.com/mirus-ua/hugo-theme-re-terminal" target="_blank">Theme</a> von <a href="https://github.com/mirus-ua" target="_blank">Mirus</a> (angepasst)</span>
</div>
</div>
</footer>
<script type="text/javascript" src="/bundle.min.js"></script>
<script type="text/javascript" src="/js/banner.min.js"></script>
</div>
</body>
</html>

View File

@@ -2,93 +2,93 @@
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml"> xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url> <url>
<loc>/de/posts/one-word/</loc> <loc>https://blog.privacynerd.de/de/posts/</loc>
<lastmod>2025-04-05T20:14:29+02:00</lastmod> <lastmod>2025-04-14T08:11:20+02:00</lastmod>
<xhtml:link <xhtml:link
rel="alternate" rel="alternate"
hreflang="en" hreflang="en"
href="/en/posts/one-word/" href="https://blog.privacynerd.de/en/posts/"
/> />
<xhtml:link <xhtml:link
rel="alternate" rel="alternate"
hreflang="de" hreflang="de"
href="/de/posts/one-word/" href="https://blog.privacynerd.de/de/posts/"
/> />
</url><url> </url><url>
<loc>/de/posts/test-post/</loc> <loc>https://blog.privacynerd.de/de/posts/diy-uv-pcb-exposure-unit/</loc>
<lastmod>2025-04-05T20:14:29+02:00</lastmod> <lastmod>2025-04-14T08:11:20+02:00</lastmod>
<xhtml:link <xhtml:link
rel="alternate" rel="alternate"
hreflang="en" hreflang="en"
href="/en/posts/test-post/" href="https://blog.privacynerd.de/en/posts/diy-uv-pcb-exposure-unit/"
/> />
<xhtml:link <xhtml:link
rel="alternate" rel="alternate"
hreflang="de" hreflang="de"
href="/de/posts/test-post/" href="https://blog.privacynerd.de/de/posts/diy-uv-pcb-exposure-unit/"
/> />
</url><url> </url><url>
<loc>/de/posts/</loc> <loc>https://blog.privacynerd.de/de/posts/how-it-all-began/</loc>
<lastmod>2025-04-05T20:14:29+02:00</lastmod> <lastmod>2025-04-13T15:10:20+02:00</lastmod>
<xhtml:link <xhtml:link
rel="alternate" rel="alternate"
hreflang="en" hreflang="en"
href="/en/posts/" href="https://blog.privacynerd.de/en/posts/how-it-all-began/"
/> />
<xhtml:link <xhtml:link
rel="alternate" rel="alternate"
hreflang="de" hreflang="de"
href="/de/posts/" href="https://blog.privacynerd.de/de/posts/how-it-all-began/"
/> />
</url><url> </url><url>
<loc>/de/</loc> <loc>https://blog.privacynerd.de/de/about/</loc>
<lastmod>2025-04-05T20:14:29+02:00</lastmod> <lastmod>2025-04-13T13:02:20+02:00</lastmod>
<xhtml:link <xhtml:link
rel="alternate" rel="alternate"
hreflang="en" hreflang="en"
href="/en/" href="https://blog.privacynerd.de/en/about/"
/> />
<xhtml:link <xhtml:link
rel="alternate" rel="alternate"
hreflang="de" hreflang="de"
href="/de/" href="https://blog.privacynerd.de/de/about/"
/> />
</url><url> </url><url>
<loc>/de/about/</loc> <loc>https://blog.privacynerd.de/de/</loc>
<lastmod>2025-04-05T20:14:29+02:00</lastmod> <lastmod>2025-04-13T12:54:00+02:00</lastmod>
<xhtml:link <xhtml:link
rel="alternate" rel="alternate"
hreflang="en" hreflang="en"
href="/en/about/" href="https://blog.privacynerd.de/en/"
/> />
<xhtml:link <xhtml:link
rel="alternate" rel="alternate"
hreflang="de" hreflang="de"
href="/de/about/" href="https://blog.privacynerd.de/de/"
/> />
</url><url> </url><url>
<loc>/de/categories/</loc> <loc>https://blog.privacynerd.de/de/categories/</loc>
<xhtml:link <xhtml:link
rel="alternate" rel="alternate"
hreflang="en" hreflang="en"
href="/en/categories/" href="https://blog.privacynerd.de/en/categories/"
/> />
<xhtml:link <xhtml:link
rel="alternate" rel="alternate"
hreflang="de" hreflang="de"
href="/de/categories/" href="https://blog.privacynerd.de/de/categories/"
/> />
</url><url> </url><url>
<loc>/de/tags/</loc> <loc>https://blog.privacynerd.de/de/tags/</loc>
<xhtml:link <xhtml:link
rel="alternate" rel="alternate"
hreflang="en" hreflang="en"
href="/en/tags/" href="https://blog.privacynerd.de/en/tags/"
/> />
<xhtml:link <xhtml:link
rel="alternate" rel="alternate"
hreflang="de" hreflang="de"
href="/de/tags/" href="https://blog.privacynerd.de/de/tags/"
/> />
</url> </url>
</urlset> </urlset>

View File

@@ -11,30 +11,59 @@
<meta name="robots" content="noodp" /> <meta name="robots" content="noodp" />
<link rel="canonical" href="/de/tags/" /> <link rel="canonical" href="https://blog.privacynerd.de/de/tags/" />
<link rel="stylesheet" href="https://blog.privacynerd.de/css/buttons.min.86f6b4c106b6c6eb690ae5203d36b442c1f66f718ff4e8164fa86cf6c61ad641.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/code.min.4f0ccc8439f99bf7f7970298556b94011aabc1fcae743b6842fc3361a2da9ea3.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/fonts.min.5bb7ed13e1d00d8ff39ea84af26737007eb5051b157b86fc24487c94f3dc8bbe.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/footer.min.eb8dfc2c6a7eafa36cd3ba92d63e69e849e2200e0002a228d137f236b09ecd75.css">
<link rel="stylesheet" href="/styles.css"> <link rel="stylesheet" href="https://blog.privacynerd.de/css/gist.min.a751e8b0abe1ba8bc53ced52a38b19d8950fe78ca29454ea8c2595cf26aad5c0.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/header.min.75c7eb0e2872d95ff48109c6647d0223a38db52e2561dd87966eb5fc7c6bdac6.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/main.min.15870410d15d02abd22fb5ef00996f65a00d04b3a7435e9f83831c7c2298de88.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/menu.min.3c17467ebeb3d38663dce68f71f519901124fa5cbb4519b2fb0667a21e9aca39.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/pagination.min.bbb986dbce00a5ce5aca0504b7925fc1c581992a4bf57f163e5d69cc1db7d836.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/post.min.e6dddd258e64c83e05cec0cd49c05216742d42fc8ecbfbe6b67083412b609bd3.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/syntax.min.a0773cce9310cb6d8ed23e50f005448facf29a53001b57e038828daa466b25c0.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/terminal.min.e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/terms.min.b81791663c3790e738e571cdbf802312390d30e4b1d8dc9d814a5b5454d0ac11.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/terminal.css">
<link rel="shortcut icon" href="https://blog.privacynerd.de/favicon.png">
<link rel="apple-touch-icon" href="https://blog.privacynerd.de/apple-touch-icon.png">
<link rel="shortcut icon" href="/img/theme-colors/green.png">
<link rel="apple-touch-icon" href="/img/theme-colors/green.png">
<meta name="twitter:card" content="summary" /> <meta name="twitter:card" content="summary" />
@@ -50,12 +79,10 @@
<meta property="og:type" content="website" /> <meta property="og:type" content="website" />
<meta property="og:title" content="Tags"> <meta property="og:title" content="Tags">
<meta property="og:description" content="" /> <meta property="og:description" content="" />
<meta property="og:url" content="/de/tags/" /> <meta property="og:url" content="https://blog.privacynerd.de/de/tags/" />
<meta property="og:site_name" content="Privacynerd&#39;s blog" /> <meta property="og:site_name" content="Privacynerd&#39;s blog" />
<meta property="og:image" content="https://blog.privacynerd.de/og-image.png">
<meta property="og:image" content="/img/favicon/green.png">
<meta property="og:image:width" content="1200"> <meta property="og:image:width" content="1200">
<meta property="og:image:height" content="627"> <meta property="og:image:height" content="627">
@@ -73,29 +100,40 @@
<style>
#banner {
width: 100%;
height: 2rem;
display: grid;
grid-template-columns: 1fr auto;
background: var(--accent);
}
#banner span {
display: flex;
align-items: center;
justify-content: center;
}
#banner a {
color: var(--background);
display: inline;
}
#banner > button {
padding: 0 5px 0 0;
margin: 0;
}
</style>
<div id="banner"><span><a href="https://git.privacynerd.de/git.privacynerd.de/blog.privacynerd.de">Baustelle 🚧 | laufende Arbeiten</a></span></div>
</head> </head>
<body class="green"> <body>
<div id="banner">
<span>
<a href="https://git.privacynerd.de/git.privacynerd.de/blog.privacynerd.de">Baustelle 🚧 | laufende Arbeiten</a>
</span>
</div>
<div class="container center">
<div class="container center headings--one-size">
<header class="header"> <header class="header">
<div class="header__inner"> <div class="header__inner">
@@ -118,19 +156,28 @@
<li><a href="/de/posts">Posts</a></li> <li><a href="/de/tags">Tags</a></li>
<hr /> <hr />
<li>
<a href='/en/tags/'>English</a>
</li>
<li>
<a href='/de/tags/'>Deutsch</a> <li>
</li>
<a href="/en/tags/">English</a>
</li>
<li>
<b>
<a href="/de/tags/">Deutsch</a>
</b>
</li>
</ul> </ul>
@@ -140,21 +187,32 @@
<ul class="menu menu--desktop menu--language-selector"> <ul class="menu menu--desktop menu--language-selector">
<li class="menu__trigger">de&nbsp;</li> <li class="menu__trigger">de&nbsp;</li>
<li> <li>
<ul class="menu__dropdown"> <ul class="menu__dropdown">
<li><a href='/en/tags/'>English</a></li>
<li><a href='/de/tags/'>Deutsch</a></li> <li>
<a href="/en/tags/">English</a>
</li>
<li>
<b>
<a href="/de/tags/">Deutsch</a>
</b>
</li>
</ul> </ul>
</li> </li>
</ul> </ul>
</div> </div>
@@ -162,13 +220,12 @@
<ul class="navigation-menu__inner menu--desktop"> <ul class="navigation-menu__inner menu--desktop">
<li><a href="/de/about" >Über</a></li> <li><a href="/de/about" >Über</a></li>
<li><a href="/de/posts" >Posts</a></li> <li><a href="/de/tags" >Tags</a></li>
@@ -203,8 +260,8 @@
<div class="copyright copyright--user"> <div class="copyright copyright--user">
<span class="antidiscovery">© 2025 <i>L</i>B<i>P</i>e<i>o</i>n<i>i</i>j<i>n</i>a<i>c</i>m<i>G</i>i<i>N</i>n<i>U</i> <i>S</i>B<i>k</i>u<i>o</i>r<i>K</i>k<i>y</i>h<i>f</i>a<i>H</i>r<i>r</i>d<i>y</i>t</span> <span class="antidiscovery">© 2025 <i>L</i>B<i>P</i>e<i>o</i>n<i>i</i>j<i>n</i>a<i>c</i>m<i>G</i>i<i>N</i>n<i>U</i> <i>S</i>B<i>k</i>u<i>o</i>r<i>K</i>k<i>y</i>h<i>f</i>a<i>H</i>r<i>r</i>d<i>y</i>t</span>
<span style="margin-right: 10px">:: <a href="https://privacynerd.de/impressum?referrer=%2fde%2ftags%2f">Impressum</a></span> <span style="margin-right: 10px">:: <a href="https://privacynerd.de/impressum?referrer=https%3a%2f%2fblog.privacynerd.de%2fde%2ftags%2f">Impressum</a></span>
<span>:: <a href="https://github.com/mirus-ua/hugo-theme-re-terminal" target="_blank">Theme</a> von <a href="https://github.com/mirus-ua" target="_blank">Mirus</a> (angepasst)</span> <span>:: <a href="https://github.com/panr/hugo-theme-terminal" target="_blank">Theme</a> erstellt von <a href="https://github.com/panr" target="_blank">panr</a> (angepasst)</span>
</div> </div>
</div> </div>
</footer> </footer>
@@ -218,13 +275,24 @@
<script src="https://swetrix.privacynerd.de/script.js" defer=""></script>
<script>
<script type="text/javascript" src="/js/banner.min.js"></script> document.addEventListener('DOMContentLoaded', function() {
swetrix.init('GyBjobBbBEEC', {apiURL: 'https://swetrix.privacynerd.de/api/log',})
swetrix.trackViews()
swetrix.trackErrors({
sampleRate: 1,
callback: undefined,
})
})
</script>
<noscript>
<img
src="https://swetrix.privacynerd.de/api/log/noscript?pid=GyBjobBbBEEC"
alt=""
referrerpolicy="no-referrer-when-downgrade"
/>
</noscript>

View File

@@ -2,9 +2,10 @@
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel> <channel>
<title>Tags on Privacynerd&#39;s blog</title> <title>Tags on Privacynerd&#39;s blog</title>
<link>/de/tags/</link> <link>https://blog.privacynerd.de/de/tags/</link>
<description>Recent content in Tags on Privacynerd&#39;s blog</description> <description>Recent content in Tags on Privacynerd&#39;s blog</description>
<generator>Hugo -- gohugo.io</generator> <generator>Hugo</generator>
<language>de</language><atom:link href="/de/tags/index.xml" rel="self" type="application/rss+xml" /> <language>de</language>
<atom:link href="https://blog.privacynerd.de/de/tags/index.xml" rel="self" type="application/rss+xml" />
</channel> </channel>
</rss> </rss>

View File

@@ -11,30 +11,59 @@
<meta name="robots" content="noodp" /> <meta name="robots" content="noodp" />
<link rel="canonical" href="/en/404.html" /> <link rel="canonical" href="https://blog.privacynerd.de/en/404.html" />
<link rel="stylesheet" href="https://blog.privacynerd.de/css/buttons.min.86f6b4c106b6c6eb690ae5203d36b442c1f66f718ff4e8164fa86cf6c61ad641.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/code.min.4f0ccc8439f99bf7f7970298556b94011aabc1fcae743b6842fc3361a2da9ea3.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/fonts.min.5bb7ed13e1d00d8ff39ea84af26737007eb5051b157b86fc24487c94f3dc8bbe.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/footer.min.eb8dfc2c6a7eafa36cd3ba92d63e69e849e2200e0002a228d137f236b09ecd75.css">
<link rel="stylesheet" href="/styles.css"> <link rel="stylesheet" href="https://blog.privacynerd.de/css/gist.min.a751e8b0abe1ba8bc53ced52a38b19d8950fe78ca29454ea8c2595cf26aad5c0.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/header.min.75c7eb0e2872d95ff48109c6647d0223a38db52e2561dd87966eb5fc7c6bdac6.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/main.min.15870410d15d02abd22fb5ef00996f65a00d04b3a7435e9f83831c7c2298de88.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/menu.min.3c17467ebeb3d38663dce68f71f519901124fa5cbb4519b2fb0667a21e9aca39.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/pagination.min.bbb986dbce00a5ce5aca0504b7925fc1c581992a4bf57f163e5d69cc1db7d836.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/post.min.e6dddd258e64c83e05cec0cd49c05216742d42fc8ecbfbe6b67083412b609bd3.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/syntax.min.a0773cce9310cb6d8ed23e50f005448facf29a53001b57e038828daa466b25c0.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/terminal.min.e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/terms.min.b81791663c3790e738e571cdbf802312390d30e4b1d8dc9d814a5b5454d0ac11.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/terminal.css">
<link rel="shortcut icon" href="https://blog.privacynerd.de/favicon.png">
<link rel="apple-touch-icon" href="https://blog.privacynerd.de/apple-touch-icon.png">
<link rel="shortcut icon" href="/img/theme-colors/green.png">
<link rel="apple-touch-icon" href="/img/theme-colors/green.png">
<meta name="twitter:card" content="summary" /> <meta name="twitter:card" content="summary" />
@@ -50,12 +79,10 @@
<meta property="og:type" content="website" /> <meta property="og:type" content="website" />
<meta property="og:title" content="404 Page not found"> <meta property="og:title" content="404 Page not found">
<meta property="og:description" content="" /> <meta property="og:description" content="" />
<meta property="og:url" content="/en/404.html" /> <meta property="og:url" content="https://blog.privacynerd.de/en/404.html" />
<meta property="og:site_name" content="Privacynerd&#39;s blog" /> <meta property="og:site_name" content="Privacynerd&#39;s blog" />
<meta property="og:image" content="https://blog.privacynerd.de/og-image.png">
<meta property="og:image" content="/img/favicon/green.png">
<meta property="og:image:width" content="1200"> <meta property="og:image:width" content="1200">
<meta property="og:image:height" content="627"> <meta property="og:image:height" content="627">
@@ -71,29 +98,40 @@
<style>
#banner {
width: 100%;
height: 2rem;
display: grid;
grid-template-columns: 1fr auto;
background: var(--accent);
}
#banner span {
display: flex;
align-items: center;
justify-content: center;
}
#banner a {
color: var(--background);
display: inline;
}
#banner > button {
padding: 0 5px 0 0;
margin: 0;
}
</style>
<div id="banner"><span><a href="https://git.privacynerd.de/git.privacynerd.de/blog.privacynerd.de">Construction site 🚧 | Work in progress</a></span></div>
</head> </head>
<body class="green"> <body>
<div id="banner">
<span>
<a href="https://git.privacynerd.de/git.privacynerd.de/blog.privacynerd.de">Construction site 🚧 | Work in progress</a>
</span>
</div>
<div class="container center">
<div class="container center headings--one-size">
<header class="header"> <header class="header">
<div class="header__inner"> <div class="header__inner">
@@ -116,19 +154,28 @@
<li><a href="/en/posts">Posts</a></li> <li><a href="/en/tags">Tags</a></li>
<hr /> <hr />
<li>
<a href='/en/404.html'>English</a>
</li>
<li>
<a href='/de/404.html'>Deutsch</a> <li>
</li> <b>
<a href="/en/404.html">English</a>
</b>
</li>
<li>
<a href="/de/404.html">Deutsch</a>
</li>
</ul> </ul>
@@ -138,21 +185,32 @@
<ul class="menu menu--desktop menu--language-selector"> <ul class="menu menu--desktop menu--language-selector">
<li class="menu__trigger">en&nbsp;</li> <li class="menu__trigger">en&nbsp;</li>
<li> <li>
<ul class="menu__dropdown"> <ul class="menu__dropdown">
<li><a href='/en/404.html'>English</a></li>
<li><a href='/de/404.html'>Deutsch</a></li> <li>
<b>
<a href="/en/404.html">English</a>
</b>
</li>
<li>
<a href="/de/404.html">Deutsch</a>
</li>
</ul> </ul>
</li> </li>
</ul> </ul>
</div> </div>
@@ -160,13 +218,12 @@
<ul class="navigation-menu__inner menu--desktop"> <ul class="navigation-menu__inner menu--desktop">
<li><a href="/en/about" >About</a></li> <li><a href="/en/about" >About</a></li>
<li><a href="/en/posts" >Posts</a></li> <li><a href="/en/tags" >Tags</a></li>
@@ -184,7 +241,7 @@
<h1 class="post-title">404 — Page not found...</h1> <h1 class="post-title">404 — Page not found...</h1>
<div class="post-content"> <div class="post-content">
<a href="/">Back to home page&nbsp;</a> <a href="https://blog.privacynerd.de/">Back to home page&nbsp;</a>
</div> </div>
</div> </div>
@@ -201,8 +258,8 @@
<div class="copyright copyright--user"> <div class="copyright copyright--user">
<span class="antidiscovery">© 2025 <i>L</i>B<i>P</i>e<i>o</i>n<i>i</i>j<i>n</i>a<i>c</i>m<i>G</i>i<i>N</i>n<i>U</i> <i>S</i>B<i>k</i>u<i>o</i>r<i>K</i>k<i>y</i>h<i>f</i>a<i>H</i>r<i>r</i>d<i>y</i>t</span> <span class="antidiscovery">© 2025 <i>L</i>B<i>P</i>e<i>o</i>n<i>i</i>j<i>n</i>a<i>c</i>m<i>G</i>i<i>N</i>n<i>U</i> <i>S</i>B<i>k</i>u<i>o</i>r<i>K</i>k<i>y</i>h<i>f</i>a<i>H</i>r<i>r</i>d<i>y</i>t</span>
<span style="margin-right: 10px">:: <a href="https://privacynerd.de/impressum?referrer=%2fen%2f404.html">Imprint</a></span> <span style="margin-right: 10px">:: <a href="https://privacynerd.de/impressum?referrer=https%3a%2f%2fblog.privacynerd.de%2fen%2f404.html">Imprint</a></span>
<span>:: <a href="https://github.com/mirus-ua/hugo-theme-re-terminal" target="_blank">Theme</a> by <a href="https://github.com/mirus-ua" target="_blank">Mirus</a> (customized)</span> <span>:: <a href="https://github.com/panr/hugo-theme-terminal" target="_blank">Theme</a> made by <a href="https://github.com/panr" target="_blank">panr</a> (customized)</span>
</div> </div>
</div> </div>
</footer> </footer>
@@ -216,13 +273,24 @@
<script src="https://swetrix.privacynerd.de/script.js" defer=""></script>
<script>
<script type="text/javascript" src="/js/banner.min.js"></script> document.addEventListener('DOMContentLoaded', function() {
swetrix.init('GyBjobBbBEEC', {apiURL: 'https://swetrix.privacynerd.de/api/log',})
swetrix.trackViews()
swetrix.trackErrors({
sampleRate: 1,
callback: undefined,
})
})
</script>
<noscript>
<img
src="https://swetrix.privacynerd.de/api/log/noscript?pid=GyBjobBbBEEC"
alt=""
referrerpolicy="no-referrer-when-downgrade"
/>
</noscript>

View File

@@ -6,38 +6,67 @@
<meta http-equiv="content-type" content="text/html; charset=utf-8"> <meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Hello in a new age You can call me Mirus and I forked the original Terminal theme for Hugo, because Radek, the original creator of the theme stop the maintenance and archived the repo. <meta name="description" content="The intention Well, my Name is Benjamin, and Im mostly known as BlueFox. I love tinkering around with electronics, 3D printing stuff and working with wood, but I also do a bit of programming and am an avid self-hoster.
So I already pushed a few improvements that I did for my humble blog and I&rsquo;m going to add some more features in the future, also any contribution is welcome This is my personal blog (driven in my free time, all of this is just a hobby) about all the kinds of things I&rsquo;m doing DIY-wise. This includes:
Below you can read the original about from Radek posts about my DIY projects, about new experiences that I gather while tinkering, also an update here and there on existing projects and libraries of mine, and maybe something completely new! Just have a look around, perhaps you&rsquo;ll find something interesting!
" /> " />
<meta name="keywords" content="" /> <meta name="keywords" content="" />
<meta name="robots" content="noodp" /> <meta name="robots" content="noodp" />
<link rel="canonical" href="/en/about/" /> <link rel="canonical" href="https://blog.privacynerd.de/en/about/" />
<link rel="stylesheet" href="https://blog.privacynerd.de/css/buttons.min.86f6b4c106b6c6eb690ae5203d36b442c1f66f718ff4e8164fa86cf6c61ad641.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/code.min.4f0ccc8439f99bf7f7970298556b94011aabc1fcae743b6842fc3361a2da9ea3.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/fonts.min.5bb7ed13e1d00d8ff39ea84af26737007eb5051b157b86fc24487c94f3dc8bbe.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/footer.min.eb8dfc2c6a7eafa36cd3ba92d63e69e849e2200e0002a228d137f236b09ecd75.css">
<link rel="stylesheet" href="/styles.css"> <link rel="stylesheet" href="https://blog.privacynerd.de/css/gist.min.a751e8b0abe1ba8bc53ced52a38b19d8950fe78ca29454ea8c2595cf26aad5c0.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/header.min.75c7eb0e2872d95ff48109c6647d0223a38db52e2561dd87966eb5fc7c6bdac6.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/main.min.15870410d15d02abd22fb5ef00996f65a00d04b3a7435e9f83831c7c2298de88.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/menu.min.3c17467ebeb3d38663dce68f71f519901124fa5cbb4519b2fb0667a21e9aca39.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/pagination.min.bbb986dbce00a5ce5aca0504b7925fc1c581992a4bf57f163e5d69cc1db7d836.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/post.min.e6dddd258e64c83e05cec0cd49c05216742d42fc8ecbfbe6b67083412b609bd3.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/syntax.min.a0773cce9310cb6d8ed23e50f005448facf29a53001b57e038828daa466b25c0.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/terminal.min.e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/terms.min.b81791663c3790e738e571cdbf802312390d30e4b1d8dc9d814a5b5454d0ac11.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/terminal.css">
<link rel="shortcut icon" href="https://blog.privacynerd.de/favicon.png">
<link rel="apple-touch-icon" href="https://blog.privacynerd.de/apple-touch-icon.png">
<link rel="shortcut icon" href="/img/theme-colors/green.png">
<link rel="apple-touch-icon" href="/img/theme-colors/green.png">
<meta name="twitter:card" content="summary" /> <meta name="twitter:card" content="summary" />
@@ -52,24 +81,20 @@ Below you can read the original about from Radek
<meta property="og:locale" content="en" /> <meta property="og:locale" content="en" />
<meta property="og:type" content="article" /> <meta property="og:type" content="article" />
<meta property="og:title" content="About"> <meta property="og:title" content="About">
<meta property="og:description" content="Hello in a new age You can call me Mirus and I forked the original Terminal theme for Hugo, because Radek, the original creator of the theme stop the maintenance and archived the repo. <meta property="og:description" content="The intention Well, my Name is Benjamin, and Im mostly known as BlueFox. I love tinkering around with electronics, 3D printing stuff and working with wood, but I also do a bit of programming and am an avid self-hoster.
So I already pushed a few improvements that I did for my humble blog and I&rsquo;m going to add some more features in the future, also any contribution is welcome This is my personal blog (driven in my free time, all of this is just a hobby) about all the kinds of things I&rsquo;m doing DIY-wise. This includes:
Below you can read the original about from Radek posts about my DIY projects, about new experiences that I gather while tinkering, also an update here and there on existing projects and libraries of mine, and maybe something completely new! Just have a look around, perhaps you&rsquo;ll find something interesting!
" /> " />
<meta property="og:url" content="/en/about/" /> <meta property="og:url" content="https://blog.privacynerd.de/en/about/" />
<meta property="og:site_name" content="Privacynerd&#39;s blog" /> <meta property="og:site_name" content="Privacynerd&#39;s blog" />
<meta property="og:image" content="https://blog.privacynerd.de/og-image.png">
<meta property="og:image" content="/img/favicon/green.png">
<meta property="og:image:width" content="1200"> <meta property="og:image:width" content="1200">
<meta property="og:image:height" content="627"> <meta property="og:image:height" content="627">
<meta property="article:published_time" content="2025-04-05 20:14:29 &#43;0200 CEST" /> <meta property="article:published_time" content="2025-04-13 13:02:20 &#43;0200 CEST" />
@@ -81,27 +106,40 @@ Below you can read the original about from Radek
<style>
#banner {
width: 100%;
height: 2rem;
display: grid;
grid-template-columns: 1fr auto;
background: var(--accent);
}
#banner span {
display: flex;
align-items: center;
justify-content: center;
}
#banner a {
color: var(--background);
display: inline;
}
#banner > button {
padding: 0 5px 0 0;
margin: 0;
}
</style>
<div id="banner"><span><a href="https://git.privacynerd.de/git.privacynerd.de/blog.privacynerd.de">Construction site 🚧 | Work in progress</a></span></div>
</head> </head>
<body class="green"> <body>
<div id="banner">
<span>
<a href="https://git.privacynerd.de/git.privacynerd.de/blog.privacynerd.de">Construction site 🚧 | Work in progress</a>
</span>
</div>
<div class="container center">
<div class="container center headings--one-size">
<header class="header"> <header class="header">
<div class="header__inner"> <div class="header__inner">
@@ -124,19 +162,28 @@ Below you can read the original about from Radek
<li><a href="/en/posts">Posts</a></li> <li><a href="/en/tags">Tags</a></li>
<hr /> <hr />
<li>
<a href='/en/about/'>English</a>
</li>
<li>
<a href='/de/about/'>Deutsch</a> <li>
</li> <b>
<a href="/en/about/">English</a>
</b>
</li>
<li>
<a href="/de/about/">Deutsch</a>
</li>
</ul> </ul>
@@ -146,21 +193,32 @@ Below you can read the original about from Radek
<ul class="menu menu--desktop menu--language-selector"> <ul class="menu menu--desktop menu--language-selector">
<li class="menu__trigger">en&nbsp;</li> <li class="menu__trigger">en&nbsp;</li>
<li> <li>
<ul class="menu__dropdown"> <ul class="menu__dropdown">
<li><a href='/en/about/'>English</a></li>
<li><a href='/de/about/'>Deutsch</a></li> <li>
<b>
<a href="/en/about/">English</a>
</b>
</li>
<li>
<a href="/de/about/">Deutsch</a>
</li>
</ul> </ul>
</li> </li>
</ul> </ul>
</div> </div>
@@ -168,13 +226,12 @@ Below you can read the original about from Radek
<ul class="navigation-menu__inner menu--desktop"> <ul class="navigation-menu__inner menu--desktop">
<li><a href="/en/about" >About</a></li> <li><a href="/en/about" >About</a></li>
<li><a href="/en/posts" >Posts</a></li> <li><a href="/en/tags" >Tags</a></li>
@@ -190,45 +247,31 @@ Below you can read the original about from Radek
<article class="post"> <article class="post">
<h1 class="post-title"> <h1 class="post-title">
<a href="/en/about/">About</a> <a href="https://blog.privacynerd.de/en/about/">About</a>
</h1> </h1>
<div class="post-meta"><time class="post-date">2025-04-05</time><span class="post-reading-time">1 minute to read (190 words)</span> <div class="post-meta"><time class="post-date">2025-04-13</time><span class="post-reading-time">3 minutes to read (244 words)</span></div>
</div>
<div class="post-content"><div> <div class="post-content"><div>
<h1 id="hello-in-a-new-age">Hello in a new age<a href="#hello-in-a-new-age" class="hanchor" ariaLabel="Anchor">&#8983;</a> </h1> <h2 id="intention">The intention<a href="#intention" class="hanchor" ariaLabel="Anchor">#</a> </h2>
<p>You can call me Mirus and I forked the original Terminal theme for Hugo, because Radek, the original creator of the theme stop the maintenance and archived the repo.</p> <p>Well, my Name is Benjamin, and Im mostly known as BlueFox. I love tinkering around with electronics, 3D printing stuff and working with wood, but I also do a bit of programming and am an avid self-hoster.</p>
<p>So I already pushed a few improvements that I did for my humble blog and I&rsquo;m going to add some more features in the future, also any contribution is welcome</p> <p>This is my personal blog (driven in my free time, all of this is just a hobby) about all the kinds of things I&rsquo;m doing DIY-wise. This includes:</p>
<p>Below you can read the original about from Radek</p>
<blockquote>
<p>Hi there</p>
<p>My name is Radek and I&rsquo;m the author of this theme.
I made it to help you present your ideas easier.</p>
<p>We all know how hard is to start something on the web,
especially these days. You need to prepare a bunch of stuff,
configure them and when thats done — create the content.</p>
<p>This theme is pretty basic and covers all of the essentials.
All you have to do is start typing!</p>
<p>The theme includes:</p>
<ul> <ul>
<li><strong>5 duotone themes</strong>, <li>posts about my DIY projects,</li>
depending on your preferences (orange, red, blue, green, pink)</li> <li>about new experiences that I gather while tinkering,</li>
<li><a href="https://github.com/tonsky/FiraCode"><strong>Fira Code</strong></a> <li>also an update here and there on existing projects and libraries of mine,</li>
as default monospaced font. It&rsquo;s gorgeous!</li> <li>and maybe something completely new!</li>
<li><strong>really nice, custom duotone</strong> syntax highlighting based on
<a href="https://prismjs.com"><strong>PrismJS</strong></a></li>
<li>mobile friendly layout</li>
</ul> </ul>
<p>So, there you have it&hellip; enjoy!</p></blockquote> <p>Just have a <a href="/en/">look around</a>, perhaps you&rsquo;ll find something interesting!</p>
<p>Blubb.</p> <h2 id="the-logo">The Logo<a href="#the-logo" class="hanchor" ariaLabel="Anchor">#</a> </h2>
<p>The logo for this blog was created when I was bored at some point. I just loved the look of it and since then, I use it regularly for projects of mine. To be more precise, I drew it when I was maybe 11 years old, and the first time it was used was in a <code>Django + Python</code> project of mine, called “PiFi” - which is now also the name of a high-speed wifi upgrade kit and a hifi system, both based on Raspberry Pi&rsquo;s (but these are completely unrelated and couldn&rsquo;t have known my naming). Whatever.</p>
<h2 id="the-story-behind-it">The story behind it (and more)<a href="#the-story-behind-it" class="hanchor" ariaLabel="Anchor">#</a> </h2>
<p>The first post in this blog reveals a lot about the history and how the idea for this blog came about. If you are interested, you can read it <a href="https://blog.privacynerd.de/en/posts/how-it-all-began/">here</a>.</p>
</div></div> </div></div>
@@ -252,8 +295,8 @@ as default monospaced font. It&rsquo;s gorgeous!</li>
<div class="copyright copyright--user"> <div class="copyright copyright--user">
<span class="antidiscovery">© 2025 <i>L</i>B<i>P</i>e<i>o</i>n<i>i</i>j<i>n</i>a<i>c</i>m<i>G</i>i<i>N</i>n<i>U</i> <i>S</i>B<i>k</i>u<i>o</i>r<i>K</i>k<i>y</i>h<i>f</i>a<i>H</i>r<i>r</i>d<i>y</i>t</span> <span class="antidiscovery">© 2025 <i>L</i>B<i>P</i>e<i>o</i>n<i>i</i>j<i>n</i>a<i>c</i>m<i>G</i>i<i>N</i>n<i>U</i> <i>S</i>B<i>k</i>u<i>o</i>r<i>K</i>k<i>y</i>h<i>f</i>a<i>H</i>r<i>r</i>d<i>y</i>t</span>
<span style="margin-right: 10px">:: <a href="https://privacynerd.de/impressum?referrer=%2fen%2fabout%2f">Imprint</a></span> <span style="margin-right: 10px">:: <a href="https://privacynerd.de/impressum?referrer=https%3a%2f%2fblog.privacynerd.de%2fen%2fabout%2f">Imprint</a></span>
<span>:: <a href="https://github.com/mirus-ua/hugo-theme-re-terminal" target="_blank">Theme</a> by <a href="https://github.com/mirus-ua" target="_blank">Mirus</a> (customized)</span> <span>:: <a href="https://github.com/panr/hugo-theme-terminal" target="_blank">Theme</a> made by <a href="https://github.com/panr" target="_blank">panr</a> (customized)</span>
</div> </div>
</div> </div>
</footer> </footer>
@@ -267,13 +310,24 @@ as default monospaced font. It&rsquo;s gorgeous!</li>
<script src="https://swetrix.privacynerd.de/script.js" defer=""></script>
<script>
<script type="text/javascript" src="/js/banner.min.js"></script> document.addEventListener('DOMContentLoaded', function() {
swetrix.init('GyBjobBbBEEC', {apiURL: 'https://swetrix.privacynerd.de/api/log',})
swetrix.trackViews()
swetrix.trackErrors({
sampleRate: 1,
callback: undefined,
})
})
</script>
<noscript>
<img
src="https://swetrix.privacynerd.de/api/log/noscript?pid=GyBjobBbBEEC"
alt=""
referrerpolicy="no-referrer-when-downgrade"
/>
</noscript>

View File

@@ -11,30 +11,59 @@
<meta name="robots" content="noodp" /> <meta name="robots" content="noodp" />
<link rel="canonical" href="/en/categories/" /> <link rel="canonical" href="https://blog.privacynerd.de/en/categories/" />
<link rel="stylesheet" href="https://blog.privacynerd.de/css/buttons.min.86f6b4c106b6c6eb690ae5203d36b442c1f66f718ff4e8164fa86cf6c61ad641.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/code.min.4f0ccc8439f99bf7f7970298556b94011aabc1fcae743b6842fc3361a2da9ea3.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/fonts.min.5bb7ed13e1d00d8ff39ea84af26737007eb5051b157b86fc24487c94f3dc8bbe.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/footer.min.eb8dfc2c6a7eafa36cd3ba92d63e69e849e2200e0002a228d137f236b09ecd75.css">
<link rel="stylesheet" href="/styles.css"> <link rel="stylesheet" href="https://blog.privacynerd.de/css/gist.min.a751e8b0abe1ba8bc53ced52a38b19d8950fe78ca29454ea8c2595cf26aad5c0.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/header.min.75c7eb0e2872d95ff48109c6647d0223a38db52e2561dd87966eb5fc7c6bdac6.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/main.min.15870410d15d02abd22fb5ef00996f65a00d04b3a7435e9f83831c7c2298de88.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/menu.min.3c17467ebeb3d38663dce68f71f519901124fa5cbb4519b2fb0667a21e9aca39.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/pagination.min.bbb986dbce00a5ce5aca0504b7925fc1c581992a4bf57f163e5d69cc1db7d836.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/post.min.e6dddd258e64c83e05cec0cd49c05216742d42fc8ecbfbe6b67083412b609bd3.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/syntax.min.a0773cce9310cb6d8ed23e50f005448facf29a53001b57e038828daa466b25c0.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/terminal.min.e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/terms.min.b81791663c3790e738e571cdbf802312390d30e4b1d8dc9d814a5b5454d0ac11.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/terminal.css">
<link rel="shortcut icon" href="https://blog.privacynerd.de/favicon.png">
<link rel="apple-touch-icon" href="https://blog.privacynerd.de/apple-touch-icon.png">
<link rel="shortcut icon" href="/img/theme-colors/green.png">
<link rel="apple-touch-icon" href="/img/theme-colors/green.png">
<meta name="twitter:card" content="summary" /> <meta name="twitter:card" content="summary" />
@@ -50,12 +79,10 @@
<meta property="og:type" content="website" /> <meta property="og:type" content="website" />
<meta property="og:title" content="Categories"> <meta property="og:title" content="Categories">
<meta property="og:description" content="" /> <meta property="og:description" content="" />
<meta property="og:url" content="/en/categories/" /> <meta property="og:url" content="https://blog.privacynerd.de/en/categories/" />
<meta property="og:site_name" content="Privacynerd&#39;s blog" /> <meta property="og:site_name" content="Privacynerd&#39;s blog" />
<meta property="og:image" content="https://blog.privacynerd.de/og-image.png">
<meta property="og:image" content="/img/favicon/green.png">
<meta property="og:image:width" content="1200"> <meta property="og:image:width" content="1200">
<meta property="og:image:height" content="627"> <meta property="og:image:height" content="627">
@@ -73,29 +100,40 @@
<style>
#banner {
width: 100%;
height: 2rem;
display: grid;
grid-template-columns: 1fr auto;
background: var(--accent);
}
#banner span {
display: flex;
align-items: center;
justify-content: center;
}
#banner a {
color: var(--background);
display: inline;
}
#banner > button {
padding: 0 5px 0 0;
margin: 0;
}
</style>
<div id="banner"><span><a href="https://git.privacynerd.de/git.privacynerd.de/blog.privacynerd.de">Construction site 🚧 | Work in progress</a></span></div>
</head> </head>
<body class="green"> <body>
<div id="banner">
<span>
<a href="https://git.privacynerd.de/git.privacynerd.de/blog.privacynerd.de">Construction site 🚧 | Work in progress</a>
</span>
</div>
<div class="container center">
<div class="container center headings--one-size">
<header class="header"> <header class="header">
<div class="header__inner"> <div class="header__inner">
@@ -118,19 +156,28 @@
<li><a href="/en/posts">Posts</a></li> <li><a href="/en/tags">Tags</a></li>
<hr /> <hr />
<li>
<a href='/en/categories/'>English</a>
</li>
<li>
<a href='/de/categories/'>Deutsch</a> <li>
</li> <b>
<a href="/en/categories/">English</a>
</b>
</li>
<li>
<a href="/de/categories/">Deutsch</a>
</li>
</ul> </ul>
@@ -140,21 +187,32 @@
<ul class="menu menu--desktop menu--language-selector"> <ul class="menu menu--desktop menu--language-selector">
<li class="menu__trigger">en&nbsp;</li> <li class="menu__trigger">en&nbsp;</li>
<li> <li>
<ul class="menu__dropdown"> <ul class="menu__dropdown">
<li><a href='/en/categories/'>English</a></li>
<li><a href='/de/categories/'>Deutsch</a></li> <li>
<b>
<a href="/en/categories/">English</a>
</b>
</li>
<li>
<a href="/de/categories/">Deutsch</a>
</li>
</ul> </ul>
</li> </li>
</ul> </ul>
</div> </div>
@@ -162,13 +220,12 @@
<ul class="navigation-menu__inner menu--desktop"> <ul class="navigation-menu__inner menu--desktop">
<li><a href="/en/about" >About</a></li> <li><a href="/en/about" >About</a></li>
<li><a href="/en/posts" >Posts</a></li> <li><a href="/en/tags" >Tags</a></li>
@@ -203,8 +260,8 @@
<div class="copyright copyright--user"> <div class="copyright copyright--user">
<span class="antidiscovery">© 2025 <i>L</i>B<i>P</i>e<i>o</i>n<i>i</i>j<i>n</i>a<i>c</i>m<i>G</i>i<i>N</i>n<i>U</i> <i>S</i>B<i>k</i>u<i>o</i>r<i>K</i>k<i>y</i>h<i>f</i>a<i>H</i>r<i>r</i>d<i>y</i>t</span> <span class="antidiscovery">© 2025 <i>L</i>B<i>P</i>e<i>o</i>n<i>i</i>j<i>n</i>a<i>c</i>m<i>G</i>i<i>N</i>n<i>U</i> <i>S</i>B<i>k</i>u<i>o</i>r<i>K</i>k<i>y</i>h<i>f</i>a<i>H</i>r<i>r</i>d<i>y</i>t</span>
<span style="margin-right: 10px">:: <a href="https://privacynerd.de/impressum?referrer=%2fen%2fcategories%2f">Imprint</a></span> <span style="margin-right: 10px">:: <a href="https://privacynerd.de/impressum?referrer=https%3a%2f%2fblog.privacynerd.de%2fen%2fcategories%2f">Imprint</a></span>
<span>:: <a href="https://github.com/mirus-ua/hugo-theme-re-terminal" target="_blank">Theme</a> by <a href="https://github.com/mirus-ua" target="_blank">Mirus</a> (customized)</span> <span>:: <a href="https://github.com/panr/hugo-theme-terminal" target="_blank">Theme</a> made by <a href="https://github.com/panr" target="_blank">panr</a> (customized)</span>
</div> </div>
</div> </div>
</footer> </footer>
@@ -218,13 +275,24 @@
<script src="https://swetrix.privacynerd.de/script.js" defer=""></script>
<script>
<script type="text/javascript" src="/js/banner.min.js"></script> document.addEventListener('DOMContentLoaded', function() {
swetrix.init('GyBjobBbBEEC', {apiURL: 'https://swetrix.privacynerd.de/api/log',})
swetrix.trackViews()
swetrix.trackErrors({
sampleRate: 1,
callback: undefined,
})
})
</script>
<noscript>
<img
src="https://swetrix.privacynerd.de/api/log/noscript?pid=GyBjobBbBEEC"
alt=""
referrerpolicy="no-referrer-when-downgrade"
/>
</noscript>

View File

@@ -2,9 +2,10 @@
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel> <channel>
<title>Categories on Privacynerd&#39;s blog</title> <title>Categories on Privacynerd&#39;s blog</title>
<link>/en/categories/</link> <link>https://blog.privacynerd.de/en/categories/</link>
<description>Recent content in Categories on Privacynerd&#39;s blog</description> <description>Recent content in Categories on Privacynerd&#39;s blog</description>
<generator>Hugo -- gohugo.io</generator> <generator>Hugo</generator>
<language>en</language><atom:link href="/en/categories/index.xml" rel="self" type="application/rss+xml" /> <language>en</language>
<atom:link href="https://blog.privacynerd.de/en/categories/index.xml" rel="self" type="application/rss+xml" />
</channel> </channel>
</rss> </rss>

View File

@@ -12,30 +12,59 @@
<meta name="robots" content="noodp" /> <meta name="robots" content="noodp" />
<link rel="canonical" href="/en/" /> <link rel="canonical" href="https://blog.privacynerd.de/en/" />
<link rel="stylesheet" href="https://blog.privacynerd.de/css/buttons.min.86f6b4c106b6c6eb690ae5203d36b442c1f66f718ff4e8164fa86cf6c61ad641.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/code.min.4f0ccc8439f99bf7f7970298556b94011aabc1fcae743b6842fc3361a2da9ea3.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/fonts.min.5bb7ed13e1d00d8ff39ea84af26737007eb5051b157b86fc24487c94f3dc8bbe.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/footer.min.eb8dfc2c6a7eafa36cd3ba92d63e69e849e2200e0002a228d137f236b09ecd75.css">
<link rel="stylesheet" href="/styles.css"> <link rel="stylesheet" href="https://blog.privacynerd.de/css/gist.min.a751e8b0abe1ba8bc53ced52a38b19d8950fe78ca29454ea8c2595cf26aad5c0.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/header.min.75c7eb0e2872d95ff48109c6647d0223a38db52e2561dd87966eb5fc7c6bdac6.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/main.min.15870410d15d02abd22fb5ef00996f65a00d04b3a7435e9f83831c7c2298de88.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/menu.min.3c17467ebeb3d38663dce68f71f519901124fa5cbb4519b2fb0667a21e9aca39.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/pagination.min.bbb986dbce00a5ce5aca0504b7925fc1c581992a4bf57f163e5d69cc1db7d836.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/post.min.e6dddd258e64c83e05cec0cd49c05216742d42fc8ecbfbe6b67083412b609bd3.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/syntax.min.a0773cce9310cb6d8ed23e50f005448facf29a53001b57e038828daa466b25c0.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/terminal.min.e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/terms.min.b81791663c3790e738e571cdbf802312390d30e4b1d8dc9d814a5b5454d0ac11.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/terminal.css">
<link rel="shortcut icon" href="https://blog.privacynerd.de/favicon.png">
<link rel="apple-touch-icon" href="https://blog.privacynerd.de/apple-touch-icon.png">
<link rel="shortcut icon" href="/img/theme-colors/green.png">
<link rel="apple-touch-icon" href="/img/theme-colors/green.png">
<meta name="twitter:card" content="summary" /> <meta name="twitter:card" content="summary" />
@@ -51,17 +80,17 @@
<meta property="og:type" content="website" /> <meta property="og:type" content="website" />
<meta property="og:title" content="Privacynerd&#39;s blog"> <meta property="og:title" content="Privacynerd&#39;s blog">
<meta property="og:description" content="Blog of privacynerd" /> <meta property="og:description" content="Blog of privacynerd" />
<meta property="og:url" content="/en/" /> <meta property="og:url" content="https://blog.privacynerd.de/en/" />
<meta property="og:site_name" content="Privacynerd&#39;s blog" /> <meta property="og:site_name" content="Privacynerd&#39;s blog" />
<meta property="og:image" content="https://blog.privacynerd.de/og-image.png">
<meta property="og:image" content="/img/favicon/green.png">
<meta property="og:image:width" content="1200"> <meta property="og:image:width" content="1200">
<meta property="og:image:height" content="627"> <meta property="og:image:height" content="627">
<meta property="article:published_time" content="2025-04-13 12:54:00 &#43;0200 CEST" />
@@ -74,29 +103,40 @@
<style>
#banner {
width: 100%;
height: 2rem;
display: grid;
grid-template-columns: 1fr auto;
background: var(--accent);
}
#banner span {
display: flex;
align-items: center;
justify-content: center;
}
#banner a {
color: var(--background);
display: inline;
}
#banner > button {
padding: 0 5px 0 0;
margin: 0;
}
</style>
<div id="banner"><span><a href="https://git.privacynerd.de/git.privacynerd.de/blog.privacynerd.de">Construction site 🚧 | Work in progress</a></span></div>
</head> </head>
<body class="green"> <body>
<div id="banner">
<span>
<a href="https://git.privacynerd.de/git.privacynerd.de/blog.privacynerd.de">Construction site 🚧 | Work in progress</a>
</span>
</div>
<div class="container center">
<div class="container center headings--one-size">
<header class="header"> <header class="header">
<div class="header__inner"> <div class="header__inner">
@@ -119,19 +159,28 @@
<li><a href="/en/posts">Posts</a></li> <li><a href="/en/tags">Tags</a></li>
<hr /> <hr />
<li>
<a href='/en/'>English</a>
</li>
<li>
<a href='/de/'>Deutsch</a> <li>
</li> <b>
<a href="/en/">English</a>
</b>
</li>
<li>
<a href="/de/">Deutsch</a>
</li>
</ul> </ul>
@@ -141,21 +190,32 @@
<ul class="menu menu--desktop menu--language-selector"> <ul class="menu menu--desktop menu--language-selector">
<li class="menu__trigger">en&nbsp;</li> <li class="menu__trigger">en&nbsp;</li>
<li> <li>
<ul class="menu__dropdown"> <ul class="menu__dropdown">
<li><a href='/en/'>English</a></li>
<li><a href='/de/'>Deutsch</a></li> <li>
<b>
<a href="/en/">English</a>
</b>
</li>
<li>
<a href="/de/">Deutsch</a>
</li>
</ul> </ul>
</li> </li>
</ul> </ul>
</div> </div>
@@ -163,13 +223,12 @@
<ul class="navigation-menu__inner menu--desktop"> <ul class="navigation-menu__inner menu--desktop">
<li><a href="/en/about" >About</a></li> <li><a href="/en/about" >About</a></li>
<li><a href="/en/posts" >Posts</a></li> <li><a href="/en/tags" >Tags</a></li>
@@ -184,6 +243,14 @@
<div class="content"> <div class="content">
<div class="index-content framed">
<h1 id="hey-there-">Hey there! 👋</h1>
<p>My Name is Benjamin, and I&rsquo;m mostly known as <em>BlueFox</em>.</p>
<p>Welcome to this blog! I love tinkering around with electronics, 3D printing stuff and working with wood, but I also do a bit of <code>programming</code> and am an avid self-hoster. This is where I post about my activities from time to time.</p>
<p><strong>Just have a look around!</strong></p>
</div>
<div class="posts"> <div class="posts">
@@ -196,62 +263,60 @@
<article class="post on-list"> <article class="post on-list">
<h1 class="post-title"> <h2 class="post-title">
<a href="/en/posts/one-word/">English Test Post</a> <a href="https://blog.privacynerd.de/en/posts/diy-uv-pcb-exposure-unit/">Self-built UV exposure unit (LED)</a>
</h1> </h2>
<div class="post-meta"><time class="post-date">2025-04-05</time> <div class="post-meta"><time class="post-date">2025-04-14</time></div>
</div>
<img src="/en/posts/diy-uv-pcb-exposure-unit/cover.jpg"
class="post-cover"
alt="Self-built UV exposure unit (LED)"
title="Cover Image" />
<div class="post-content"> <div class="post-content">
<h1 id="justoneword">Justoneword</h1> <p>If you&rsquo;ve been around the (electronics) DIY scene for a while, at some point you can&rsquo;t avoid circuit boards (printed circuit boards/PCBs). The main advantages over soldering circuits by hand on perforated or strip-grid boards are that they are easier to replicate (once designed a circuit can theoretically be produced as often as you like) and that space can be used more efficiently (a board is almost always smaller than a soldered perforated grid board with the same circuit). Ultimately, devices with circuit boards also simply look more professional. There are certainly more advantages (and of course also disadvantages!), but I will not list them here for the sake of simplicity.</p>
</div> </div>
<div> <div>
<a class="read-more button" href="/en/posts/one-word/">Read more</a> <a class="read-more button inline" href="/en/posts/diy-uv-pcb-exposure-unit/">[Read more]</a>
</div> </div>
</article> </article>
<article class="post on-list"> <article class="post on-list">
<h1 class="post-title"> <h2 class="post-title">
<a href="/en/posts/test-post/">English Test Post</a> <a href="https://blog.privacynerd.de/en/posts/how-it-all-began/">How everything began - or: the first post!</a>
</h1> </h2>
<div class="post-meta"><time class="post-date">2025-04-05</time> <div class="post-meta"><time class="post-date">2025-04-13</time></div>
</div>
<img src="/en/posts/how-it-all-began/cover.png"
class="post-cover"
alt="How everything began - or: the first post!"
title="Cover Image" />
<div class="post-content"> <div class="post-content">
<h1 id="test-post-in-english">Test Post in English</h1> <h2 id="thinking">Initial considerations</h2>
<h2 id="lorem-ipsum">Lorem ipsum</h2> <p>I&rsquo;ve been thinking about how to write this post for a long time. What needs to be told, what is unimportant? A lot has to be left out for the sake of clarity, and I might not even remember some of it. In any case, I would like to use this article to explain my intention in starting this blog. But to explain that, you have to understand the origins.</p>
<h3 id="dolor-sit-amet">dolor sit amet</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim aeque doleamus animo, cum corpore dolemus, fieri tamen permagna accessio potest, si aliquod aeternum et infinitum impendere malum nobis opinemur. Quod idem licet transferre in voluptatem, ut postea variari voluptas distinguique possit, augeri amplificarique non possit. At etiam Athenis, ut e.</p>
</div> </div>
<div> <div>
<a class="read-more button" href="/en/posts/test-post/">Read more</a> <a class="read-more button inline" href="/en/posts/how-it-all-began/">[Read more]</a>
</div> </div>
</article> </article>
@@ -261,6 +326,7 @@
<div class="pagination__buttons"> <div class="pagination__buttons">
</div> </div>
</div> </div>
@@ -278,8 +344,8 @@
<div class="copyright copyright--user"> <div class="copyright copyright--user">
<span class="antidiscovery">© 2025 <i>L</i>B<i>P</i>e<i>o</i>n<i>i</i>j<i>n</i>a<i>c</i>m<i>G</i>i<i>N</i>n<i>U</i> <i>S</i>B<i>k</i>u<i>o</i>r<i>K</i>k<i>y</i>h<i>f</i>a<i>H</i>r<i>r</i>d<i>y</i>t</span> <span class="antidiscovery">© 2025 <i>L</i>B<i>P</i>e<i>o</i>n<i>i</i>j<i>n</i>a<i>c</i>m<i>G</i>i<i>N</i>n<i>U</i> <i>S</i>B<i>k</i>u<i>o</i>r<i>K</i>k<i>y</i>h<i>f</i>a<i>H</i>r<i>r</i>d<i>y</i>t</span>
<span style="margin-right: 10px">:: <a href="https://privacynerd.de/impressum?referrer=%2fen%2f">Imprint</a></span> <span style="margin-right: 10px">:: <a href="https://privacynerd.de/impressum?referrer=https%3a%2f%2fblog.privacynerd.de%2fen%2f">Imprint</a></span>
<span>:: <a href="https://github.com/mirus-ua/hugo-theme-re-terminal" target="_blank">Theme</a> by <a href="https://github.com/mirus-ua" target="_blank">Mirus</a> (customized)</span> <span>:: <a href="https://github.com/panr/hugo-theme-terminal" target="_blank">Theme</a> made by <a href="https://github.com/panr" target="_blank">panr</a> (customized)</span>
</div> </div>
</div> </div>
</footer> </footer>
@@ -293,13 +359,24 @@
<script src="https://swetrix.privacynerd.de/script.js" defer=""></script>
<script>
<script type="text/javascript" src="/js/banner.min.js"></script> document.addEventListener('DOMContentLoaded', function() {
swetrix.init('GyBjobBbBEEC', {apiURL: 'https://swetrix.privacynerd.de/api/log',})
swetrix.trackViews()
swetrix.trackErrors({
sampleRate: 1,
callback: undefined,
})
})
</script>
<noscript>
<img
src="https://swetrix.privacynerd.de/api/log/noscript?pid=GyBjobBbBEEC"
alt=""
referrerpolicy="no-referrer-when-downgrade"
/>
</noscript>

View File

@@ -2,84 +2,32 @@
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel> <channel>
<title>Privacynerd&#39;s blog</title> <title>Privacynerd&#39;s blog</title>
<link>/en/</link> <link>https://blog.privacynerd.de/en/</link>
<description>Recent content on Privacynerd&#39;s blog</description> <description>Recent content on Privacynerd&#39;s blog</description>
<generator>Hugo -- gohugo.io</generator> <generator>Hugo</generator>
<language>en</language> <language>en</language>
<lastBuildDate>Sat, 05 Apr 2025 22:48:12 +0200</lastBuildDate><atom:link href="/en/index.xml" rel="self" type="application/rss+xml" /> <lastBuildDate>Mon, 14 Apr 2025 08:11:20 +0200</lastBuildDate>
<atom:link href="https://blog.privacynerd.de/en/index.xml" rel="self" type="application/rss+xml" />
<item> <item>
<title>English Test Post</title> <title>Self-built UV exposure unit (LED)</title>
<link>/en/posts/one-word/</link> <link>https://blog.privacynerd.de/en/posts/diy-uv-pcb-exposure-unit/</link>
<pubDate>Sat, 05 Apr 2025 22:48:12 +0200</pubDate> <pubDate>Mon, 14 Apr 2025 08:11:20 +0200</pubDate>
<guid>https://blog.privacynerd.de/en/posts/diy-uv-pcb-exposure-unit/</guid>
<guid>/en/posts/one-word/</guid> <description>&lt;p&gt;If you&amp;rsquo;ve been around the (electronics) DIY scene for a while, at some point you can&amp;rsquo;t avoid circuit boards (printed circuit boards/PCBs). The main advantages over soldering circuits by hand on perforated or strip-grid boards are that they are easier to replicate (once designed a circuit can theoretically be produced as often as you like) and that space can be used more efficiently (a board is almost always smaller than a soldered perforated grid board with the same circuit). Ultimately, devices with circuit boards also simply look more professional. There are certainly more advantages (and of course also disadvantages!), but I will not list them here for the sake of simplicity.&lt;/p&gt;</description>
<description>&lt;h1 id=&#34;justoneword&#34;&gt;Justoneword&lt;/h1&gt;</description> </item>
<content>&lt;h1 id=&#34;justoneword&#34;&gt;Justoneword&lt;/h1&gt; <item>
</content> <title>How everything began - or: the first post!</title>
<link>https://blog.privacynerd.de/en/posts/how-it-all-began/</link>
<pubDate>Sun, 13 Apr 2025 15:10:20 +0200</pubDate>
<guid>https://blog.privacynerd.de/en/posts/how-it-all-began/</guid>
<description>&lt;h2 id=&#34;thinking&#34;&gt;Initial considerations&lt;/h2&gt;&#xA;&lt;p&gt;I&amp;rsquo;ve been thinking about how to write this post for a long time. What needs to be told, what is unimportant? A lot has to be left out for the sake of clarity, and I might not even remember some of it. In any case, I would like to use this article to explain my intention in starting this blog. But to explain that, you have to understand the origins.&lt;/p&gt;</description>
</item> </item>
<item> <item>
<title>About</title> <title>About</title>
<link>/en/about/</link> <link>https://blog.privacynerd.de/en/about/</link>
<pubDate>Sat, 05 Apr 2025 20:14:29 +0200</pubDate> <pubDate>Sun, 13 Apr 2025 13:02:20 +0200</pubDate>
<guid>https://blog.privacynerd.de/en/about/</guid>
<guid>/en/about/</guid> <description>&lt;h2 id=&#34;intention&#34;&gt;The intention&lt;/h2&gt;&#xA;&lt;p&gt;Well, my Name is Benjamin, and Im mostly known as BlueFox. I love tinkering around with electronics, 3D printing stuff and working with wood, but I also do a bit of programming and am an avid self-hoster.&lt;/p&gt;&#xA;&lt;p&gt;This is my personal blog (driven in my free time, all of this is just a hobby) about all the kinds of things I&amp;rsquo;m doing DIY-wise. This includes:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;posts about my DIY projects,&lt;/li&gt;&#xA;&lt;li&gt;about new experiences that I gather while tinkering,&lt;/li&gt;&#xA;&lt;li&gt;also an update here and there on existing projects and libraries of mine,&lt;/li&gt;&#xA;&lt;li&gt;and maybe something completely new!&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Just have a &lt;a href=&#34;https://blog.privacynerd.de/en/&#34;&gt;look around&lt;/a&gt;, perhaps you&amp;rsquo;ll find something interesting!&lt;/p&gt;</description>
<description>&lt;h1 id=&#34;hello-in-a-new-age&#34;&gt;Hello in a new age&lt;/h1&gt;
&lt;p&gt;You can call me Mirus and I forked the original Terminal theme for Hugo, because Radek, the original creator of the theme stop the maintenance and archived the repo.&lt;/p&gt;
&lt;p&gt;So I already pushed a few improvements that I did for my humble blog and I&amp;rsquo;m going to add some more features in the future, also any contribution is welcome&lt;/p&gt;
&lt;p&gt;Below you can read the original about from Radek&lt;/p&gt;</description>
<content>&lt;h1 id=&#34;hello-in-a-new-age&#34;&gt;Hello in a new age&lt;/h1&gt;
&lt;p&gt;You can call me Mirus and I forked the original Terminal theme for Hugo, because Radek, the original creator of the theme stop the maintenance and archived the repo.&lt;/p&gt;
&lt;p&gt;So I already pushed a few improvements that I did for my humble blog and I&amp;rsquo;m going to add some more features in the future, also any contribution is welcome&lt;/p&gt;
&lt;p&gt;Below you can read the original about from Radek&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hi there&lt;/p&gt;
&lt;p&gt;My name is Radek and I&amp;rsquo;m the author of this theme.
I made it to help you present your ideas easier.&lt;/p&gt;
&lt;p&gt;We all know how hard is to start something on the web,
especially these days. You need to prepare a bunch of stuff,
configure them and when thats done — create the content.&lt;/p&gt;
&lt;p&gt;This theme is pretty basic and covers all of the essentials.
All you have to do is start typing!&lt;/p&gt;
&lt;p&gt;The theme includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;5 duotone themes&lt;/strong&gt;,
depending on your preferences (orange, red, blue, green, pink)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/tonsky/FiraCode&#34;&gt;&lt;strong&gt;Fira Code&lt;/strong&gt;&lt;/a&gt;
as default monospaced font. It&amp;rsquo;s gorgeous!&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;really nice, custom duotone&lt;/strong&gt; syntax highlighting based on
&lt;a href=&#34;https://prismjs.com&#34;&gt;&lt;strong&gt;PrismJS&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;mobile friendly layout&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So, there you have it&amp;hellip; enjoy!&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Blubb.&lt;/p&gt;
</content>
</item> </item>
<item>
<title>English Test Post</title>
<link>/en/posts/test-post/</link>
<pubDate>Sat, 05 Apr 2025 20:14:29 +0200</pubDate>
<guid>/en/posts/test-post/</guid>
<description>&lt;h1 id=&#34;test-post-in-english&#34;&gt;Test Post in English&lt;/h1&gt;
&lt;h2 id=&#34;lorem-ipsum&#34;&gt;Lorem ipsum&lt;/h2&gt;
&lt;h3 id=&#34;dolor-sit-amet&#34;&gt;dolor sit amet&lt;/h3&gt;
&lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim aeque doleamus animo, cum corpore dolemus, fieri tamen permagna accessio potest, si aliquod aeternum et infinitum impendere malum nobis opinemur. Quod idem licet transferre in voluptatem, ut postea variari voluptas distinguique possit, augeri amplificarique non possit. At etiam Athenis, ut e.&lt;/p&gt;</description>
<content>&lt;h1 id=&#34;test-post-in-english&#34;&gt;Test Post in English&lt;/h1&gt;
&lt;h2 id=&#34;lorem-ipsum&#34;&gt;Lorem ipsum&lt;/h2&gt;
&lt;h3 id=&#34;dolor-sit-amet&#34;&gt;dolor sit amet&lt;/h3&gt;
&lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim aeque doleamus animo, cum corpore dolemus, fieri tamen permagna accessio potest, si aliquod aeternum et infinitum impendere malum nobis opinemur. Quod idem licet transferre in voluptatem, ut postea variari voluptas distinguique possit, augeri amplificarique non possit. At etiam Athenis, ut e.&lt;/p&gt;
&lt;h3 id=&#34;consectetur-adipiscing&#34;&gt;Consectetur adipiscing&lt;/h3&gt;
&lt;p&gt;Bonum sit aut quid iudicat, quo aut petat aut fugiat aliquid, praeter voluptatem et dolorem. Ad haec et quae vel aliter pararetur et qua etiam carere possent sine dolore tum in morbos gravis, tum in damna, tum in dedecora incurrunt, saepe etiam legum iudiciorumque poenis obligantur. Qui autem ita frui volunt voluptatibus, ut nulli propter eas consequantur dolores, et qui suum iudicium retinent, ne voluptate victi faciant id.&lt;/p&gt;
&lt;p&gt;Sumitur contra mortis timorem et constantia contra metum religionis et sedatio animi omnium rerum occultarum ignoratione sublata et moderatio natura cupiditatum generibusque earum explicatis, et, ut dixi, ad lineam, hunc naturalem esse omnium corporum motum. Deinde ibidem homo acutus, cum illud ocurreret, si omnia dixi hausta e fonte naturae, si tota oratio nostra omnem sibi fidem sensibus confirmat, id est in culpa qui officia deserunt mollitia animi, id est.&lt;/p&gt;
&lt;p&gt;Posuit. Ea scientia et verborum vis et natura orationis et consequentium repugnantiumve ratio potest perspici. Omnium autem rerum natura cognita levamur superstitione, liberamur mortis metu, non conturbamur ignoratione rerum, e qua ipsa horribiles existunt saepe formidines. Denique etiam morati melius erimus.&lt;/p&gt;
&lt;h2 id=&#34;delorean-ipsum&#34;&gt;DeLorean ipsum&lt;/h2&gt;
&lt;p&gt;That&amp;rsquo;s right. Huh? Go. Here you go, lady. There&amp;rsquo;s a quarter. Good morning.&lt;/p&gt;
&lt;p&gt;Marty, I always wear a suit to the office. You alright? It&amp;rsquo;s a board with wheels. Yeah. What the hell is this? Marty, you&amp;rsquo;re acting like you haven&amp;rsquo;t seen me in a week.&lt;/p&gt;
&lt;p&gt;Yes, yes, I&amp;rsquo;m George, George McFly, and I&amp;rsquo;m your density. I mean, I&amp;rsquo;m your destiny. It works, ha ha ha ha, it works. I finally invent something that works. Where the hell are they. That&amp;rsquo;s Strickland. Jesus, didn&amp;rsquo;t that guy ever have hair? Alright, alright, okay McFly, get a grip on yourself. It&amp;rsquo;s all a dream. Just a very intense dream. Woh, hey, listen, you gotta help me.&lt;/p&gt;
</content>
</item>
</channel> </channel>
</rss> </rss>

View File

@@ -1,10 +1,10 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
<title>/en/</title> <title>https://blog.privacynerd.de/en/</title>
<link rel="canonical" href="/en/"> <link rel="canonical" href="https://blog.privacynerd.de/en/">
<meta name="robots" content="noindex"> <meta name="robots" content="noindex">
<meta charset="utf-8"> <meta charset="utf-8">
<meta http-equiv="refresh" content="0; url=/en/"> <meta http-equiv="refresh" content="0; url=https://blog.privacynerd.de/en/">
</head> </head>
</html> </html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 462 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 646 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 760 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 360 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 236 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 324 KiB

View File

@@ -0,0 +1,435 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Self-built UV exposure unit (LED) :: Privacynerd&#39;s blog</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="If you&rsquo;ve been around the (electronics) DIY scene for a while, at some point you can&rsquo;t avoid circuit boards (printed circuit boards/PCBs). The main advantages over soldering circuits by hand on perforated or strip-grid boards are that they are easier to replicate (once designed a circuit can theoretically be produced as often as you like) and that space can be used more efficiently (a board is almost always smaller than a soldered perforated grid board with the same circuit). Ultimately, devices with circuit boards also simply look more professional. There are certainly more advantages (and of course also disadvantages!), but I will not list them here for the sake of simplicity.
" />
<meta name="keywords" content="" />
<meta name="robots" content="noodp" />
<link rel="canonical" href="https://blog.privacynerd.de/en/posts/diy-uv-pcb-exposure-unit/" />
<link rel="stylesheet" href="https://blog.privacynerd.de/css/buttons.min.86f6b4c106b6c6eb690ae5203d36b442c1f66f718ff4e8164fa86cf6c61ad641.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/code.min.4f0ccc8439f99bf7f7970298556b94011aabc1fcae743b6842fc3361a2da9ea3.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/fonts.min.5bb7ed13e1d00d8ff39ea84af26737007eb5051b157b86fc24487c94f3dc8bbe.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/footer.min.eb8dfc2c6a7eafa36cd3ba92d63e69e849e2200e0002a228d137f236b09ecd75.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/gist.min.a751e8b0abe1ba8bc53ced52a38b19d8950fe78ca29454ea8c2595cf26aad5c0.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/header.min.75c7eb0e2872d95ff48109c6647d0223a38db52e2561dd87966eb5fc7c6bdac6.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/main.min.15870410d15d02abd22fb5ef00996f65a00d04b3a7435e9f83831c7c2298de88.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/menu.min.3c17467ebeb3d38663dce68f71f519901124fa5cbb4519b2fb0667a21e9aca39.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/pagination.min.bbb986dbce00a5ce5aca0504b7925fc1c581992a4bf57f163e5d69cc1db7d836.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/post.min.e6dddd258e64c83e05cec0cd49c05216742d42fc8ecbfbe6b67083412b609bd3.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/syntax.min.a0773cce9310cb6d8ed23e50f005448facf29a53001b57e038828daa466b25c0.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/terminal.min.e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/terms.min.b81791663c3790e738e571cdbf802312390d30e4b1d8dc9d814a5b5454d0ac11.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/terminal.css">
<link rel="shortcut icon" href="https://blog.privacynerd.de/favicon.png">
<link rel="apple-touch-icon" href="https://blog.privacynerd.de/apple-touch-icon.png">
<meta name="twitter:card" content="summary" />
<meta name="twitter:site" content="" />
<meta name="twitter:creator" content="" />
<meta property="og:locale" content="en" />
<meta property="og:type" content="article" />
<meta property="og:title" content="Self-built UV exposure unit (LED)">
<meta property="og:description" content="If you&rsquo;ve been around the (electronics) DIY scene for a while, at some point you can&rsquo;t avoid circuit boards (printed circuit boards/PCBs). The main advantages over soldering circuits by hand on perforated or strip-grid boards are that they are easier to replicate (once designed a circuit can theoretically be produced as often as you like) and that space can be used more efficiently (a board is almost always smaller than a soldered perforated grid board with the same circuit). Ultimately, devices with circuit boards also simply look more professional. There are certainly more advantages (and of course also disadvantages!), but I will not list them here for the sake of simplicity.
" />
<meta property="og:url" content="https://blog.privacynerd.de/en/posts/diy-uv-pcb-exposure-unit/" />
<meta property="og:site_name" content="Privacynerd&#39;s blog" />
<meta property="og:image" content="https://blog.privacynerd.de/en/posts/diy-uv-pcb-exposure-unit/cover.jpg">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="627">
<meta property="article:published_time" content="2025-04-14 08:11:20 &#43;0200 CEST" />
<style>
#banner {
width: 100%;
height: 2rem;
display: grid;
grid-template-columns: 1fr auto;
background: var(--accent);
}
#banner span {
display: flex;
align-items: center;
justify-content: center;
}
#banner a {
color: var(--background);
display: inline;
}
#banner > button {
padding: 0 5px 0 0;
margin: 0;
}
</style>
<div id="banner"><span><a href="https://git.privacynerd.de/git.privacynerd.de/blog.privacynerd.de">Construction site 🚧 | Work in progress</a></span></div>
</head>
<body>
<div class="container center">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="/en">
<div class="logo">
Privacynerd&#39;s blog
</div>
</a>
</div>
<ul class="menu menu--mobile">
<li class="menu__trigger">Menu&nbsp;</li>
<li>
<ul class="menu__dropdown">
<li><a href="/en/about">About</a></li>
<li><a href="/en/tags">Tags</a></li>
<hr />
<li>
<b>
<a href="/en/posts/diy-uv-pcb-exposure-unit/">English</a>
</b>
</li>
<li>
<a href="/de/posts/diy-uv-pcb-exposure-unit/">Deutsch</a>
</li>
</ul>
</li>
</ul>
<ul class="menu menu--desktop menu--language-selector">
<li class="menu__trigger">en&nbsp;</li>
<li>
<ul class="menu__dropdown">
<li>
<b>
<a href="/en/posts/diy-uv-pcb-exposure-unit/">English</a>
</b>
</li>
<li>
<a href="/de/posts/diy-uv-pcb-exposure-unit/">Deutsch</a>
</li>
</ul>
</li>
</ul>
</div>
<nav class="navigation-menu">
<ul class="navigation-menu__inner menu--desktop">
<li><a href="/en/about" >About</a></li>
<li><a href="/en/tags" >Tags</a></li>
</ul>
</nav>
</header>
<div class="content">
<article class="post">
<h1 class="post-title">
<a href="https://blog.privacynerd.de/en/posts/diy-uv-pcb-exposure-unit/">Self-built UV exposure unit (LED)</a>
</h1>
<div class="post-meta"><time class="post-date">2025-04-14</time><span class="post-reading-time">11 minutes to read (1122 words)</span></div>
<img src="/en/posts/diy-uv-pcb-exposure-unit/cover.jpg"
class="post-cover"
alt="Self-built UV exposure unit (LED)"
title="Cover Image" />
<div class="table-of-contents">
<h2>
Table of Contents
</h2>
<nav id="TableOfContents">
<ul>
<li><a href="#the-housing">The housing</a></li>
<li><a href="#the-leds">The LEDs</a></li>
<li><a href="#the-lacquering">The lacquering</a></li>
<li><a href="#the-control-unit">The control unit</a></li>
<li><a href="#exposure-time">The practical part - Exposure time</a></li>
</ul>
</nav>
</div>
<div class="post-content"><div>
<p>If you&rsquo;ve been around the (electronics) DIY scene for a while, at some point you can&rsquo;t avoid circuit boards (printed circuit boards/PCBs). The main advantages over soldering circuits by hand on perforated or strip-grid boards are that they are easier to replicate (once designed a circuit can theoretically be produced as often as you like) and that space can be used more efficiently (a board is almost always smaller than a soldered perforated grid board with the same circuit). Ultimately, devices with circuit boards also simply look more professional. There are certainly more advantages (and of course also disadvantages!), but I will not list them here for the sake of simplicity.</p>
<p>Nowadays, it is very easy to have (self-)created circuit board designs manufactured, with relevant offers from China you pay no more than €5 for a simple circuit board with 2 sides. However, the price does not include the shipping costs and the time you have to wait for your PCBs. If you are not planning to produce several different designs a year, or only need a special circuit board once, you are well served with such offers. However, if you often need custom-made products, it can quickly become lucrative (even with the Chinese offers) to bring the production in-house. At the end of the day, it&rsquo;s fun and at least gives you the feeling of a little independence to make your own circuit boards!</p>
<p>So after dreaming of making my own circuit boards for some time, I have now gone one step further in the realization. There are various ways to produce printed circuit boards yourself. The cheapest method is probably exposing a blank PCB with a photopositive coating and then developing and finally etching the exposed areas. Building the etching device myself seemed too tricky, so I decided to buy a used <a href="https://gie-tec.de/produkt/aetzgeraete-fuer-platinen/">Ätzgerät 1 from pro-ma</a>, which was very cheap at €50. But what you can certainly build yourself is the <strong>UV exposure unit</strong>. There are different approaches here, I just want to share mine here (see e.g. <a href="https://www.all4hardware4u.de/platinenherstellung/belichtung/belichtungsgeraet-mit-uv-leds/">here</a> or also <a href="http://www.fdm-ware.de/UV-Led/">here</a> for the models where I found inspiration)!</p>
<p>So enough of the introduction, here&rsquo;s the really important stuff!</p>
<h2 id="the-housing">The housing<a href="#the-housing" class="hanchor" ariaLabel="Anchor">#</a> </h2>
<p>For the housing, I built a simple box from MDF boards with an additional small section at the front, where the control electronics will be located later.</p>
<figure><img src="/en/posts/diy-uv-pcb-exposure-unit/housing-raw-finished.jpg"
alt="This picture would show the finished housing with acrylic glass pane and some loose components."><figcaption>
<p>The finished housing with acrylic glass pane</p>
</figcaption>
</figure>
<p>In order for the UV light to reach the coated circuit board, the holder must be transparent. An acrylic glass pane does the job here. Important here: this <strong>must</strong> be UV-permeable, which is not necessarily the case with panes for the garden area! DIY store staff were unable to help in my case (it&rsquo;s a very specific requirement ;), but thanks to the internet you can find out more here. Sometimes it helps to look on the website of the DIY store of your choice for UV-permeable acrylic glass panes.</p>
<p>This pane must have a certain distance to the LEDs so that the light from the LEDs can be distributed evenly. You can of course calculate a perfect distance at - using the beam angle of the LEDs and the distance between the individual LEDs. However, I decided to use the simpler (and sometimes very inaccurate) rule of thumb here - but it worked.</p>
<figure><img src="/en/posts/diy-uv-pcb-exposure-unit/collage-plans.png"
alt="This picture shows sketches for the individual sides of the wooden box"><figcaption>
<p>Sketches of the box</p>
</figcaption>
</figure>
<h2 id="the-leds">The LEDs<a href="#the-leds" class="hanchor" ariaLabel="Anchor">#</a> </h2>
<p>UV LEDs are quite easy to obtain from electronics suppliers. For this DIY project, I decided to use 48 LEDs in 6 rows of 8 LEDs each on two 160x100mm perforated grid boards (yes, a strip grid is also possible and would have been easier :). Since UV LEDs have an operating voltage of about 3.0 to 3.3V and I wanted to use a 12V power supply, you need a resistor of 470 Ohm for each LED, which drops about 9V at 20mA (there are several good tutorials on the Internet for calculating LED series resistors).</p>
<p>As far as the exposure time is concerned, see below in the section <a href="/en/posts/diy-uv-pcb-exposure-unit/#exposure-time">“The practical part - Exposure time”</a>.</p>
<figure><img src="/en/posts/diy-uv-pcb-exposure-unit/led-distribution.png"
alt="Links: Sketch of the distribution of the LEDs, right: view of the LEDs from above"><figcaption>
<p>left: Sketch of the distribution of the LEDs; right: view of the LEDs from above</p>
</figcaption>
</figure>
<h2 id="the-lacquering">The lacquering<a href="#the-lacquering" class="hanchor" ariaLabel="Anchor">#</a> </h2>
<p>Chrome-effect paint was the paint of choice for the exposure area. So, I masked everything except for the exposure area (and of course
the LEDs!) and painted it several times according to the instructions on the spray can and left it to dry overnight.</p>
<figure><img src="/en/posts/diy-uv-pcb-exposure-unit/masked_for_painting.jpg"
alt="Picture of the box masked for painting"><figcaption>
<p>Box is masked, about to be painted!</p>
</figcaption>
</figure>
<figure><img src="/en/posts/diy-uv-pcb-exposure-unit/painted_inside.jpg"
alt="Picture of the inside of the painted box"><figcaption>
<p>It&rsquo;s shiny!</p>
</figcaption>
</figure>
<h2 id="the-control-unit">The control unit<a href="#the-control-unit" class="hanchor" ariaLabel="Anchor">#</a> </h2>
<p>Here I was faced with a choice: install a simple switch or a more complex logic with a timer function? The idea of the built-in timer seemed appealing - finally programming something hardware-related again. So I assembled a breadboard (perhaps the last one ever?!) with a Raspberry Pi Pico, relays, a connection for an LCD display and some control elements, programmed a small interface with my existing libraries and the electronics were ready! To be installed in the housing, it still needed a cover. All the necessary information can be found in the corresponding <a href="https://git.privacynerd.de/BlueFox/uv-belichter-software">git repository</a>!</p>
<figure><img src="/en/posts/diy-uv-pcb-exposure-unit/controller-on-dividing-wall.jpg"
alt="Picture of the control unit"><figcaption>
<p>The control unit</p>
</figcaption>
</figure>
<figure><img src="/en/posts/diy-uv-pcb-exposure-unit/front-panel.jpg"
alt="Image of the front panel with the LCD and control elements in operation"><figcaption>
<p>Front panel with LCD and control elements in operation</p>
</figcaption>
</figure>
<h2 id="exposure-time">The practical part - Exposure time<a href="#exposure-time" class="hanchor" ariaLabel="Anchor">#</a> </h2>
<p>So what does it look like in practice - the crucial question at the end. I would like to say that this is my first experience with manual PCB production. I used a simple blinky circuit (which was also my first completely self-made PCB design) for the tests.</p>
<figure><img src="/en/posts/diy-uv-pcb-exposure-unit/blinky-test-pcb.png"
alt="Side-by-side view of the printed circuit and the view on the computer with all layers"><figcaption>
<p>The test object&hellip;</p>
</figcaption>
</figure>
<p>So, my first experiences with the self-built exposure unit were mixed. The first attempt with 3 minutes exposure time went somewhat wrong. Specifically, no contours were visible even after 10-20 minutes in the developer at room temperature, and nothing happened even after 20-30 minutes etching. The second attempt was more promising, after 30 minutes of exposure the first contours could be seen after about 15 minutes of development, which actually disappeared during etching. After a few more attempts, I finally came up with the idea of working with two overlapping films instead of one, which meant that much less light came through the printed areas. The results were suddenly improving, and after a short time the circuit board was of sufficient quality for the circuit to function!</p>
<figure><img src="/en/posts/diy-uv-pcb-exposure-unit/first-diy-pcbs.jpg"
alt="Collage of the first manufacturing attempts up to the first functional PCB"><figcaption>
<p>&hellip;and the results</p>
</figcaption>
</figure>
<p>So: The exposure time for successful results is between 40 and 45 minutes. Admittedly, that&rsquo;s quite a long time, but it&rsquo;s sufficient for my first attempts and more than acceptable considering the price of a finished exposure unit (which can easily run into the hundreds) (the exposure unit costs around €30-50 in total - and building it was a lot of fun!). For shorter exposure times, I am considering increasing the number of LEDs afterwards. But that&rsquo;s a story for another time.</p>
</div></div>
<div class="pagination">
<div class="pagination__title">
<span class="pagination__title-h">Read other posts</span>
<hr />
</div>
<div class="pagination__buttons">
<a href="https://blog.privacynerd.de/en/posts/how-it-all-began/" class="button inline next">
[<span class="button__text">How everything began - or: the first post!</span>] &gt;
</a>
</div>
</div>
</article>
</div>
<footer class="footer">
<style>
.antidiscovery i { display: none; }
</style>
<div class="footer__inner">
<div class="copyright copyright--user">
<span class="antidiscovery">© 2025 <i>L</i>B<i>P</i>e<i>o</i>n<i>i</i>j<i>n</i>a<i>c</i>m<i>G</i>i<i>N</i>n<i>U</i> <i>S</i>B<i>k</i>u<i>o</i>r<i>K</i>k<i>y</i>h<i>f</i>a<i>H</i>r<i>r</i>d<i>y</i>t</span>
<span style="margin-right: 10px">:: <a href="https://privacynerd.de/impressum?referrer=https%3a%2f%2fblog.privacynerd.de%2fen%2fposts%2fdiy-uv-pcb-exposure-unit%2f">Imprint</a></span>
<span>:: <a href="https://github.com/panr/hugo-theme-terminal" target="_blank">Theme</a> made by <a href="https://github.com/panr" target="_blank">panr</a> (customized)</span>
</div>
</div>
</footer>
<script type="text/javascript" src="/bundle.min.js"></script>
<script src="https://swetrix.privacynerd.de/script.js" defer=""></script>
<script>
document.addEventListener('DOMContentLoaded', function() {
swetrix.init('GyBjobBbBEEC', {apiURL: 'https://swetrix.privacynerd.de/api/log',})
swetrix.trackViews()
swetrix.trackErrors({
sampleRate: 1,
callback: undefined,
})
})
</script>
<noscript>
<img
src="https://swetrix.privacynerd.de/api/log/noscript?pid=GyBjobBbBEEC"
alt=""
referrerpolicy="no-referrer-when-downgrade"
/>
</noscript>
</div>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 714 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 425 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 556 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 309 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 386 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

View File

@@ -0,0 +1,467 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>How everything began - or: the first post! :: Privacynerd&#39;s blog</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Initial considerations I&rsquo;ve been thinking about how to write this post for a long time. What needs to be told, what is unimportant? A lot has to be left out for the sake of clarity, and I might not even remember some of it. In any case, I would like to use this article to explain my intention in starting this blog. But to explain that, you have to understand the origins.
" />
<meta name="keywords" content="" />
<meta name="robots" content="noodp" />
<link rel="canonical" href="https://blog.privacynerd.de/en/posts/how-it-all-began/" />
<link rel="stylesheet" href="https://blog.privacynerd.de/css/buttons.min.86f6b4c106b6c6eb690ae5203d36b442c1f66f718ff4e8164fa86cf6c61ad641.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/code.min.4f0ccc8439f99bf7f7970298556b94011aabc1fcae743b6842fc3361a2da9ea3.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/fonts.min.5bb7ed13e1d00d8ff39ea84af26737007eb5051b157b86fc24487c94f3dc8bbe.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/footer.min.eb8dfc2c6a7eafa36cd3ba92d63e69e849e2200e0002a228d137f236b09ecd75.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/gist.min.a751e8b0abe1ba8bc53ced52a38b19d8950fe78ca29454ea8c2595cf26aad5c0.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/header.min.75c7eb0e2872d95ff48109c6647d0223a38db52e2561dd87966eb5fc7c6bdac6.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/main.min.15870410d15d02abd22fb5ef00996f65a00d04b3a7435e9f83831c7c2298de88.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/menu.min.3c17467ebeb3d38663dce68f71f519901124fa5cbb4519b2fb0667a21e9aca39.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/pagination.min.bbb986dbce00a5ce5aca0504b7925fc1c581992a4bf57f163e5d69cc1db7d836.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/post.min.e6dddd258e64c83e05cec0cd49c05216742d42fc8ecbfbe6b67083412b609bd3.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/syntax.min.a0773cce9310cb6d8ed23e50f005448facf29a53001b57e038828daa466b25c0.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/terminal.min.e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/css/terms.min.b81791663c3790e738e571cdbf802312390d30e4b1d8dc9d814a5b5454d0ac11.css">
<link rel="stylesheet" href="https://blog.privacynerd.de/terminal.css">
<link rel="shortcut icon" href="https://blog.privacynerd.de/favicon.png">
<link rel="apple-touch-icon" href="https://blog.privacynerd.de/apple-touch-icon.png">
<meta name="twitter:card" content="summary" />
<meta name="twitter:site" content="" />
<meta name="twitter:creator" content="" />
<meta property="og:locale" content="en" />
<meta property="og:type" content="article" />
<meta property="og:title" content="How everything began - or: the first post!">
<meta property="og:description" content="Initial considerations I&rsquo;ve been thinking about how to write this post for a long time. What needs to be told, what is unimportant? A lot has to be left out for the sake of clarity, and I might not even remember some of it. In any case, I would like to use this article to explain my intention in starting this blog. But to explain that, you have to understand the origins.
" />
<meta property="og:url" content="https://blog.privacynerd.de/en/posts/how-it-all-began/" />
<meta property="og:site_name" content="Privacynerd&#39;s blog" />
<meta property="og:image" content="https://blog.privacynerd.de/en/posts/how-it-all-began/cover.png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="627">
<meta property="article:published_time" content="2025-04-13 15:10:20 &#43;0200 CEST" />
<style>
#banner {
width: 100%;
height: 2rem;
display: grid;
grid-template-columns: 1fr auto;
background: var(--accent);
}
#banner span {
display: flex;
align-items: center;
justify-content: center;
}
#banner a {
color: var(--background);
display: inline;
}
#banner > button {
padding: 0 5px 0 0;
margin: 0;
}
</style>
<div id="banner"><span><a href="https://git.privacynerd.de/git.privacynerd.de/blog.privacynerd.de">Construction site 🚧 | Work in progress</a></span></div>
</head>
<body>
<div class="container center">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="/en">
<div class="logo">
Privacynerd&#39;s blog
</div>
</a>
</div>
<ul class="menu menu--mobile">
<li class="menu__trigger">Menu&nbsp;</li>
<li>
<ul class="menu__dropdown">
<li><a href="/en/about">About</a></li>
<li><a href="/en/tags">Tags</a></li>
<hr />
<li>
<b>
<a href="/en/posts/how-it-all-began/">English</a>
</b>
</li>
<li>
<a href="/de/posts/how-it-all-began/">Deutsch</a>
</li>
</ul>
</li>
</ul>
<ul class="menu menu--desktop menu--language-selector">
<li class="menu__trigger">en&nbsp;</li>
<li>
<ul class="menu__dropdown">
<li>
<b>
<a href="/en/posts/how-it-all-began/">English</a>
</b>
</li>
<li>
<a href="/de/posts/how-it-all-began/">Deutsch</a>
</li>
</ul>
</li>
</ul>
</div>
<nav class="navigation-menu">
<ul class="navigation-menu__inner menu--desktop">
<li><a href="/en/about" >About</a></li>
<li><a href="/en/tags" >Tags</a></li>
</ul>
</nav>
</header>
<div class="content">
<article class="post">
<h1 class="post-title">
<a href="https://blog.privacynerd.de/en/posts/how-it-all-began/">How everything began - or: the first post!</a>
</h1>
<div class="post-meta"><time class="post-date">2025-04-13</time><span class="post-reading-time">11 minutes to read (1097 words)</span></div>
<img src="/en/posts/how-it-all-began/cover.png"
class="post-cover"
alt="How everything began - or: the first post!"
title="Cover Image" />
<div class="table-of-contents">
<h2>
Table of Contents
</h2>
<nav id="TableOfContents">
<ul>
<li><a href="#thinking">Initial considerations</a></li>
<li><a href="#beginnings">How it all began</a></li>
<li><a href="#covid-19">COVID-19</a></li>
<li><a href="#until-now">Until now&hellip;</a></li>
<li><a href="#planned-content">Planned content</a></li>
</ul>
</nav>
</div>
<div class="post-content"><div>
<h2 id="thinking">Initial considerations<a href="#thinking" class="hanchor" ariaLabel="Anchor">#</a> </h2>
<p>I&rsquo;ve been thinking about how to write this post for a long time. What needs to be told, what is unimportant? A lot has to be left out for the sake of clarity, and I might not even remember some of it. In any case, I would like to use this article to explain my intention in starting this blog. But to explain that, you have to understand the origins.</p>
<h2 id="beginnings">How it all began<a href="#beginnings" class="hanchor" ariaLabel="Anchor">#</a> </h2>
<p>It all started when I was a 5th or 6th grade student (I can&rsquo;t remember exactly!) and started writing a batch script on a laptop for school. Yes, that&rsquo;s how it was, I admit - even if I don&rsquo;t know who or what drove me to do it. But I have a rough idea: I think it was a child&rsquo;s intrinsic motivation to find out how this computer in front of him works that made me do it.</p>
<p>Be that as it may, one of my “programs” looked something like this (yes, partially german):</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-batch" data-lang="batch"><span class="line"><span class="cl"><span class="p">@</span><span class="k">echo</span> off
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">echo</span> Herzlich Wilkommen , bitte Passwort eingeben
</span></span><span class="line"><span class="cl"><span class="k">color</span> 7b
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="p">:</span><span class="nl">PSWD</span>
</span></span><span class="line"><span class="cl"><span class="k">set/p</span> <span class="nv">x</span><span class="p">=</span>
</span></span><span class="line"><span class="cl"><span class="k">if</span> &#39;&#39;<span class="nv">%x%</span>&#39;&#39;<span class="o">==</span>&#39;&#39;sehrsicher&#39;&#39; <span class="k">goto</span> <span class="nl">openfile</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">pause</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="p">:</span><span class="nl">false</span><span class="c1"> </span>
</span></span><span class="line"><span class="cl"><span class="k">echo</span> Falsches Passwort , bitte erneut versuchen.
</span></span><span class="line"><span class="cl"><span class="k">color</span> 7c
</span></span><span class="line"><span class="cl"><span class="k">goto</span> <span class="nl">PWSD</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="p">:</span><span class="nl">openfile</span>
</span></span><span class="line"><span class="cl"><span class="k">echo</span> Passwort richtig , bitte &#39;Enter&#39; druecken!
</span></span><span class="line"><span class="cl"><span class="k">goto</span> <span class="nl">Video</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">pause</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="p">:</span><span class="nl">Video</span>
</span></span><span class="line"><span class="cl"><span class="k">echo</span> Wenn sie sich ein Video anschauen moechten , dann geben sie jetzt ,,Ja`` ein , wenn nicht dann einfach ,,Nein&#39;&#39;!
</span></span><span class="line"><span class="cl"><span class="k">color</span> 7b
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="p">:</span><span class="nl">PSWD</span>
</span></span><span class="line"><span class="cl"><span class="k">set/p</span> <span class="nv">x</span><span class="p">=</span>
</span></span><span class="line"><span class="cl"><span class="k">if</span> &#39;&#39;<span class="nv">%x%</span>&#39;&#39;<span class="o">==</span>&#39;&#39;Ja&#39;&#39; <span class="k">goto</span> <span class="nl">OpenVideo</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="p">:</span><span class="nl">false</span>
</span></span><span class="line"><span class="cl"><span class="k">goto</span> <span class="nl">exit</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="p">:</span><span class="nl">OpenVideo</span><span class="c1"> </span>
</span></span><span class="line"><span class="cl"><span class="k">start</span> C:\Users\<span class="p">&lt;</span>CENSORED<span class="p">&gt;</span>\<span class="p">&lt;</span>YES, REALLY<span class="p">&gt;</span>\
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="p">:</span><span class="nl">exit</span>
</span></span><span class="line"><span class="cl"><span class="k">exit</span>
</span></span></code></pre></div><p>Well, then my father gave me the book, a textbook on Python3<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>, and there was no turning back. I think I read the entire textbook when I was 11 or 12 years old. Anyway, at some point I switched to Linux (initially <a href="https://linuxmint.com/">Linux Mint</a>) - then came COVID-19<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup>.</p>
<h2 id="covid-19">COVID-19<a href="#covid-19" class="hanchor" ariaLabel="Anchor">#</a> </h2>
<p>For students, COVID-19 and the associated homeschooling and isolation meant one thing above all: a lot of time. They used it in different ways. I used it to pursue my new hobby intensively. During this time, I learned new programming languages like Java (partly for Minecraft plugins, <a href="https://git.privacynerd.de/BlueFox/MC-Plugins">here</a> you can find some), and even taught myself some C and assembler.</p>
<p>During this time, I was given my first Raspberry Pi - with far-reaching consequences. Because it led to me turning more and more to the hardware side. While I had previously written web apps with a database in <a href="https://www.djangoproject.com/">Django</a> or <a href="https://flask.palletsprojects.com/en/stable/">Flask</a> and Python, I was now programming simple blinking circuits, then at some point scripts that read sensor data and displayed it on a small OLED display (0.96&quot;) or switched the lamps in my room on and off at the touch of a button (because a light switch is not enough!). During this time, I also discovered for myself a 3D printer that had been sitting around almost unused for a long time.</p>
<figure><img src="/en/posts/how-it-all-began/esafep.jpg"
alt="Picture of the ESafeP - a wooden ”safe“ with its own software"><figcaption>
<p>The ”ESafeP“ - very stable!</p>
</figcaption>
</figure>
<p>Things got even more hardware-oriented with my first ESP32 - new ideas emerged and with them new projects. A self-built safe (super safe made of wood!) with my own <a href="https://git.privacynerd.de/BlueFox/ESafeP">software</a> was just as much a part of it as my own <a href="https://git.privacynerd.de/NetSpeaker/NetSpeaker">MP3 (and much more) player</a>. The 3D printer was also used time and again, as it is common in the DIY space - for example for the housing for my battery-powered <a href="https://git.privacynerd.de/BlueFox/losungepaper">ePaper showing the german ”Tageslosung“ - a verse from the bible for every day</a>.</p>
<figure><img src="/en/posts/how-it-all-began/netspeaker.jpg"
alt="Image of a finished, self-made NetSpeaker in housing - which is (not) just MP3 player."><figcaption>
<p>A NetSpeaker</p>
</figcaption>
</figure>
<figure><img src="/en/posts/how-it-all-began/losung-epaper.jpg"
alt="Image of the finished ePaper, which displays the current daily verse of the bibel (german ”Tageslosung“)"><figcaption>
<p>Losungs-ePaper (showing a biblical verse of the day)</p>
</figcaption>
</figure>
<p>All in all, the corona pandemic had opened up previously unimagined new spaces, at least for me, and also had its positive sides: During this time, I developed an interest in 3D printing, which could also be the subject of this blog.</p>
<h2 id="until-now">Until now&hellip;<a href="#until-now" class="hanchor" ariaLabel="Anchor">#</a> </h2>
<p>Well, not much has changed since then. At some point, self-hosting got a thing for me, and I also got to know wood as an exciting material (as already mentioned above). It&rsquo;s so cool to see what you can host yourself: your own file synchronization service, your <a href="https://git.privacynerd.de/">own Github</a>, media servers, and so on. Initially, everything ran on the aforementioned Raspberry Pi. Later, however, access from outside the home network was required, and since then many services have been running on a rented server.</p>
<figure><img src="/en/posts/how-it-all-began/gitea-a-self-hosted-github.png"
alt="Screenshot of my self-hosted instance of Gitea"><figcaption>
<p>A ”self-hosted Github“</p>
</figcaption>
</figure>
<p>Not so long ago, I had an idea: I was learning to etch circuit boards myself, and the information I was getting was mainly from other makers&rsquo; blogs. Thus, why not write about what you do? On the one hand, it could actually be that someone looking for it might find their way to the blog, but on the other hand, it&rsquo;s simply a useful way of documenting it, and maybe even something good for future job applications.</p>
<figure><img src="/en/posts/how-it-all-began/etching-station.jpg"
alt="Picture of a setup for manually etching circuit boards; in the picture: a self-built UV exposure unit, an etching unit and a container with caustic soda solution"><figcaption>
<p>The etching setup</p>
</figcaption>
</figure>
<p>So, I sat down and looked for ways to create a blog. Of course, it had to be self-hosted, and maybe even a bit self-made. This led me to <a href="https://gohugo.io/">Hugo</a> (Jekyll was also a consideration), a relatively simple (and very fast) static site generator that can generate websites from Markdown (among other things) and is therefore actually perfect for a blog. When choosing a theme, I initially wavered between ”create it myself“ and ”use an existing one“. Due to a lack of time and for reasons of simplicity, I ended up using an existing one, more precisely <a href="https://themes.gohugo.io/themes/hugo-theme-terminal/">Terminal</a>. Adapted to my needs, the blog itself was already finished relatively quickly<sup id="fnref:3"><a href="#fn:3" class="footnote-ref" role="doc-noteref">3</a></sup>. Now it&rsquo;s just waiting to be filled with content.</p>
<h2 id="planned-content">Planned content<a href="#planned-content" class="hanchor" ariaLabel="Anchor">#</a> </h2>
<p>What you plan at the beginning is rarely implemented in exactly the same way in the end - and that will probably also be the case with this blog, and that&rsquo;s a good thing. After all, everything evolves. But I&rsquo;m still going to write down what I plan to write on this blog in the future - because I do have a rough idea.</p>
<ul>
<li>about my DIY projects,</li>
<li>about new experiences that I gather while tinkering,</li>
<li>also an update here and there on existing projects and libraries of mine,</li>
<li>and maybe something completely new!</li>
</ul>
<p>To summarize: everything I do DIY-wise, I would like to share resp. document here (if there is time and inclination) - in the hope that maybe someone will ask themselves the exact same question as me or have a similar idea to mine, and then find their way to this blog.</p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p><a href="https://www.rheinwerk-verlag.de/python-3-das-umfassende-handbuch/">Python3 - das umfassende Handbuch von Johannes Ernesti und Peter Kaiser</a> (no advertising!)&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:2">
<p>Then again, it wasn&rsquo;t that easy, but for the sake of clarity I&rsquo;ve just simplified here.&#160;<a href="#fnref:2" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:3">
<p>&hellip;but, to be honest, a few afternoons (and evenings and nights) were spent on it.&#160;<a href="#fnref:3" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
</div></div>
<div class="pagination">
<div class="pagination__title">
<span class="pagination__title-h">Read other posts</span>
<hr />
</div>
<div class="pagination__buttons">
<a href="https://blog.privacynerd.de/en/posts/diy-uv-pcb-exposure-unit/" class="button inline prev">
&lt; [<span class="button__text">Self-built UV exposure unit (LED)</span>]
</a>
</div>
</div>
</article>
</div>
<footer class="footer">
<style>
.antidiscovery i { display: none; }
</style>
<div class="footer__inner">
<div class="copyright copyright--user">
<span class="antidiscovery">© 2025 <i>L</i>B<i>P</i>e<i>o</i>n<i>i</i>j<i>n</i>a<i>c</i>m<i>G</i>i<i>N</i>n<i>U</i> <i>S</i>B<i>k</i>u<i>o</i>r<i>K</i>k<i>y</i>h<i>f</i>a<i>H</i>r<i>r</i>d<i>y</i>t</span>
<span style="margin-right: 10px">:: <a href="https://privacynerd.de/impressum?referrer=https%3a%2f%2fblog.privacynerd.de%2fen%2fposts%2fhow-it-all-began%2f">Imprint</a></span>
<span>:: <a href="https://github.com/panr/hugo-theme-terminal" target="_blank">Theme</a> made by <a href="https://github.com/panr" target="_blank">panr</a> (customized)</span>
</div>
</div>
</footer>
<script type="text/javascript" src="/bundle.min.js"></script>
<script src="https://swetrix.privacynerd.de/script.js" defer=""></script>
<script>
document.addEventListener('DOMContentLoaded', function() {
swetrix.init('GyBjobBbBEEC', {apiURL: 'https://swetrix.privacynerd.de/api/log',})
swetrix.trackViews()
swetrix.trackErrors({
sampleRate: 1,
callback: undefined,
})
})
</script>
<noscript>
<img
src="https://swetrix.privacynerd.de/api/log/noscript?pid=GyBjobBbBEEC"
alt=""
referrerpolicy="no-referrer-when-downgrade"
/>
</noscript>
</div>
</body>
</html>

Some files were not shown because too many files have changed in this diff Show More