Compare commits

...

81 commits

Author SHA1 Message Date
haennetz ee7b4085ba Added analog telephony 2025-09-27 01:47:30 +02:00
haennetz c8efdb8722 updated dect page 2025-09-27 01:28:32 +02:00
missytake ae8b76b290
photo consent policy 2025-09-25 08:22:10 +02:00
missytake c18b579bec
Awareness: added phone number 2025-09-24 22:05:59 +02:00
missytake bb0979f046
sauna: bring towels 2025-09-23 16:42:34 +02:00
missytake 6098dc1a19
awareness: making obvious that contact persons can refuse stuff 2025-09-20 15:30:43 +02:00
missytake 4b1f39f240
added Engelsystem link 2025-09-07 19:05:47 +02:00
missytake 1bc8de7666
update awareness availablity 2025-09-07 18:58:43 +02:00
missytake a99609cf9b
reordering menu items 2025-09-05 19:54:34 +02:00
missytake 7ad26744fa
Added registration to menu 2025-09-05 19:53:23 +02:00
missytake 50f40bb8f4
Link to schedule in menu 2025-09-05 18:37:57 +02:00
missytake 2e3886db8a
Revert "Add Schedule widget"
This reverts commit 624d0d6f8f.
2025-09-05 18:36:02 +02:00
haennetz 624d0d6f8f Add Schedule widget 2025-08-31 21:06:47 +02:00
missytake d881bea8ce
menu links should be relative 2025-08-30 21:56:46 +02:00
missytake 60f4a7d7f5
fix english menu 2025-08-30 21:53:43 +02:00
missytake 208af35fca
show Awareness page in menu 2025-08-30 20:41:08 +02:00
missytake d28f9f0198
Fix awareness page 2025-08-30 20:35:11 +02:00
missytake fc4ed8b700
adjust baseURL in package.json as well 2025-08-30 20:34:18 +02:00
missytake 33074ac67e
Add awareness concept 2025-08-30 20:23:11 +02:00
v b9dbcac13a remove dead links (2) 2025-07-11 12:16:01 +02:00
v 5da03228ef remove dead links 2025-07-11 12:15:01 +02:00
v 14c2e9e6e2 adjust baseURL 2025-07-11 11:50:57 +02:00
v eea01672ec move site into 2025 subdirectory 2025-07-11 10:40:24 +02:00
missytake b3d45e5afc
remove save the date from last year, we don't need this page for 2025 2025-07-11 10:14:29 +02:00
missytake 84d6d35be5
don't assume people know what Matrix is 2025-07-11 10:02:02 +02:00
missytake f8dcb162a3
added CfP 2025-07-10 20:57:16 +02:00
missytake 955812666e
fix baseURL for deployment 2025-07-10 20:27:14 +02:00
missytake bd85322b85
Documented installation of hugo-extended 2025-07-10 20:21:11 +02:00
Kaybee c4ae8c6a2e
Updated Branding 2025-07-08 14:50:19 +02:00
Kaybee afb2effbc1
Drafted Posts, removed Links to Drafts and tldr Info for Planning 2025-07-08 14:01:34 +02:00
Kaybee 3394b4eee9
Updated Date and Name 2025-07-08 13:41:14 +02:00
Kaybee 10d25fd9b7
Fixed Awareness Card-Heading 2025-05-27 19:58:42 +02:00
Kaybee 318ad7088e
Enabled Unsafe Rendering 2025-05-27 19:49:42 +02:00
Kaybee c700283e39
Updated PaperMod to 5a4651783f 2025-05-27 19:48:08 +02:00
Kaybee 4f46786216
Added Hugo Version Info to Dev-Shell 2025-05-27 19:30:19 +02:00
Kaybee 2f1d11b4c3
Added Nix Development Shell (nix develop) 2025-05-27 18:57:52 +02:00
missytake 4f7319b2bd talk about OBS was cancelled 2023-09-17 16:28:25 +02:00
missytake 390a04edda Revert "added livestream link"
This reverts commit 5bf9868b81.
2023-09-17 16:27:12 +02:00
v 8ee0948d68 program changes 2023-09-17 15:25:49 +02:00
missytake f2f4a5d345 moved hagi's talk to sunday 2023-09-16 12:23:21 +02:00
missytake 2c5188a0cd added livestream link 2023-09-16 11:12:45 +02:00
missytake 1e2b096511 small addendum to corona concept 2023-09-16 09:37:03 +02:00
Nils Steinger 01d7872ba9 Add black/white logo version (e.g. for thermoprinters) 2023-09-16 06:56:53 +00:00
Nils Steinger 22d0ef7c6d Link to DECT info page 2023-09-15 21:34:12 +00:00
Nils Steinger befa737e15 Add DECT info pages 2023-09-15 21:34:12 +00:00
missytake 6e155dc63a added awareness phone numbers 2023-09-15 22:08:21 +02:00
missytake e697057ce7 moved lightning talks to 16:00 2023-09-15 21:34:53 +02:00
missytake e95cfad960 added corona concept to the FAQ 2023-09-15 21:27:54 +02:00
missytake cdc4df30e3 andi got renamed 2023-09-15 20:33:00 +02:00
missytake d1c3bcacce added andi's gig 2023-09-15 20:29:13 +02:00
missytake c1757fc937 björns talk was cancelled" 2023-09-15 20:07:24 +02:00
missytake 0f14bb2eab fixing english version of the awareness concept 2023-09-14 00:43:41 +02:00
0x90.space e1f85218f7 add english awareness page 2023-09-14 00:21:11 +02:00
missytake 38d0c295f6 awareness-konzept 2023-09-13 11:32:32 +02:00
0x90.space 6397357f5c replace bitcoin with obs talk 2023-09-10 10:30:25 +02:00
v 475d3def59 exchange workshops 2023-09-05 19:04:48 +02:00
v 5948237e4a fix dates 2023-09-03 21:47:12 +02:00
0x90.space b14fd34268 fix 2023-09-02 10:30:37 +02:00
v b9aa1285be add socialmedia stuff 2023-09-02 00:48:42 +02:00
missytake 68eab5fc48 party -> konzert 2023-09-01 23:38:58 +02:00
0x90.space 87dfa2ea06 fix 2023-09-01 22:19:28 +02:00
0x90.space a9be5cd93f fix 2023-09-01 20:32:29 +02:00
0x90.space 3f01b1d5ad fix 2023-09-01 20:30:42 +02:00
0x90.space e9ed652e11 fix 2023-09-01 20:28:23 +02:00
0x90.space 82d7ba8878 update 2023-09-01 13:03:48 +02:00
0x90.space f8da3a9b6e update 2023-09-01 12:55:32 +02:00
0x90.space 5f8fc7444a update 2023-09-01 08:42:32 +02:00
0x90.space 9e66b1ab43 add faq 2023-08-31 16:58:00 +02:00
0x90.space 7fa22762f2 move around 2023-08-31 16:28:59 +02:00
0x90.space d01b691e53 Add english 2023-08-31 16:24:51 +02:00
0x90.space 56f7d80e7c Add mpk 2023-08-31 15:25:12 +02:00
0x90.space e3f1295da9 Add lageplan 2023-08-31 15:13:14 +02:00
0x90.space 679c9a1b11 New program 2023-08-31 14:53:22 +02:00
0x90.space dd5ed66469 Fixup program content 2023-08-31 02:11:56 +02:00
0x90.space be07156505 Fixup program content 2023-08-31 02:10:22 +02:00
0x90.space 37f156e6b4 Add program content 2023-08-31 02:08:32 +02:00
v 37a511396c add deploy helper 2023-08-15 15:11:21 +02:00
v ee1e7a0ac1 Revert "no more language flags, name of language instead"
stop bike-shedding.

This reverts commit 83784ddcda.
2023-08-15 12:28:30 +02:00
Egg f6809d8fd0 no more language flags, name of language instead 2023-08-15 11:41:54 +02:00
Egg 1392de931c binary kitchen does not like nonbinary kitchen :/ 2023-07-31 20:01:24 +02:00
Egg 183e973f65 add note about DECT 2023-07-29 16:11:38 +02:00
106 changed files with 2384 additions and 651 deletions

3
.gitignore vendored
View file

@ -11,3 +11,6 @@ hugo.linux
# Temporary lock file while building
/.hugo_build.lock
/node_modules/
package-lock.json

View file

@ -8,9 +8,15 @@ git clone https://git.0x90.space/0x90/quellcode.0x90.space
cd quellcode.0x90.space/
hugo server
npm install
npm run start
```
This opens a server at http://localhost:1313/,
where you can preview the website.
It refreshes automatically.
## Deployment
Assuming you are in the root directory of this repository, and you have cloned
@ -19,7 +25,7 @@ deploy the website with:
```
# build website
hugo
npm run build
cd ../0x90-ansible/
# create ssh_config (only necessary once)
ansible-playbook -i inventory -t init site.yml

View file

@ -0,0 +1,88 @@
pub 4096R/E928D52245B28FDA88EF93F9513DF0F28DB4FD8B 2023-09-13
uid awareness@schleuder.0x90.space <awareness@schleuder.0x90.space>
uid awareness@schleuder.0x90.space <awareness-request@schleuder.0x90.space>
uid awareness@schleuder.0x90.space <awareness-owner@schleuder.0x90.space>
sub 4096R/E928D52245B28FDA88EF93F9513DF0F28DB4FD8B 2023-09-13
sub 4096R/D3F7D8D3CCE9AAC51A17EE403BD3140D0E3AF494 2023-09-13
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
rTgBD3SL0CtvAsJHDXyRWw==
=TwCu
-----END PGP PUBLIC KEY BLOCK-----

Binary file not shown.

Before

Width:  |  Height:  |  Size: 206 KiB

After

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

View file

@ -1,4 +1,4 @@
baseURL: https://quellcode.0x90.space/
baseURL: https://quellcode.0x90.space/2025/
languageCode: de
defaultContentLanguage: de
title: Quellcode
@ -7,72 +7,79 @@ theme: PaperMod
enableEmoji: true
enableRobotsTXT: true
markup:
goldmark:
renderer:
unsafe: true
languages:
de:
languageName: ":de:"
languageName: de
languageAltTitle: Deutsch
params:
homeInfoParams:
Title: Quellcode 16.9 - 17.9.2023, Heizhaus Nürnberg
Title: QueIIcode Return of DIY 26.9 - 28.9.2025, Heizhaus Nürnberg
Content: |
Alles Wichtige auf einen Blick:
>
> > Das Quellcode ist ein Event des Nürnberger Hackspaces [0x90.space](https://0x90.space/). Alle Menschen sind herzlich eingeladen sich bei Vorträgen, Workshops oder einfach so mit Menschen aus Hackspaces und Künstler*innen auszutauschen und neue Dinge auszuprobieren.
> - Wann? 16.9 - 17.9.2023
> > Das Quellcode geht in die zweite Runde! Es ist ein Event des Nürnberger Hackspaces [0x90.space](https://0x90.space/). Alle Menschen sind herzlich eingeladen sich bei Vorträgen, Workshops oder einfach so mit Menschen aus Hackspaces und Künstler*innen auszutauschen und neue Dinge auszuprobieren.
> - Wann? 26.9 - 28.9.2025
> - Wo? [Heizhaus Nürnberg](https://heizhaus.org/) ([Wandererstr. 89c, 90431 Nürnberg](https://osm.org/go/0D6zlBi~x-?way=37685652))
> - Anmeldungsformular (Teilnehmende, freiwillig): [Anmeldeformular](https://cryptpad.fr/form/#/2/form/view/qv48AVyeLO4-l9uIuTOeNdM7sGFR-zfTilvA8sX3-BY/)
> - Reiche einen Workshop oder Vortrag ein: [Einreichungsformular (offen bis zum 26.08.2023 00:00 CEST)](https://cryptpad.fr/form/#/2/form/view/KR2e9HvcShTc4RWnd+81jEEey8djEfu3f1dHROAO490/)
> - Matrix-Kanal: https://matrix.to/#/#quellcode:chat.heizhaus.org
> - Element/Matrix-Kanal: https://matrix.to/#/#quellcode:chat.heizhaus.org
> - Weitere [Kontaktmöglichkeiten](/posts/contact)
menu:
main:
- name: Über
url: /posts/helloworld
weight: 1
- name: Programm
url: /posts/program
weight: 10
- name: Anmeldung
url: /posts/registration
weight: 20
- name: Kontakt
url: /posts/contact
url: posts/contact
weight: 1000
- name: Awareness
url: posts/awareness
weight: 50
- name: Mithelfen
url: https://pad.riseup.net/p/quellcode-schichten
weight: 40
- name: Anmeldung
url: https://cryptpad.fr/form/#/2/form/view/ZeSZeBDGG7bdZZrkiPVveyCI1unDJocr-GTISXeMVLY/
weight: 30
- name: Programm
url: https://pretalx.0x90.space/quellcode-2/schedule/
weight: 20
en:
languageName: ":us:"
languageName: en
languageAltTitle: English
params:
homeInfoParams:
Title: Quellcode 16.9 - 17.9.2023, Heizhaus Nürnberg
Title: QueIIcode Return of DIY 26.9 - 28.9.2025, Heizhaus Nürnberg
Content: |
tldr;
>
> > Quellcode is an event of the Nuremberg Hackspace [0x90.space](https://0x90.space/). All people are invited to exchange ideas and try out new things with people from hackspaces and artists during talks, workshops or just for fun.
> - When? 16.9 - 17.9.2023
> > Quellcode goes into the Next Round! It is an event of the Nuremberg Hackspace [0x90.space](https://0x90.space/). All people are invited to exchange ideas and try out new things with people from hackspaces and artists during talks, workshops or just for fun.
> - When? 26.9 - 28.9.2025
> - Where? [Heizhaus Nürnberg](https://heizhaus.org/) ([Wandererstr. 89c, 90431 Nürnberg](https://osm.org/go/0D6zlBi~x-?way=37685652))
> - Registration form (Participants, voluntary): [Registration form](https://cryptpad.fr/form/#/2/form/view/qv48AVyeLO4-l9uIuTOeNdM7sGFR-zfTilvA8sX3-BY/)
> - Submit a workshop or talk: [Submission form (open until 08/26/2023 00:00 CEST)](https://cryptpad.fr/form/#/2/form/view/KR2e9HvcShTc4RWnd+81jEEey8djEfu3f1dHROAO490/)
> - Matrix-Channel: https://matrix.to/#/#quellcode:chat.heizhaus.org
> - Element/Matrix Channel: https://matrix.to/#/#quellcode:chat.heizhaus.org
> - Other [Contacts](/posts/contact)
menu:
main:
- name: About
url: /posts/helloworld
weight: 1
- name: Program
url: /posts/program
weight: 10
- name: Registration
url: /posts/registration
weight: 20
- name: Contact
url: /posts/contact
url: posts/contact
weight: 1000
- name: Awareness
url: posts/awareness
weight: 50
- name: Contribute
url: https://pad.riseup.net/p/quellcode-schichten
weight: 40
- name: Registration
url: https://cryptpad.fr/form/#/2/form/view/ZeSZeBDGG7bdZZrkiPVveyCI1unDJocr-GTISXeMVLY/
weight: 30
- name: Schedule
url: https://pretalx.0x90.space/quellcode-2/schedule/
weight: 20
params:
label:
icon: images/logo_peaceful_plus_text.png
iconHeight: 120
icon: images/queIIcode-logo2.png
iconHeight: 200
socialIcons:
- name: email
url: "mailto:people@schleuder.0x90.space"

BIN
content/posts/Lageplan.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 MiB

View file

@ -0,0 +1,116 @@
---
title: "Awareness- & Sauna Concept"
date: "2025-08-30"
---
Awareness is when we work together
to ensure that everyone is doing well
and has a good space to learn.
This space should be free of discrimination
none of us are perfect,
but let's at least try to be mindful of each other.
Instead of rigid rules of conduct,
it is important to make sure
that everyone feels comfortable
with how we interact with each other.
A few examples:
- If other people ask
that you refer to them using specific pronouns (he/him, she/her, they/them, etc.),
then you should respect that.
Example sentence: They left their mobile phone at my place, I'll have to give it back to them.
- If you notice
that your explanations on a technical topic are getting very long-winded
and everyone else in the group seems distracted,
it might be time to let someone else speak.
Why not ask a question?
- If you want to smoke,
it's best to ask those around you beforehand
if the smell of smoke bothers them;
if not, great.
Otherwise, perhaps stand 2-3 metres away.
- Be considerate when consuming other drugs (e.g. alcohol)
and only do so if you are sure
that everyone is currently fine with your consumption.
And even if you are intoxicated,
be mindful of how you handle it and of other people's boundaries.
- Don't take photos of other people without asking them.
- If someone asks you
to put your T-shirt back on,
please do so without argument.
The area for nudity is around the sauna.
- And if you are unsure about other things,
such as how to behave,
perhaps just ask.
- Tip: only ask if you can handle a no otherwise, it's better to leave it from the outset.
We have a quiet room where people can retreat to
if they need some time to themselves.
Talk to the contact persons (see below) if you need it.
## Sauna
There is also a sauna in the backyard
which will be started around 5 PM:
- Please take a rapid covid-19 test before using it (at least on the same day).
- Please bring a towel, we can't promise that we have enough for everyone.
- Please do not smoke in the sauna (including weed), and leave it as clean as you found it.
Please do not enter the sauna and chill-out area with your shoes on.
- Be mindful not to stare at others; reflect on your behaviour.
The sauna should be a place of relaxation for everyone.
- The sauna costs us about €5 per hour in electricity,
so please leave a donation.
## Contact persons
At Quellcode, there are also two or three trusted persons
whom you can approach or write to in the chat
if you need someone to talk to:
- If someone else has behaved inappropriately or discriminatorily towards you,
you can tell a contact person
what you need at that moment.
- This could mean, for example,
that the contact person
talks to the person in question
(in your presence or not)
and tells them that their behaviour was not okay;
that the person should make sure to stay away from you;
or that they are sent home.
- What you tell the contact person
will be kept confidential,
if you wish.
- The contact persons have boundaries as well,
and might not do everything you want from them;
but they will not take any steps against your will.
On site, we respond to calls **until midnight**, via telephone or DECT the fastest.
Before and after that, you can reach us by email,
but our capacity is limited.
- Phone: +4915781835716
- E-Mail: <awareness@schleuder.0x90.space>
- To reach us encrypted,
you can use our [PGP Key](https://quellcode.0x90.space/assets/awareness@schleuder.0x90.space.asc)
with the fingerprint: E928 D522 45B2 8FDA 88EF 93F9 513D F0F2 8DB4 FD8B
- DECT: 113
## Help out
We are still looking for people who volunteer as contact persons during the Quellcode.
Please send an email to
<awareness@schleuder.0x90.space> if you are interested.
What we expect from interested people:
- Self-awareness and reflection (you know yourself and your limits)
- Self-organisation and reliability
- Teamwork and conflict management skills
- Empathy
- Willingness to learn
- Openness and the ability to listen
- Sensitivity to discrimination, including structural discrimination
We look forward to getting to know you.

116
content/posts/awareness.md Normal file
View file

@ -0,0 +1,116 @@
---
title: "Awareness- & Sauna-Konzept"
date: "2025-08-30"
---
Awareness (dt. Achtsamkeit) ist,
wenn wir gemeinsam darauf achten,
dass es allen gut geht und alle einen guten Raum zum Lernen haben.
Dieser sollte frei von Diskriminierung sein -
wir sind alle nicht perfekt,
aber lasst uns zumindest probieren,
achtsam miteinander umzugehen.
Statt starren Verhaltensregeln,
gilt es im Miteinander darauf zu achten,
ob sich alle wohl damit fühlen.
Ein paar Beispiele:
- Wenn andere Leute darum gebeten haben,
dass man über sie mit bestimmten Pronomen (er/ihm, sie/ihr, es/deren/denen, mensch, ...) reden soll,
dann solltest du das respektieren.
Beispielsatz: „Es hat deren Handy bei mir vergessen, das muss ich denen mal zurückgeben.“
- Wenn du merkst,
dass deine Ausführungen zu einem technischen Thema sehr ausufern
und alle anderen in der Gruppe abwesend wirken,
ist es vielleicht Zeit jemand anders reden zu lassen.
Stell doch eine Frage?
- Wenn du rauchen willst,
dann frag am besten die Umstehenden vorher,
ob der Rauchgeruch sie stört;
wenn nicht, prima.
Ansonsten stell dich vielleicht 2,3 Meter weiter weg.
- Verhalte dich beim Konsum anderer Drogen (z.B. Alkohol) rücksichtsvoll
und tu dies nur wenn du dir sicher bist,
dass alle aktuell fine sind mit deinem Konsum.
Und auch wenn du konsumiert hast,
achte auf deinen Umgang damit und auf die Grenzen von anderen Personen.
- Mach bitte kein Fotos von anderen Menschen ohne sie zu fragen.
- Wenn dich jemand bittet,
dein T-Shirt wieder anzuziehen,
bitte tu das auch ohne Diskussion.
Für Nacktheit ist der Bereich um die Sauna da.
- Und wenn dir bei anderen Sachen nicht sicher bist,
wie du dich verhalten sollst,
frag vielleicht einfach nach.
- Tipp: frag nur, wenn du mit einem Nein klarkommst - sonst lass es lieber von vorneherein.
Wir haben einen Rückzugsraum, in den Menschen sich zurückziehen können,
wenn sie Zeit für sich brauchen, aus welchen Gründen auch immer.
Sprecht dafür die Vertrauenspersonen an (siehe unten).
## Sauna
Im Hinterhof gibt es auch eine Sauna,
die spätestens ab 17:00 Uhr benutzbar ist:
- Bitte mach an dem Tag einen Corona-Schnelltest, bevor du sie nutzt.
- Bitte bring dir ein eigenes Handtuch mit, wir können nicht versprechen dass genug da sind.
- Bitte in der Sauna nicht rauchen oder kiffen, und sie sauber hinterlassen.
Betretet die Sauna und den Chillout-Bereich bitte nicht mit Schuhen.
- Achte darauf, andere nicht anzustarren, analysiere dein Verhalten.
Die Sauna soll ein Raum der Erholung für alle sein.
- Die Sauna kostet uns ca. 5€ die Stunde an Strom,
bitte lasst doch eine Spende da.
## Ansprech-Personen
Beim Quellcode gibt es außerdem zwei-drei Vertrauenspersonen,
die du ansprechen oder im Chat anschreiben kannst,
wenn du jemanden zum Reden brauchst:
- Falls jemand anders sich dir gegenüber übergriffig oder diskriminierend verhalten hat,
könnt ihr (du und die Vertrauensperson) zusammen überlegen,
was du in dem Moment brauchst.
- Das kann z.B. bedeuten,
dass die Vertrauensperson
(in deiner Gegenwart oder nicht)
besagten Mensch darauf anspricht,
dass das Verhalten nicht okay war;
dass der Mensch darauf achten soll dir aus dem Weg zu gehen;
oder nach Hause geschickt wird.
- Was du den Vertrauenspersonen erzählst,
behalten sie für sich,
falls du das willst.
- Die Ansprech-Personen haben auch selbst Grenzen,
und sind vielleicht nicht zu allem bereit, was du dir wünschst.
Sie werden allerdings keine Schritte gegen deinen Willen unternehmen.
Vor Ort reagieren wir **bis 24:00 Uhr** auf Anrufe via Telefon oder DECT am schnellsten.
Danach und davor erreicht ihr uns per Email,
da sind unsere Kapazitäten allerdings begrenzt.
- Telefon: +4915781835716
- E-Mail: <awareness@schleuder.0x90.space>
- Um uns per verschlüsselter E-Mail zu schreiben,
gibt es diesen [PGP-Key](https://quellcode.0x90.space/assets/awareness@schleuder.0x90.space.asc)
mit folgendem Fingerprint: E928 D522 45B2 8FDA 88EF 93F9 513D F0F2 8DB4 FD8B
- DECT: 113
## Mitmachen
Wir suchen noch Menschen, die sich vorstellen können, während dem Quellcode
als Vertrauensperson ansprechbar zu sein. Meldet euch bitte per E-Mail bei
awareness@schleuder.0x90.space, wenn ihr Interesse habt.
Was wir uns von Interessierten wünschen:
- Selbsterfahrung und Reflexion (Du kennst dich und deine Grenzen)
- Selbstorganisation und Zuverlässigkeit
- Team- und Konfliktfähigkeit
- Einfühlungsvermögen
- Lernbereitschaft
- Offenheit und die Fähigkeit zuzuhören
- Diskriminierungssensibilität inklusive Anerkennung von struktureller Diskriminierung
Wir freuen uns, dich kennenzulernen.

29
content/posts/cfp.en.md Normal file
View file

@ -0,0 +1,29 @@
---
title: "Call for Participation"
date: "2025-07-10"
---
Whether you are sick or weird,
whether you're a punk or nerd,
whether you are straight or queer,
have no fear - the second Quellcode is here!
During the weekend from September 26-28
we turn the Heizhaus in Nuremberg
into a chaotic experimental lab - making, breaking,
hacking, slacking, stitching, sewing, clicking,
sowing, inking, gaming, piercing, flaming,
or what else you can think of.
There will be a lot of place to try things out,
for talks, exchange rounds, short idea pitches/lightning talks, or hands-on workshops.
Whether your contributions are rather
technical, political, or artsy is on you.
We need your creativity ;)
You can submit your ideas on <https://pretalx.0x90.space/quellcode-2/cfp>,
or if thats to complicated,
simply per mail to <workshops@schleuder.0x90.space>.
We are looking forward to your submissions!

27
content/posts/cfp.md Normal file
View file

@ -0,0 +1,27 @@
---
title: "Call for Participation"
date: "2025-07-10"
---
Ob komisch oder krank,
ob du Nerd bist oder Punk,
ob du straight bist oder queer,
have no fear - das zweite Quellcode ist hier!
Vom 26.-28. September machen wir ein Wochenende lang
das Heizhaus in Nürnberg zu einem
chaotischen Experimentier-Labor - maken, breaken,
hacken, slacken, sticken, nähen, klicken, säen,
tätowieren, zocken, piercen, rocken,
oder was euch noch so einfällt.
Da gibt es ne Menge Platz zum ausprobieren,
für Talks, Austauschrunden, kurze Ideen-Pitches/Lightning-Talks, oder Hands-on Workshops.
Ob eher technisch, politisch, oder künstlerisch liegt bei euch.
Auf eure Kreativität sind wir angewiesen ;)
Eure Ideen könnt ihr auf <https://pretalx.0x90.space/quellcode-2/cfp> eintragen,
oder wenn euch das zu kompliziert ist
gern auch per Mail bei <workshops@schleuder.0x90.space>.
Wir freuen uns auf eure Beiträge!

View file

@ -6,5 +6,5 @@ date: 2023-07-26T10:28:10+02:00
You can reach us over:
- Email: [people@schleuder.0x90.space](mailto:people@schleuder.0x90.space)
- Matrix: [https://matrix.to/#/#quellcode:chat.heizhaus.org](https://matrix.to/#/#quellcode:chat.heizhaus.org)
- Element/Matrix: [https://matrix.to/#/#quellcode:chat.heizhaus.org](https://matrix.to/#/#quellcode:chat.heizhaus.org)
- Imprint: [here](https://0x90.space/impressum/)

View file

@ -6,5 +6,5 @@ date: 2023-07-26T10:28:10+02:00
Ihr erreicht uns über:
- Email: [people@schleuder.0x90.space](mailto:people@schleuder.0x90.space)
- Matrix: [https://matrix.to/#/#quellcode:chat.heizhaus.org](https://matrix.to/#/#quellcode:chat.heizhaus.org)
- Element/Matrix: [https://matrix.to/#/#quellcode:chat.heizhaus.org](https://matrix.to/#/#quellcode:chat.heizhaus.org)
- Impressum: [hier](https://0x90.space/impressum/)

57
content/posts/faq.en.md Normal file
View file

@ -0,0 +1,57 @@
---
title: "FAQ"
ShowToc: True
date: 2023-07-26T10:28:10+02:00
draft: true
---
### Where can I stay for the night?
We have an [accommodation exchange](https://cryptpad.fr/code/#/2/code/edit/tObkSeg6EaOLiLNwUxsU5flt/) where you can offer and search for accommodation.
### How can I help? (shift schedule)
We have a [shift plan](https://cryptpad.fr/sheet/#/2/sheet/edit/o00OoL20ICKVtA1hL+KbAZyp/) and we are still looking for many helpers :)
### How do I get to the event location (Heizhaus)?
Address:
Heizhaus, Wandererstrasse 89, 90431 Nuremberg
With the Metro:
The event location is near the subway station Eberhardshof. When you get there, it is best to go out of the station in the direction of the "Netto" supermarket (you can see it in the distance) and then pass it on the right.
If you see the big tower, then the event location is directly below.
### Corona?
Please stay at home with a Corona Infection! Test yourself
Of course.
It's not long:
1. In the workshop room everyone wears masks,
so the presenter doesn't have to.
We bought some masks
for anyone who hasn't brought one anyway.
2. In the hackcenter we open two of the rolling doors
during the day.
If we have to close them for safety reasons,
we will let air in
once an hour.
Between 22:00 and 06:00 we need to close them unfortunately.
### Is There an Awareness Concept for the Event?
Of course,
you can find it [on this page](../awareness).
We are still looking for people
who can imagine taking a shift during the event;
please come to the awareness team meeting
Saturday at 11:00 in front of the rolling doors
to participate,
or send a mail to awareness@schleuder.0x90.space.
### I have a problem, who can I contact?
The quickest way to reach us is via the Element/Matrix channel: https://matrix.to/#/#quellcode:chat.heizhaus.org
There will be a responsible person on site ("running information desk"), who you will recognize by a safety vest or similar. You can contact them at any time.

48
content/posts/faq.md Normal file
View file

@ -0,0 +1,48 @@
---
title: "FAQ"
ShowToc: True
date: 2023-07-26T10:28:10+02:00
draft: true
---
### Wo kann ich übernachten?
Wir haben eine [Unterkunftsbörse](https://cryptpad.fr/code/#/2/code/edit/tObkSeg6EaOLiLNwUxsU5flt/) in dem ihr Unterkünfte anbieten und suchen könnt
### Wie kann ich mithelfen? (Schichtplan)
Wir haben einen [Schichtplan](https://cryptpad.fr/sheet/#/2/sheet/edit/o00OoL20ICKVtA1hL+KbAZyp/) und wir suchen noch viele Helfer\*innen :)
### Wie komme ich zum Heizhaus?
Adresse:
Heizhaus, Wandererstraße 89, 90431 Nürnberg
Mit der U-Bahn:
Das Heizhaus ist an der U-Bahnstation Eberhardshof. Wenn du da ankommst, am besten in Richtung Netto (sieht man in der Ferne) rausgehen aus der Station und dann rechts daran vorbei.
Wenn ihr den großen Quelleturm seht, dann ist das Heizhaus direkt darunter.
### Corona?
Bitte daheimbleiben mit Corona! Testet euch selbstständig Zuhause. Notfalls haben wir auch ein paar Schnelltests und Masken da.
1. Im Workshop-Raum: Maskenempfehlung
2. Der Hackcenter wird bis 22:00 durchgehend gut gelüftet sein.
### Gibt es für das Event ein Awareness-Konzept?
Selbstverständlich,
du findest es [hier auf dieser Seite](../awareness).
Es ist angelehnt an [das CCC-Awareness-Konzept](https://help.ccc.de/awareness/).
Wir suchen auch noch Menschen,
die sich vorstellen können,
Awareness-Schichten zu übernehmen;
kommt gerne Samstag um 11:00 Uhr
zum Awareness-Treffen vor den Rolltoren,
oder meldet euch bei awareness@schleuder.0x90.space.
### Ich habe ein Problem, an wen kann ich mich melden?
Am schnellsten erreichst du uns über den Element/Matrix-Kanal: https://matrix.to/#/#quellcode:chat.heizhaus.org
Vor Ort wird es eine verantwortliche Person ("laufendes Infodesk") geben, die du an einer Warnweste o.ä. erkennst. An die kannst du dich jederzeit wenden.

View file

@ -1,17 +0,0 @@
---
title: "Save the date!"
date: "2023-07-05"
---
The [0x90.space](https://0x90.space/) is inviting to the "Quellcode" at the [Heizhaus Nürnberg](https://heizhaus.org/) ([Wandererstr. 89c, 90431 Nürnberg](https://osm.org/go/0D6zlBi~x-?way=37685652)) from 9/16 - 9/17/2023.
The goal is to bring people from different backgrounds together to learn from each other.
An opportunity to share experiences and to be creative with technology (or without).
We have a talk/workshop room that fits about 20 people and a larger hackcenter with tables and chairs for 50-100 people where you can sit, talk and show your projects.
If you want to give a talk or workshop, [sign up by 08/26/2023 00:00 CEST](https://cryptpad.fr/form/#/2/form/view/KR2e9HvcShTc4RWnd+81jEEey8djEfu3f1dHROAO490/).
We don't just want to talk about technology and computers and welcome artistic or socio-political contributions as well.
There is a [general registration form](https://cryptpad.fr/form/#/2/form/view/qv48AVyeLO4-l9uIuTOeNdM7sGFR-zfTilvA8sX3-BY/) to estimate the number of people and the amount of food.
You are also welcome to come without registration, but don't eat so much then ... ;)
There will be a donation box on site.
We are looking forward to you and your contributions and if you have any questions or suggestions, feel free to write to [people@schleuder.0x90.space](mailto:people@schleuder.0x90.space) or join our [Matrix channel](https://matrix.to/#/#quellcode:chat.heizhaus.org)!

View file

@ -1,17 +0,0 @@
---
title: "Save the date!"
date: "2023-07-05"
---
Der [0x90.space](https://0x90.space/) lädt ein zum "Quellcode" vom 16.9 - 17.9.2023 im [Heizhaus Nürnberg](https://heizhaus.org/) ([Wandererstr. 89c, 90431 Nürnberg](https://osm.org/go/0D6zlBi~x-?way=37685652)).
Das Ziel ist Menschen aus verschiedenen Hintergründen zusammenzubringen, um voneinander zu lernen.
Eine Gelegenheit Erfahrungen auszutauschen und kreative Dinge mit Technik (oder auch ohne) anzustellen.
Wir haben einen Vortrags-/Workshopsraum in den ca 20 Leute passen und ein größeres Hackcenter mit Tischen und Stühlen für 50-100 Leute in dem ihr sitzen, reden und eure Projekte zeigen könnt.
Wenn ihr einen Vortrag oder Workshop halten wollt, [meldet euch bis zum 26.08.2023 00:00 CEST](https://cryptpad.fr/form/#/2/form/view/KR2e9HvcShTc4RWnd+81jEEey8djEfu3f1dHROAO490/).
Wir wollen nicht nur über Technik und Computer reden und freuen uns auch über künstlerische oder gesellschaftspolitische Beiträge.
Es gibt ein [allgemeines Anmeldeformular](https://cryptpad.fr/form/#/2/form/view/qv48AVyeLO4-l9uIuTOeNdM7sGFR-zfTilvA8sX3-BY/), um die Anzahl der Leute und die Menge an Essen abzuschätzen zu können.
Ihr könnt auch gerne ohne Anmeldung vorbeikommen, aber esst dann nicht so viel ... ;)
Vor Ort wird es eine Spendenkasse geben.
Wir freuen uns auf Euch und eure Beiträge und falls ihr Fragen oder Anregungen habt, schreibt gerne an [people@schleuder.0x90.space](mailto:people@schleuder.0x90.space) oder kommt in unseren [Matrix-Channel](https://matrix.to/#/#quellcode:chat.heizhaus.org)!

74
content/posts/phone.en.md Normal file
View file

@ -0,0 +1,74 @@
---
title: "Telephony"
date: 2025-09-27T01:14:10+02:00
---
# Analog telephone
We also offer analog telephony at the main ares of the location.
They can call and can be called by DECT/SIP phones.
Here are a list of the analog phone numbers:
| Phone number | location |
| --- | -----------|
| 9101 | Rolltor Bar|
| 9102 | Rolltor Hackcenter |
| 9103 | Rolltor Couche |
| 9111 | Brücke Couche |
| 9112 | Brücke Bar |
| 9113 | Brücke Sitzgruppe |
# DECT
## TL;DR
We are operating our own small telephony network with DECT and SIP connectivity during Quellcode.
(This is independent of Eventphone and µPOC, so will have different numbers and user accounts!)
Bring your DECT handsets! :)
## How do I use this?
### Phone book
You can find an up-to-date phone book at https://dect.site/.
### Dial-in from the public telephone network
The event telephone network can also be reached from outside.
**+49 941 38 3388 <extension>**
e.g. +49 941 38 3388 2000 for the POC hotline.
The dial-in number is a regular number from the Regensburg local network (area code 0941), so it can be reached at your respective landline rate.
### Register your own DECT/SIP device
This time our system supports self-registration for your DECT devices (although this is still somewhat experimental):
- Select the registration with a new base on your device (the exact name of the menu option depends on your device).
- Enter '0000' as the base PIN.
- Register at https://dect.site/ and create a number there.
- Call the registration "token" (which is displayed next to your number on https://dect.site/) with your DECT device.
- The call should end by itself immediately.
- After a few seconds your phone number is assigned to your device and you can start calling.
If you have any questions or problems, please contact us - see next point. :)
## Whom can I ask questions about this?
A few people got together to form the ["Arbeitsgruppe DECT-Experimente" (ADE)](https://dect.network/) and are tinkering with telephony for smaller events (for example VVoid.Camp, IGER, Quellcode, …) where Eventphone and µPOC are not available.
You can reach us at `ADE [at] dect.network` and during the event at the DECT number **2000** (from the public telephone network at local rates at [0941 383388 2000](tel:+499413833882000)).
## Who? What? Why?
- **Who?**
The "Arbeitsgruppe DECT-Experimente" ("DECT Experiments Working Group")! :)
We are not Eventphone or the µPOC, but have received a lot of inspiration and advice from both.
- **What?**
A small DECT network (same hardware as Eventphone, but less fancy automation so far). Depending on time available, also SIP connectivity and dial-in from the public telephone network.
- Why?
For the joy of experimenting, having fun with the device, and because we find that uncomplicated local telephony brings chaos events even closer together.
The idea for our own DECT setup — inspired by Eventphone, but built by ourselves — was born shortly before the first VVoidCamp (in 2020). There you can also find a bit more about our history: https://vviki.vvoid.camp/dect
Since then, several people have been working on different versions of the DECT experiments and we are trying to bring a bit of telephony to places where Eventphone and µPOC cannot be at the moment.

75
content/posts/phone.md Normal file
View file

@ -0,0 +1,75 @@
---
title: "Telephony"
date: 2025-09-27T01:14:10+02:00
---
# Analoge Telefone
Wir bieten an mehreren orten analoge Telefonie an.
Diese können sowohl DECT/SIP Telefone anrufen als auch von diesen angerufen werden.
Analoge Telefonnummern:
| Phone number | location |
| --- | -----------|
| 9101 | Rolltor Bar|
| 9102 | Rolltor Hackcenter |
| 9103 | Rolltor Couche |
| 9111 | Brücke Couche |
| 9112 | Brücke Bar |
| 9113 | Brücke Sitzgruppe |
# DECT
## TL;DR
Es gibt auf dem Quellcode ein eignes Telefonie-Netz mit DECT und SIP.
(Unabhängig von Eventphone und µPOC, also ggf. mit anderen Nummern und User-Accounts!)
Bringt eure DECT-Mobilteile mit! :)
## Wie benutze ich das?
### Telefonbuch
Ein aktuelles Telefonbuch findet ihr unter https://dect.site/.
### Dial-in aus dem öffentlichen Telefonnetz
Das Event-Telefonnetz ist auch von außen erreichbar.
**+49 941 38 3388 <Durchwahl>**
z.B. +49 941 38 3388 2000 für die POC-Hotline.
Die Dial-in-Nummer ist eine normale Nummer aus dem Ortsnetz Regensburg (Vorwahl 0941), ist also zu eurem jeweiligen Festnetzpreis erreichbar.
### Eigenes DECT-/SIP-Gerät anmelden
Unser System unterstützt diesmal Selbstregistrierung für eure DECT-Geräte (allerdings noch etwas experimentell):
- Wählt auf eurem Gerät die Anmeldung an einer neuen Basis aus (wie genau die Menüoption heißt, hängt von eurem Gerät ab)
- Gebt als Basis-PIN `0000` ein
- Registriert euch auf https://dect.site/ und legt dort eine Nummer an
- Ruft mit eurem DECT-Gerät das Anmelde-"Token" an, das https://dect.site/ zu eurer Nummer anzeigt
- Der Anruf sollte sich sofort von selbst beenden
- Nach wenigen Sekunden ist eurem Gerät eure Telefonnummer zugewiesen und ihr könnt lostelefonieren
Bei Fragen oder Problem kommt gerne auf uns zu — siehe nächster Punkt. :)
## Wem kann ich Fragen dazu stellen?
Ein paar Menschen haben sich zur ["Arbeitsgruppe DECT-Experimente" (ADE)](https://dect.network/) zusammengefunden und basteln Telefonie für kleinere Events (zum Beispiel das VVoid.Camp, die IGER, das Quellcode, …), auf denen Eventphone und µPOC nicht verfügbar sind.
Ihr erreicht uns unter `ADE [at] dect.network` und während des Events unter der DECT-Nummer **2000** (aus dem öffentlichen Telefonnetz zum Ortstarif unter [0941 383388 2000](tel:+499413833882000)).
## Wer? Was? Warum?
- **Wer?**
Die "Arbeitsgruppe DECT-Experimente"! :)
Wir sind nicht Eventphone, und auch nicht das µPOC, aber haben von beiden viel Inspiration und Beratung erhalten.
- **Was?**
Ein kleines DECT-Netz (selbe Hardware wie Eventphone, aber bisher weniger fancy Automatisierung). Je nach verfügbarer Zeit auch noch SIP-Konnektivität und Dial-in aus dem öffentlichen Telefonnetz.
- **Warum?**
Aus Experimentierfreude, Spaß am Gerät, und weil wir finden dass unkomplizierte lokale Telefonie Chaos-Events noch näher zusammenbringt.
Die Idee zu einem eigenen DECT-Setup — inspiriert von Eventphone, aber selbst nachgebaut — entstand kurz vor dem ersten VVoidCamp (2020). Dort findet ihr auch ein bisschen mehr zur Vorgeschichte: https://vviki.vvoid.camp/dect
Mittlerweile basteln mehrere Leute an unterschiedlichen Versionen der DECT-Experimente und wir bemühen uns, dort ein bisschen Telefonie hinzubringen, wo Eventphone und µPOC gerade nicht sein können.

View file

@ -1,22 +1,18 @@
---
title: "Programm"
title: "Program and Rooms"
date: 2023-07-26T09:58:25+02:00
draft: true
---
The program will be published here after 27.08.2023.
If you've always wanted to give a talk or workshop for about 20 people on a technical, socio-political, or artistic topic, feel free to submit your idea here:
## Site plan
[submission form (open until 08/26/2023 00:00 CEST)](https://cryptpad.fr/form/#/2/form/view/KR2e9HvcShTc4RWnd+81jEEey8djEfu3f1dHROAO490/)
![Site plan](/posts/Lageplan.png)
If you need inspiration on what to submit, feel free to check out the topics of talks and workshops that have been given at other Chaos events: [examples](https://media.ccc.de/)
In addition to our program in the lecture/workshop room, we will also have a hack center (aka a large room with tables and chairs) where you can sit, program and do mini-workshops without registration.
Examples:
- Blacksmithing for beginners
- Sewing for beginners
- Linux Kernel Development
- Container Security
## Program
If you are unsure, you can always reach us via [one of our contacts](/posts/contact) or just submit your talk in the submission form anyway and we will get back to you :)
- from 10 a.m. there is eternal breakfast in the "Brücke" (room in front of the lecture/workshop room)
We will also have a hackcenter (aka a big room with tiscs and chairs) where you can sit, program and give mini-workshops without registration.
Please check out the program at the [German page](/posts/program/).
There will be talks held in english, which are marked with [en].

View file

@ -1,24 +1,188 @@
---
title: "Programm"
title: "Programm und Räume"
date: 2023-07-26T09:58:25+02:00
draft: true
---
Das Programm wird hier veröffentlicht nach dem 27.08.2023.
## Lageplan
Wenn du schon immer einen Vortrag oder Workshop für ca 20 Leute halten wolltest über ein technisches, gesellschaftspolitisches oder künstlerisches Thema, reiche gerne deine Idee hier ein:
![Lageplan](/posts/Lageplan.png)
Neben unserem Programm im Vortrags/Workshopraum werden wir auch ein Hackcenter (aka einen großen Raum mit Tischen und Stühlen) haben, auf denen man sitzen, programmieren und Mini-Workshops ohne Anmeldung geben kann.
- ab 10 Uhr gibt es ewiges Frühstück in der "Brücke" (Raum vor dem Vortrags/Workshopraum)
## Programm Samstag 16.09.23
### Vortrags/Workshopraum:
- [10:00-10:15 Welcome speech (panda) [de/en]](#1000-1015welcome-speech-panda)
- [10:30-11:15 Eine Tour durch OpenBSD (vmann) [de]](#1030-1115eine-tour-durch-openbsd-vmann)
- [11:30-12:15 Linux Kernel Entwicklung (tammi) [de]](#1130-1215linux-kernel-entwicklung-tammi)
- 12:15-13:30 Pause / Umbau zu Workshopraum
- [13:30-15:30 Hands-on workshop: how to setup a mail server for anonymous Delta Chat accounts (missytake) [de/en]](#1330-1530hands-on-workshop-how-to-setup-a-mail-server-for-anonymous-delta-chat-accounts-missytake)
- [16:00-17:45 How to Anfragen nach dem Informationsfreiheitsgesetz/Umweltinformationsgesetz/u.ä. (frodo) [de]](#1600-1745-how-to-anfragen-nach-dem-informationsfreiheitsgesetzumweltinformationsgesetzu%C3%A4-frodo)
- [18:00-20:00 Abendessen [all]](#1800-2000abendessen)
- [20:00-21:30 Konzert (das_synthikat) [all]](#2000-2130konzert--das_synthikat)
- [21:30-23:00 Konzert (Modulandi) [all]](#2130-2300konzert--modulandi)
### Hackcenter
- [>= 10:00 Plant Station: Plant Swap and Propagation (panda) [de/en]](#plant-station-plant-swap-and-propagation-panda)
- [13:30-15:00 Workshop@Plant Station: Let's touch grass - How to house plant propagation and care (panda) [de/en]](#workshopplant-station-lets-touch-grass---how-to-house-plant-propagation-and-care-panda)
## Programm Sonntag 17.09.2023
### Vortrags/Workshopraum
- [10:00-11:45 Haecksen-Frühstück (e33a) [de/en]](#1000-1145haecksen-frühstück-e33a)
- [12:00-13:30 Pixel-Workshop - Zeichne deinen eigenen Pixel-Art-Avatar! (Mullana) [de/en]](#1200-1330pixel-workshop---zeichne-deinen-eigenen-pixel-art-avatar-mullana)
- [14:00-15:45 dezentrale Tools für Aktivismus & Organisierung (missytake) [de]](#1400-1545dezentrale-tools-für-aktivismus--organisierung-missytake)
- ~~16:00-16:45 Einführung in die Strömungssimulation mit OpenSource (OpenFOAM)~~
- ~~16:00-16:20 Was ist das Open Build Service und was hat es mit Kiwis zu tun?~~
- [16:30-17:00 Lightning talks (mpk) [de/en]](#1630-1700lightning-talks-mpk)
- [17:00-17:45 Powerpoint Karaoke (mpk) [de/en]](#1700-1745powerpoint-karaoke-mpk)
- [18:00-18:15 End speech [de/en]](#1800-1815end-speech)
- 18:15-00:00 Abbau / Cleanup
### Hackcenter
- [>= 10:00 Plant Station: Plant Swap and Propagation (panda) [de/en]](#plant-station-plant-swap-and-propagation-panda)
----------
----------
## Details Samstag 16.09.2023
### 10:00-10:15 Welcome speech (panda)
Begrüßung und Einführung
[en]
Welcome and Introduction
### 10:30-11:15 Eine Tour durch OpenBSD (vmann)
### 11:30-12:15 Linux Kernel Entwicklung (tammi)
Schon immer mal gefragt wie der Linux-Kernel funktioniert? Ich werde versuchen euch zu zeigen, wie ihr euch mit diesem Ungetüm beschäftigen könnt.
Klar der Kernel ist hauptsächlich in C geschrieben und es wird ein bisschen Rust-Code hinzukommen. Doch Kernel-Code ist doch ziemlich anders als normaler Userspace-Code. Der Kernel ist sehr komplex, deshalb zeige ich euch nach einer Übersicht, wie man sich auf einen Teilbereich fokussiert.
### 13:30-15:30 Hands-on workshop: how to setup a mail server for anonymous Delta Chat accounts (missytake)
In 2023, managing a mail server doesn't need to be hard. With mailcow, you get a one-in-all solution with a nice web interface. Alongside mailcow, we will install mailadm, a tool for creating anonymous Delta Chat accounts through simply scanning a QR code.
This workshop is based on this guide: https://delta.chat/en/serverguide
We bring servers and domains for trying it out, you bring some basic command line skills.
### 16:00-17:45 How to Anfragen nach dem Informationsfreiheitsgesetz/Umweltinformationsgesetz/u.ä. (frodo)
In diesem Workshop geht es darum, wie eins:
- die Plattform fragdenstaat.de benutzt
- die Plattform datenschmutz.de benutzt
- die gesetzlichen Grundlagen für Datenanfragen an den Staat
- die Frage, was für Infos wann nützlich sein könnten/wann sich Anfragen lohnen
- Tipps und Tricks rund um Datenanfragen
### 18:00-20:00 Abendessen
VAPCA - VeganAnarchoPunkCooking Action
Nices veganes Essen.
[en] Nice vegan food.
### 20:00-21:30 Konzert (das_synthikat)
https://das-synthikat.net/
We are 2 cyberpunks who like to record lo-fi music and try to make the best out of this dystopia.
### 21:30-23:00 Konzert (Modulandi)
8bit tek.
----------
----------
## Details Sonntag 17.09.2023
### 10:00-11:45 Haecksen-Frühstück (e33a)
https://wiki.haecksen.org/books/treffen-community/page/haecksenfruhstuck
Die Haecksen sind eine Gruppe aus Hacker\*innen, die sich als Frauen verstehen. Bei diesem Frühstück könnt ihr uns kennenlernen und ggf. Mitglied der Haecksen werden. Die Haecksen treffen sich hauptsächlich online, aber sind dabei eine Nürnberger Lokalgruppe zu gründen.
[en] The Haecksen are a group of hackers who see themselves as women. At this breakfast you can get to know us and possibly become a member of the Haecksen. The Haecksen mainly meet online, but are in the process of starting a Nuremberg local group.
### 12:00-13:30 Pixel-Workshop - Zeichne deinen eigenen Pixel-Art-Avatar! (Mullana)
Bitte Zeichengerät mitbringen. Tablet mit Stift ist toll, aber Laptop mit Maus geht auch. Touchpad ist nur für die ganz Harten. Ich werde verschiedene Programme zeigen, kann an freier Software aber Krita empfehlen.
[en]
Please bring drawing equipment. A tablet with a pen is great, but a laptop with a mouse works too. Touchpad is for the die-hards only. I will show various programs, but can recommend Krita for free software.
[Einreichungsformular (offen bis zum 26.08.2023 00:00 CEST)](https://cryptpad.fr/form/#/2/form/view/KR2e9HvcShTc4RWnd+81jEEey8djEfu3f1dHROAO490/)
### 14:00-15:45 dezentrale Tools für Aktivismus & Organisierung (missytake)
Tech-Monopole kontrollieren heute fast die ganze digitale und nicht-digitale Welt. Um dieser Dystopie etwas entgegenzustellen, müssen wir uns organisieren, ohne Leute auszuschließen. Das geht auch ohne Google, Facebook, und Dropbox - doch was sind die Alternativen?
Wenn Inspirationen brauchst was du einreichen kannst, schaue dir doch gerne die Themen der Vorträge und Workshops an, die auf anderen Chaos-Events gehalten worden sind: [Beispiele](https://media.ccc.de/)
### 16:30-17:00 Lightning talks (mpk)
Halte spontan deinen Talk über etwas das dich begeistert in 1-10 Minuten!
Beispiele:
- Schmieden für Anfänger*innen
- Nähen für Anfänger*innen
- Linux Kernel Entwicklung
- Container Security
Anmeldung online: https://cryptpad.fr/code/#/2/code/edit/qQGvYMCMM5QqZ3LkUm+8dalQ/
Wenn Ihr euch sich nicht sicher seid über ein Thema, fragt uns gerne jederzeit über unsere [Kontaktmöglichkeiten](/posts/contact) oder reicht euren Vortrag einfach über das Anmeldeformular ein und wir melden uns bei euch :)
Vor Ort wird auch irgendwo ein Zettel ausliegen für offline Anmeldungen :)
Wir werden auch ein Hackcenter (aka einen großen Raum mit Tiscen und Stühlen) haben, auf denen man sitzen, programmieren und Mini-Workshops ohne Anmeldung geben kann.
Anmeldeschluss: 5 Minuten vorher
[en]
Spontaneously hold your talk about something that excites you in 1-10 minutes!
Registration online: https://cryptpad.fr/code/#/2/code/edit/qQGvYMCMM5QqZ3LkUm+8dalQ/
There will also be a note on site somewhere for offline registrations :)
Registration deadline: 5 minutes before
### 17:00-17:45 Powerpoint Karaoke (mpk)
Was ist [Powerpoint Karaoke](https://de.wikipedia.org/wiki/Powerpoint-Karaoke)?
Zitat Wikipedia
"Das PowerPoint-Karaoke ist ein Ableger des klassischen Karaoke, bei dem die Teilnehmer keine Liedtexte nachsingen, sondern aus dem Stegreif einen Vortrag zu ihnen vorher nicht bekannten, zufällig ausgewählten Folien halten. Diese können entweder eigens erstellt werden, oder man verwendet Folien, die man im Internet gefunden hat. Es ist ein rhetorisches, präsentatorisches Trainingsspiel mit Unterhaltungscharakter. Teilweise wird es mittlerweile auch als Improtheater- oder Theatersport-Spiel verwendet. "
[en]
What is [Powerpoint Karaoke](https://en.wikipedia.org/wiki/Powerpoint-Karaoke)?
Quoting Wikipedia
"The PowerPoint karaoke is an offshoot of the classic karaoke, in which the participants do not sing lyrics, but give an impromptu presentation of previously unknown, randomly selected slides. These can either be created specially, or slides that found on the Internet. It is a rhetorical, presentational training game with an entertainment character. It is now also used as an improv or theater sport game."
### 18:00-18:15 End speech
Ein paar Abschlussworte
[en]
A few closing words
## Details other
### Plant Station: Plant Swap and Propagation (panda)
both days \>= 10:00 @ Hackcenter
Bring your plants and swap them!
It does not matter which size (e.g. one succulent leaf, one cutting, one big monstera, all fine).
Just put it there and take another plant or take a cutting of another plant sitting there.
We will have some pots and substrates there to try out.
We will also have some liquid plant feed concentrate that you can dilute, mix and take home (I accidentally bought more than I could ever use, SO TAKE IT, ITS FREE).
Please bring some kind of bottle to fill the fertilizer in.
If you have any plant or IT security-related questions, I will be there to answer them :)
### Workshop@Plant Station: Let's touch grass - How to house plant propagation and care (panda)
Saturday 13:30-15:00
- You want to get started with plants and you are overwhelmed?
- You want to build an automated plant watering system, but have no plant to build it for?
- Your plants just always die and you don't know why?
- You want to stick it to big plant* and get free cuttings?
I got you baby.
I will teach you the basics in house plant care and propagation with different types of plants.
I will bring plants, substrate and scissors and you will need to find a way to take your free cuttings back home.
\*you know, because your cuttings will be small plants hehe

View file

@ -1,6 +1,7 @@
---
title: "Registration"
date: 2023-07-26T10:22:25+02:00
draft: true
---
We want to estimate how many people will come and how much food we have to prepare, that is why we kindly ask you to fill out this registration form.

View file

@ -1,6 +1,7 @@
---
title: "Anmeldung"
date: 2023-07-26T10:22:25+02:00
draft: true
---
Damit wir ungefähr abschätzen können wie viele Leute kommen und wie viel Essen wir vorbereiten müssen, könnt ihr euch in diesem Formular anmelden:

4
deploy.sh Executable file
View file

@ -0,0 +1,4 @@
set -xe
npm run build
cd ../0x90-ansible
rsync -avz -e 'ssh -F ssh_config' ../quellcode.0x90.space/public/* www:/var/www/quellcode.0x90.space/2025/

27
flake.lock Normal file
View file

@ -0,0 +1,27 @@
{
"nodes": {
"nixpkgs": {
"locked": {
"lastModified": 1748190013,
"narHash": "sha256-R5HJFflOfsP5FBtk+zE8FpL8uqE7n62jqOsADvVshhE=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "62b852f6c6742134ade1abdd2a21685fd617a291",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"nixpkgs": "nixpkgs"
}
}
},
"root": "root",
"version": 7
}

31
flake.nix Normal file
View file

@ -0,0 +1,31 @@
{
description = "A Nix-flake-based Hugo development environment";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
};
outputs = { self , nixpkgs ,... }: let
system = "x86_64-linux";
in {
devShells."${system}".default = let
pkgs = import nixpkgs {
inherit system;
};
in pkgs.mkShell {
# create an environment with nodejs_18, pnpm, and yarn
packages = with pkgs; [
nodejs_24
nodePackages.pnpm
(yarn.override { nodejs = nodejs_24; })
hugo
rsync
];
shellHook = ''
echo "node `node --version`"
hugo version
'';
};
};
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 185 KiB

Binary file not shown.

BIN
gimp_files/ig_post.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

BIN
gimp_files/ig_post.xcf Normal file

Binary file not shown.

BIN
gimp_files/ig_story.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 539 KiB

BIN
gimp_files/ig_story.xcf Normal file

Binary file not shown.

BIN
gimp_files/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

BIN
gimp_files/logo.xcf Normal file

Binary file not shown.

BIN
gimp_files/logo_bw.xcf Normal file

Binary file not shown.

BIN
gimp_files/logo_bw_big.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

BIN
gimp_files/logo_bw_q.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

BIN
logo.xcf

Binary file not shown.

10
package.json Normal file
View file

@ -0,0 +1,10 @@
{
"dependencies": {
"hugo-extended": "^0.147.9"
},
"scripts": {
"build": "hugo --baseURL https://quellcode.0x90.space/2025/",
"build:preview": "hugo --baseURL https://quellcode.0x90.space --buildDrafts --buildFuture",
"start": "hugo server"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2 MiB

View file

@ -1,7 +1,7 @@
MIT License
Copyright (c) 2020 nanxiaobei and adityatelange
Copyright (c) 2021-2023 adityatelange
Copyright (c) 2021-2025 adityatelange
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View file

@ -3,7 +3,7 @@
<h4 align=center>☄️ Fast | ☁️ Fluent | 🌙 Smooth | 📱 Responsive</h4>
<br>
> Hugo PaperMod is a theme based on [hugo-paper](https://github.com/nanxiaobei/hugo-paper).
> Hugo PaperMod is a theme based on [hugo-paper](https://github.com/nanxiaobei/hugo-paper/tree/4330c8b12aa48bfdecbcad6ad66145f679a430b3).<br>
> The goal of this project is to add more features and customization to the og theme.
**Documentation** can be found here: [**📚 Wiki**](https://github.com/adityatelange/hugo-PaperMod/wiki)
@ -11,10 +11,12 @@
**ExampleSite** can be found here: [**exampleSite**](https://github.com/adityatelange/hugo-PaperMod/tree/exampleSite). Demo is built up with [exampleSite](https://github.com/adityatelange/hugo-PaperMod/tree/exampleSite) as source.
[![hugo-papermod](https://img.shields.io/badge/Hugo--Themes-@PaperMod-blue)](https://themes.gohugo.io/themes/hugo-papermod/)
[![Minimum Hugo Version](https://img.shields.io/static/v1?label=HUGO-version&message=>0.97.1&color=blue&logo=hugo)](https://github.com/gohugoio/hugo/releases/tag/v0.97.1)
[![Minimum Hugo Version](https://img.shields.io/static/v1?label=min-HUGO-version&message=>=v0.146.0&color=blue&logo=hugo)](https://github.com/gohugoio/hugo/releases/tag/v0.146.0)
[![Discord](https://img.shields.io/discord/971046860317921340?label=Discord&logo=discord)](https://discord.gg/ahpmTvhVmp)
[![GitHub](https://img.shields.io/github/license/adityatelange/hugo-PaperMod)](https://github.com/adityatelange/hugo-PaperMod/blob/master/LICENSE)
![code-size](https://img.shields.io/github/languages/code-size/adityatelange/hugo-PaperMod)
[![X (formerly Twitter) URL](https://img.shields.io/badge/-Share%20on%20X-gray?style=flat&logo=x)](https://x.com/intent/tweet/?text=Checkout%20Hugo%20PaperMod%20%E2%9C%A8%0AA%20fast,%20clean,%20responsive%20Hugo%20theme.&url=https://github.com/adityatelange/hugo-PaperMod&hashtags=Hugo,PaperMod)
---
@ -33,19 +35,20 @@
- [Profile Mode.](https://github.com/adityatelange/hugo-PaperMod/wiki/Features#profile-mode)
- Table of Content Generation (newer implementation).
- Archive of posts.
- Social Icons (home-info and profile-mode)
- Social Icons (home-info and profile-mode).
- Social-Media Share buttons on posts.
- Menu location indicator.
- Multilingual support. (with language selector)
- Taxonomies
- Multilingual support. (with language selector).
- Taxonomies.
- Cover image for each post (with Responsive image support).
- Light/Dark theme (automatic theme switch a/c to browser theme and theme-switch button).
- SEO Friendly.
- Multiple Author support.
- Search Page with Fuse.js
- Other Posts suggestion below a post
- Breadcrumb Navigation
- Code Block Copy buttons
- Breadcrumb Navigation.
- Code Block Copy buttons.
- Hugo's Chroma syntax highlighter.
- No webpack, nodejs and other dependencies are required to edit the theme.
Read Wiki For More Details => **[PaperMod - Features](https://github.com/adityatelange/hugo-PaperMod/wiki/Features)**
@ -100,4 +103,4 @@ Release ChangeLog has info about stuff added: **[Releases](https://github.com/ad
## Stargazers over time 📈
<kbd>[![Stargazers over time](https://starchart.cc/adityatelange/hugo-PaperMod.svg)](https://starchart.cc/adityatelange/hugo-PaperMod)</kbd>
[![Stargazers over time](https://starchart.cc/adityatelange/hugo-PaperMod.svg?background=%23ffffff00&axis=%23858585&line=%236b63ff)](https://starchart.cc/adityatelange/hugo-PaperMod)

View file

@ -27,12 +27,10 @@
margin-inline-start: auto;
}
.social-icons {
padding: 12px 0;
}
.social-icons a:not(:last-of-type) {
margin-inline-end: 12px;
.social-icons a {
display: inline-flex;
padding: 10px;
}
.social-icons a svg {

View file

@ -80,20 +80,23 @@
bottom: 0;
}
.entry-cover,
.entry-isdraft {
font-size: 14px;
.entry-hint {
color: var(--secondary);
}
.entry-hint-parent {
display: flex;
justify-content: space-between;
}
.entry-cover {
font-size: 14px;
margin-bottom: var(--gap);
text-align: center;
}
.entry-cover img {
border-radius: var(--radius);
pointer-events: none;
width: 100%;
height: auto;
}

View file

@ -19,6 +19,7 @@
font-size: 14px;
display: flex;
flex-wrap: wrap;
align-items: center;
}
.post-meta .i18n_list li {
@ -124,25 +125,24 @@
padding-inline-start: 10px;
}
.post-content dd ~ dd,
.post-content dt ~ dt {
.post-content dd~dd,
.post-content dt~dt {
margin-top: 10px;
}
.post-content table {
margin-bottom: 32px;
margin-bottom: var(--content-gap);
}
.post-content table th,
.post-content table:not(.highlighttable, .highlight table, .gist .highlight) td {
min-width: 80px;
padding: 12px 8px;
padding: 8px 5px;
line-height: 1.5;
border-bottom: 1px solid var(--border);
}
.post-content table th {
font-size: 14px;
text-align: start;
}
@ -156,12 +156,12 @@
.post-content .highlight:not(table) {
margin: 10px auto;
background: var(--hljs-bg) !important;
background: var(--code-block-bg) !important;
border-radius: var(--radius);
direction: ltr;
}
.post-content li > .highlight {
.post-content li>.highlight {
margin-inline-end: 0;
}
@ -200,11 +200,11 @@
}
.post-content pre code {
display: block;
display: grid;
margin: auto 0;
padding: 10px;
color: rgb(213, 213, 214);
background: var(--hljs-bg) !important;
background: var(--code-block-bg) !important;
border-radius: var(--radius);
overflow-x: auto;
word-break: break-all;
@ -240,14 +240,14 @@
text-align: center;
}
.post-content figure > figcaption {
.post-content figure>figcaption {
color: var(--primary);
font-size: 16px;
font-weight: bold;
margin: 8px 0 16px;
}
.post-content figure > figcaption > p {
.post-content figure>figcaption>p {
color: var(--secondary);
font-size: 14px;
font-weight: normal;
@ -267,7 +267,8 @@
.toc details summary {
cursor: zoom-in;
margin-inline-start: 20px;
margin-inline-start: 10px;
user-select: none;
}
.toc details[open] summary {
@ -280,8 +281,9 @@
}
.toc .inner {
margin: 0 20px;
padding: 10px 20px;
margin: 5px 20px 0;
padding: 0 10px;
opacity: 0.9;
}
.toc li ul {
@ -296,10 +298,18 @@
margin-top: 56px;
}
.post-footer>* {
margin-bottom: 10px;
}
.post-tags {
display: flex;
flex-wrap: wrap;
gap: 10px;
}
.post-tags li {
display: inline-block;
margin-inline-end: 3px;
margin-bottom: 5px;
}
.post-tags a,
@ -312,8 +322,7 @@
.post-tags a {
display: block;
padding-inline-start: 14px;
padding-inline-end: 14px;
padding: 0 14px;
color: var(--secondary);
font-size: 14px;
line-height: 34px;
@ -326,15 +335,16 @@
}
.share-buttons {
margin: 14px 0;
padding-inline-start: var(--radius);
padding: 10px;
display: flex;
justify-content: center;
overflow-x: auto;
gap: 10px;
}
.share-buttons li,
.share-buttons a {
margin-top: 10px;
display: inline-flex;
}
.share-buttons a:not(:last-of-type) {
@ -355,10 +365,8 @@ h6:hover .anchor {
}
.paginav {
margin: 10px 0;
display: flex;
line-height: 30px;
border-radius: var(--radius);
}
.paginav a {

View file

@ -10,19 +10,20 @@
text-align: center;
}
.profile .profile_inner h1 {
padding: 12px 0;
.profile .profile_inner {
display: flex;
flex-direction: column;
align-items: center;
gap: 10px;
}
.profile img {
display: inline-table;
border-radius: 50%;
}
.buttons {
flex-wrap: wrap;
max-width: 400px;
margin: 0 auto;
}
.button {

View file

@ -1,6 +1,6 @@
/*
PaperMod v7
PaperMod v8+
License: MIT https://github.com/adityatelange/hugo-PaperMod/blob/master/LICENSE
Copyright (c) 2020 nanxiaobei and adityatelange
Copyright (c) 2021-2023 adityatelange
Copyright (c) 2021-2025 adityatelange
*/

View file

@ -7,6 +7,8 @@
html {
-webkit-tap-highlight-color: transparent;
overflow-y: scroll;
-webkit-text-size-adjust: 100%;
text-size-adjust: 100%;
}
a,
@ -20,12 +22,10 @@ h5,
h6 {
color: var(--primary);
}
@font-face {
font-family: 'Space Mono';
src: url(/fonts/SpaceMono-Regular.ttf);
}
body {
/*font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;*/
font-family: 'Space Mono', sans-serif;

View file

@ -12,7 +12,7 @@
--secondary: rgb(108, 108, 108);
--tertiary: rgb(214, 214, 214);
--content: rgb(31, 31, 31);
--hljs-bg: rgb(28, 29, 33);
--code-block-bg: rgb(28, 29, 33);
--code-bg: rgb(245, 245, 245);
--border: rgb(238, 238, 238);
}
@ -24,7 +24,7 @@
--secondary: rgb(155, 156, 157);
--tertiary: rgb(65, 66, 68);
--content: rgb(196, 196, 197);
--hljs-bg: rgb(46, 46, 51);
--code-block-bg: rgb(46, 46, 51);
--code-bg: rgb(55, 56, 62);
--border: rgb(51, 51, 51);
}

View file

@ -36,6 +36,12 @@
}
}
@media screen and (max-width: 340px) {
.share-buttons {
justify-content: unset;
}
}
@media (prefers-reduced-motion) {
/* terms; profile-mode; post-single; post-entry; post-entry; search; search */
.terms-tags a:active,

View file

@ -1,63 +0,0 @@
.hljs-comment,
.hljs-quote {
color: #b6b18b;
}
.hljs-deletion,
.hljs-name,
.hljs-regexp,
.hljs-selector-class,
.hljs-selector-id,
.hljs-tag,
.hljs-template-variable,
.hljs-variable {
color: #eb3c54;
}
.hljs-built_in,
.hljs-builtin-name,
.hljs-link,
.hljs-literal,
.hljs-meta,
.hljs-number,
.hljs-params,
.hljs-type {
color: #e7ce56;
}
.hljs-attribute {
color: #ee7c2b;
}
.hljs-addition,
.hljs-bullet,
.hljs-string,
.hljs-symbol {
color: #4fb4d7;
}
.hljs-section,
.hljs-title {
color: #78bb65;
}
.hljs-keyword,
.hljs-selector-tag {
color: #b45ea4;
}
.hljs {
display: block;
overflow-x: auto;
background: #1c1d21;
color: #c0c5ce;
padding: .5em;
}
.hljs-emphasis {
font-style: italic;
}
.hljs-strong {
font-weight: 700;
}

View file

@ -0,0 +1,24 @@
.chroma {
background-color: unset !important;
}
.chroma .hl {
display: flex;
}
.chroma .lnt {
padding: 0 0 0 12px;
}
.highlight pre.chroma code {
padding: 8px 0;
}
.highlight pre.chroma .line .cl,
.chroma .ln {
padding: 0 10px;
}
.chroma .lntd:last-of-type {
width: 100%;
}

View file

@ -0,0 +1,86 @@
/* Background */ .bg { color: #cad3f5; background-color: #24273a; }
/* PreWrapper */ .chroma { color: #cad3f5; background-color: #24273a; }
/* Other */ .chroma .x { }
/* Error */ .chroma .err { color: #ed8796 }
/* CodeLine */ .chroma .cl { }
/* LineLink */ .chroma .lnlinks { outline: none; text-decoration: none; color: inherit }
/* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }
/* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }
/* LineHighlight */ .chroma .hl { background-color: #474733 }
/* LineNumbersTable */ .chroma .lnt { white-space: pre; -webkit-user-select: none; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #8087a2 }
/* LineNumbers */ .chroma .ln { white-space: pre; -webkit-user-select: none; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #8087a2 }
/* Line */ .chroma .line { display: flex; }
/* Keyword */ .chroma .k { color: #c6a0f6 }
/* KeywordConstant */ .chroma .kc { color: #f5a97f }
/* KeywordDeclaration */ .chroma .kd { color: #ed8796 }
/* KeywordNamespace */ .chroma .kn { color: #8bd5ca }
/* KeywordPseudo */ .chroma .kp { color: #c6a0f6 }
/* KeywordReserved */ .chroma .kr { color: #c6a0f6 }
/* KeywordType */ .chroma .kt { color: #ed8796 }
/* Name */ .chroma .n { }
/* NameAttribute */ .chroma .na { color: #8aadf4 }
/* NameBuiltin */ .chroma .nb { color: #91d7e3 }
/* NameBuiltinPseudo */ .chroma .bp { color: #91d7e3 }
/* NameClass */ .chroma .nc { color: #eed49f }
/* NameConstant */ .chroma .no { color: #eed49f }
/* NameDecorator */ .chroma .nd { color: #8aadf4; font-weight: bold }
/* NameEntity */ .chroma .ni { color: #8bd5ca }
/* NameException */ .chroma .ne { color: #f5a97f }
/* NameFunction */ .chroma .nf { color: #8aadf4 }
/* NameFunctionMagic */ .chroma .fm { color: #8aadf4 }
/* NameLabel */ .chroma .nl { color: #91d7e3 }
/* NameNamespace */ .chroma .nn { color: #f5a97f }
/* NameOther */ .chroma .nx { }
/* NameProperty */ .chroma .py { color: #f5a97f }
/* NameTag */ .chroma .nt { color: #c6a0f6 }
/* NameVariable */ .chroma .nv { color: #f4dbd6 }
/* NameVariableClass */ .chroma .vc { color: #f4dbd6 }
/* NameVariableGlobal */ .chroma .vg { color: #f4dbd6 }
/* NameVariableInstance */ .chroma .vi { color: #f4dbd6 }
/* NameVariableMagic */ .chroma .vm { color: #f4dbd6 }
/* Literal */ .chroma .l { }
/* LiteralDate */ .chroma .ld { }
/* LiteralString */ .chroma .s { color: #a6da95 }
/* LiteralStringAffix */ .chroma .sa { color: #ed8796 }
/* LiteralStringBacktick */ .chroma .sb { color: #a6da95 }
/* LiteralStringChar */ .chroma .sc { color: #a6da95 }
/* LiteralStringDelimiter */ .chroma .dl { color: #8aadf4 }
/* LiteralStringDoc */ .chroma .sd { color: #6e738d }
/* LiteralStringDouble */ .chroma .s2 { color: #a6da95 }
/* LiteralStringEscape */ .chroma .se { color: #8aadf4 }
/* LiteralStringHeredoc */ .chroma .sh { color: #6e738d }
/* LiteralStringInterpol */ .chroma .si { color: #a6da95 }
/* LiteralStringOther */ .chroma .sx { color: #a6da95 }
/* LiteralStringRegex */ .chroma .sr { color: #8bd5ca }
/* LiteralStringSingle */ .chroma .s1 { color: #a6da95 }
/* LiteralStringSymbol */ .chroma .ss { color: #a6da95 }
/* LiteralNumber */ .chroma .m { color: #f5a97f }
/* LiteralNumberBin */ .chroma .mb { color: #f5a97f }
/* LiteralNumberFloat */ .chroma .mf { color: #f5a97f }
/* LiteralNumberHex */ .chroma .mh { color: #f5a97f }
/* LiteralNumberInteger */ .chroma .mi { color: #f5a97f }
/* LiteralNumberIntegerLong */ .chroma .il { color: #f5a97f }
/* LiteralNumberOct */ .chroma .mo { color: #f5a97f }
/* Operator */ .chroma .o { color: #91d7e3; font-weight: bold }
/* OperatorWord */ .chroma .ow { color: #91d7e3; font-weight: bold }
/* Punctuation */ .chroma .p { }
/* Comment */ .chroma .c { color: #6e738d; font-style: italic }
/* CommentHashbang */ .chroma .ch { color: #6e738d; font-style: italic }
/* CommentMultiline */ .chroma .cm { color: #6e738d; font-style: italic }
/* CommentSingle */ .chroma .c1 { color: #6e738d; font-style: italic }
/* CommentSpecial */ .chroma .cs { color: #6e738d; font-style: italic }
/* CommentPreproc */ .chroma .cp { color: #6e738d; font-style: italic }
/* CommentPreprocFile */ .chroma .cpf { color: #6e738d; font-weight: bold; font-style: italic }
/* Generic */ .chroma .g { }
/* GenericDeleted */ .chroma .gd { color: #ed8796; background-color: #363a4f }
/* GenericEmph */ .chroma .ge { font-style: italic }
/* GenericError */ .chroma .gr { color: #ed8796 }
/* GenericHeading */ .chroma .gh { color: #f5a97f; font-weight: bold }
/* GenericInserted */ .chroma .gi { color: #a6da95; background-color: #363a4f }
/* GenericOutput */ .chroma .go { }
/* GenericPrompt */ .chroma .gp { }
/* GenericStrong */ .chroma .gs { font-weight: bold }
/* GenericSubheading */ .chroma .gu { color: #f5a97f; font-weight: bold }
/* GenericTraceback */ .chroma .gt { color: #ed8796 }
/* GenericUnderline */ .chroma .gl { text-decoration: underline }
/* TextWhitespace */ .chroma .w { }

View file

@ -31,7 +31,7 @@
}
.post-content :not(table) ::-webkit-scrollbar-thumb {
border: 2px solid var(--hljs-bg);
border: 2px solid var(--code-block-bg);
background: rgb(113, 113, 117);
}
@ -60,4 +60,4 @@
width: 19px;
height: 11px;
}
}
}

View file

@ -77,7 +77,12 @@ sInput.onkeyup = function (e) {
// run a search query (for "term") every time a letter is typed
// in the search box
if (fuse) {
const results = fuse.search(this.value.trim()); // the actual query being run using fuse.js
let results;
if (params.fuseOpts) {
results = fuse.search(this.value.trim(), {limit: params.fuseOpts.limit}); // the actual query being run using fuse.js along with options
} else {
results = fuse.search(this.value.trim()); // the actual query being run using fuse.js
}
if (results.length !== 0) {
// build our html if result exists
let resultSet = ''; // our results bucket

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,6 +1,6 @@
/*
PaperMod v7
PaperMod v8+
License: MIT https://github.com/adityatelange/hugo-PaperMod/blob/master/LICENSE
Copyright (c) 2020 nanxiaobei and adityatelange
Copyright (c) 2021-2023 adityatelange
Copyright (c) 2021-2025 adityatelange
*/

View file

@ -0,0 +1,33 @@
- id: prev_page
translation: "Předchozí"
- id: next_page
translation: "Další"
- id: read_time
translation:
one : "1 min"
other: "{{ .Count }} min"
- id: words
translation:
one : "slovo"
other: "{{ .Count }} slov"
- id: toc
translation: "Obsah"
- id: translations
translation: "Překlady"
- id: home
translation: "Domů"
- id: edit_post
translation: "Upravit"
- id: code_copy
translation: "kopírovat"
- id: code_copied
translation: "zkopírováno!"

View file

@ -0,0 +1,33 @@
- id: prev_page
translation: "Edellinen"
- id: next_page
translation: "Seuraava"
- id: read_time
translation:
one : "1 min"
other: "{{ .Count }} minuuttia"
- id: words
translation:
one : "sana"
other: "{{ .Count }} sanaa"
- id: toc
translation: "Sisällysluettelo"
- id: translations
translation: "Käännökset"
- id: home
translation: "Etusivu"
- id: edit_post
translation: "Muokkaa"
- id: code_copy
translation: "Kopioi"
- id: code_copied
translation: "Kopioitu!"

View file

@ -1,21 +1,21 @@
- id: prev_page
translation: "קודם"
translation: "הקודם"
- id: next_page
translation: "הבא"
- id: read_time
translation:
one : "דקה אחת"
other: "דקות {{ .Count }}"
one: "דקה אחת"
other: "{{ .Count }} דקות"
- id: words
translation:
one : "word"
other: "מילים {{ .Count }} "
one: "מילה אחת"
other: "{{ .Count }} מילים"
- id: toc
translation: "תוכן העניינים"
translation: "תוכן עניינים"
- id: translations
translation: "תרגומים"
@ -30,4 +30,4 @@
translation: "העתק"
- id: code_copied
translation: "!הועתק"
translation: "הועתק!"

View file

@ -0,0 +1,33 @@
- id: prev_page
translation: "Forrige Side"
- id: next_page
translation: "Neste Side"
- id: read_time
translation:
one: "1 min"
other: "{{ .Count }} min"
- id: words
translation:
one: "ord"
other: "{{ .Count }} ord"
- id: toc
translation: "Innholdsfortegnelse"
- id: translations
translation: "Oversettelser"
- id: home
translation: "Hjem"
- id: edit_post
translation: "Rediger"
- id: code_copy
translation: "Kopier"
- id: code_copied
translation: "Kopiert!"

View file

@ -0,0 +1,33 @@
- id: prev_page
translation: "Prec."
- id: next_page
translation: "Seg."
- id: read_time
translation:
one : "1 min"
other: "{{ .Count }} min"
- id: words
translation:
one : "mot"
other: "{{ .Count }} motss"
- id: toc
translation: "Taula de contengut"
- id: translations
translation: "Traduccions"
- id: home
translation: "Acuèlh"
- id: edit_post
translation: "Modificar"
- id: code_copy
translation: "copiar"
- id: code_copied
translation: "copiat !"

View file

@ -0,0 +1,33 @@
- id: prev_page
translation: "ਪਿਛਲਾ"
- id: next_page
translation: "ਅਗਲਾ"
- id: read_time
translation:
one: "1 ਮਿੰਟ"
other: "{{ .Count }} ਮਿੰਟ"
- id: words
translation:
one: "ਸ਼ਬਦ"
other: "{{ .Count }} ਸ਼ਬਦ"
- id: toc
translation: "ਤਤਕਰਾ"
- id: translations
translation: "ਅਨੁਵਾਦ"
- id: home
translation: "ਘਰ"
- id: edit_post
translation: "ਸੋਧ"
- id: code_copy
translation: "ਕਾਪੀ"
- id: code_copied
translation: "ਕਾਪੀ ਕੀਤੀ ਗਈ!!"

View file

@ -0,0 +1,33 @@
- id: prev_page
translation: "پِچھلا"
- id: next_page
translation: "اگلا"
- id: read_time
translation:
one: "ایک منٹ"
other: "مِنٹ {{ .Count }}"
- id: words
translation:
one: "لفظ"
other: "لفظ {{ .Count }}"
- id: toc
translation: "تتکرا"
- id: translations
translation: "انوواد"
- id: home
translation: "گھر"
- id: edit_post
translation: "سودھ"
- id: code_copy
translation: "کاپی"
- id: code_copied
translation: "کاپی کیتی گئی!"

View file

@ -0,0 +1,33 @@
- id: prev_page
translation: "Înapoi"
- id: next_page
translation: "Înainte"
- id: read_time
translation:
one : "1 minut"
other: "{{ .Count }} minute"
- id: words
translation:
one : "cuvânt"
other: "{{ .Count }} cuvinte"
- id: toc
translation: "Sumar"
- id: translations
translation: "Traduceri"
- id: home
translation: "Acasă"
- id: edit_post
translation: "Editează"
- id: code_copy
translation: "copiază"
- id: code_copied
translation: "copiat!"

View file

@ -0,0 +1,33 @@
- id: prev_page
translation: "Predch"
- id: next_page
translation: "Ďaľší"
- id: read_time
translation:
one : "1 min"
other: "{{ .Count }} min"
- id: words
translation:
one : "slovo"
other: "{{ .Count }} slov"
- id: toc
translation: "Obsah"
- id: translations
translation: "Preklady"
- id: home
translation: "Domov"
- id: edit_post
translation: "Upraviť"
- id: code_copy
translation: "kopírovať"
- id: code_copied
translation: "skopírované!"

View file

@ -0,0 +1,33 @@
- id: prev_page
translation: "Uliopita"
- id: next_page
translation: "Ujao"
- id: read_time
translation:
one : "dakika 1"
other: "dakika {{ .Count }}"
- id: words
translation:
one : "neno"
other: "maneno {{ .Count }}"
- id: toc
translation: "Jedwali la Yaliyomo"
- id: translations
translation: "Tafsiri"
- id: home
translation: "Mwanzo"
- id: edit_post
translation: "Hariri"
- id: code_copy
translation: "nakili"
- id: code_copied
translation: "nakiliwa!"

View file

@ -0,0 +1,33 @@
- id: prev_page
translation: "ก่อนหน้า"
- id: next_page
translation: "ถัดไป"
- id: read_time
translation:
one : "1 นาที"
other: "{{ .Count }} นาที"
- id: words
translation:
one : "คำ"
other: "{{ .Count }} คำ"
- id: toc
translation: "สารบัญ"
- id: translations
translation: "การแปล"
- id: home
translation: "หน้าหลัก"
- id: edit_post
translation: "แก้ไข"
- id: code_copy
translation: "คัดลอก"
- id: code_copied
translation: "คัดลอกแล้ว!"

View file

@ -11,8 +11,8 @@
- id: words
translation:
one : "kelime"
other: "{{ .Count }} kelime"
one : "sözcük"
other: "{{ .Count }} sözcük"
- id: toc
translation: "İçindekiler"
@ -21,7 +21,7 @@
translation: "Çeviriler"
- id: home
translation: "Anasayfa"
translation: "Ana Sayfa"
- id: edit_post
translation: "Düzenle"

View file

@ -6,9 +6,14 @@
- id: read_time
translation:
one : "1 phút"
one: "1 phút"
other: "{{ .Count }} phút"
- id: words
translation:
one: "từ"
other: "{{ .Count }} từ"
- id: toc
translation: "Mục lục"
@ -18,6 +23,9 @@
- id: home
translation: "Trang chủ"
- id: edit_post
translation: "Chỉnh sửa"
- id: code_copy
translation: "Sao chép"

View file

@ -1 +1,22 @@
<img loading="lazy" src="{{ .Destination | safeURL }}" alt="{{ .Text }}" {{ with .Title}} title="{{ . }}" {{ end }} />
{{- $u := urls.Parse .Destination -}}
{{- $src := $u.String -}}
{{- if not $u.IsAbs -}}
{{- $path := strings.TrimPrefix "./" $u.Path }}
{{- with or (.PageInner.Resources.Get $path) (resources.Get $path) -}}
{{- $src = .RelPermalink -}}
{{- with $u.RawQuery -}}
{{- $src = printf "%s?%s" $src . -}}
{{- end -}}
{{- with $u.Fragment -}}
{{- $src = printf "%s#%s" $src . -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- $attributes := merge .Attributes (dict "alt" .Text "src" $src "title" (.Title | transform.HTMLEscape) "loading" "lazy") -}}
<img
{{- range $k, $v := $attributes -}}
{{- if $v -}}
{{- printf " %s=%q" $k $v | safeHTMLAttr -}}
{{- end -}}
{{- end -}}>
{{- /**/ -}}

View file

@ -6,7 +6,7 @@
{{- if (.Param "ShowRssButtonInSectionTermList") }}
{{- $rss := (.OutputFormats.Get "rss") }}
{{- if (eq .Kind `page`) }}
{{- $rss = (.Parent.OutputFormats.Get "rss") }}
{{- $rss = (.Parent.OutputFormats.Get "rss") }}
{{- end }}
{{- with $rss }}
<a href="{{ .RelPermalink }}" title="RSS" aria-label="RSS">
@ -36,19 +36,35 @@
{{- range $pages.GroupByPublishDate "2006" }}
{{- if ne .Key "0001" }}
<div class="archive-year">
<h2 class="archive-year-header">
{{- replace .Key "0001" "" }}<sup class="archive-count">&nbsp;&nbsp;{{ len .Pages }}</sup>
{{- $year := replace .Key "0001" "" }}
<h2 class="archive-year-header" id="{{ $year }}">
<a class="archive-header-link" href="#{{ $year }}">
{{- $year -}}
</a>
<sup class="archive-count">&nbsp;{{ len .Pages }}</sup>
</h2>
{{- range .Pages.GroupByDate "January" }}
<div class="archive-month">
<h3 class="archive-month-header">{{- .Key }}<sup class="archive-count">&nbsp;&nbsp;{{ len .Pages }}</sup></h3>
<h3 class="archive-month-header" id="{{ $year }}-{{ .Key }}">
<a class="archive-header-link" href="#{{ $year }}-{{ .Key }}">
{{- .Key -}}
</a>
<sup class="archive-count">&nbsp;{{ len .Pages }}</sup>
</h3>
<div class="archive-posts">
{{- range .Pages }}
{{- if eq .Kind "page" }}
<div class="archive-entry">
<h3 class="archive-entry-title">
<h3 class="archive-entry-title entry-hint-parent">
{{- .Title | markdownify }}
{{- if .Draft }}<sup><span class="entry-isdraft">&nbsp;&nbsp;[draft]</span></sup>{{- end }}
{{- if .Draft }}
<span class="entry-hint" title="Draft">
<svg xmlns="http://www.w3.org/2000/svg" height="15" viewBox="0 -960 960 960" fill="currentColor">
<path
d="M160-410v-60h300v60H160Zm0-165v-60h470v60H160Zm0-165v-60h470v60H160Zm360 580v-123l221-220q9-9 20-13t22-4q12 0 23 4.5t20 13.5l37 37q9 9 13 20t4 22q0 11-4.5 22.5T862.09-380L643-160H520Zm300-263-37-37 37 37ZM580-220h38l121-122-18-19-19-18-122 121v38Zm141-141-19-18 37 37-18-19Z" />
</svg>
</span>
{{- end }}
</h3>
<div class="archive-meta">
{{- partial "post_meta.html" . -}}

View file

@ -1,3 +1,7 @@
{{- if lt hugo.Version "0.146.0" }}
{{- errorf "=> hugo v0.146.0 or greater is required for hugo-PaperMod to build " }}
{{- end -}}
<!DOCTYPE html>
<html lang="{{ site.Language }}" dir="{{ .Language.LanguageDirection | default "auto" }}">

View file

@ -64,12 +64,19 @@
{{- end }}
<article class="{{ $class }}">
{{- $isHidden := (site.Params.cover.hidden | default site.Params.cover.hiddenInList) }}
{{- partial "cover.html" (dict "cxt" . "IsHome" true "isHidden" $isHidden) }}
{{- $isHidden := (.Param "cover.hiddenInList") | default (.Param "cover.hidden") | default false }}
{{- partial "cover.html" (dict "cxt" . "IsSingle" false "isHidden" $isHidden) }}
<header class="entry-header">
<h2>
<h2 class="entry-hint-parent">
{{- .Title }}
{{- if .Draft }}<sup><span class="entry-isdraft">&nbsp;&nbsp;[draft]</span></sup>{{- end }}
{{- if .Draft }}
<span class="entry-hint" title="Draft">
<svg xmlns="http://www.w3.org/2000/svg" height="20" viewBox="0 -960 960 960" fill="currentColor">
<path
d="M160-410v-60h300v60H160Zm0-165v-60h470v60H160Zm0-165v-60h470v60H160Zm360 580v-123l221-220q9-9 20-13t22-4q12 0 23 4.5t20 13.5l37 37q9 9 13 20t4 22q0 11-4.5 22.5T862.09-380L643-160H520Zm300-263-37-37 37 37ZM580-220h38l121-122-18-19-19-18-122 121v38Zm141-141-19-18 37 37-18-19Z" />
</svg>
</span>
{{- end }}
</h2>
</header>
{{- if (ne (.Param "hideSummary") true) }}

View file

@ -1,21 +1,53 @@
{{- $pctx := . -}}
{{- if .IsHome -}}{{ $pctx = site }}{{- end -}}
{{- $pages := slice -}}
{{- if or $.IsHome $.IsSection -}}
{{- $pages = $pctx.RegularPages -}}
{{- else -}}
{{- $pages = $pctx.Pages -}}
{{- end -}}
{{- $limit := site.Config.Services.RSS.Limit -}}
{{- if ge $limit 1 -}}
{{- $pages = $pages | first $limit -}}
{{- end -}}
{{- /* Deprecate site.Author.email in favor of site.Params.author.email */}}
{{- $authorEmail := "" }}
{{- with site.Params.author }}
{{- if reflect.IsMap . }}
{{- with .email }}
{{- $authorEmail = . }}
{{- end }}
{{- end }}
{{- else }}
{{- with site.Author.email }}
{{- $authorEmail = . }}
{{- warnf "The author key in site configuration is deprecated. Use params.author.email instead." }}
{{- end }}
{{- end }}
{{- /* Deprecate site.Author.name in favor of site.Params.author.name */}}
{{- $authorName := "" }}
{{- with site.Params.author }}
{{- if reflect.IsMap . }}
{{- with .name }}
{{- $authorName = . }}
{{- end }}
{{- else }}
{{- $authorName = . }}
{{- end }}
{{- else }}
{{- with site.Author.name }}
{{- $authorName = . }}
{{- warnf "The author key in site configuration is deprecated. Use params.author.name instead." }}
{{- end }}
{{- end }}
{{- $pctx := . }}
{{- if .IsHome }}{{ $pctx = site }}{{ end }}
{{- $pages := slice }}
{{- if or $.IsHome $.IsSection }}
{{- $pages = $pctx.RegularPages }}
{{- else }}
{{- $pages = $pctx.Pages }}
{{- end }}
{{- $limit := site.Config.Services.RSS.Limit }}
{{- if ge $limit 1 }}
{{- $pages = $pages | first $limit }}
{{- end }}
{{- printf "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>" | safeHTML }}
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>{{ if eq .Title site.Title }}{{ site.Title }}{{ else }}{{ with .Title }}{{.}} on {{ end }}{{ site.Title }}{{ end }}</title>
<title>{{ if eq .Title site.Title }}{{ site.Title }}{{ else }}{{ with .Title }}{{ . }} on {{ end }}{{ site.Title }}{{ end }}</title>
<link>{{ .Permalink }}</link>
<description>Recent content {{ if ne .Title site.Title }}{{ with .Title }}in {{.}} {{ end }}{{ end }}on {{ site.Title }}</description>
<description>Recent content {{ if ne .Title site.Title }}{{ with .Title }}in {{ . }} {{ end }}{{ end }}on {{ site.Title }}</description>
{{- with site.Params.images }}
<image>
<title>{{ site.Title }}</title>
@ -23,29 +55,29 @@
<link>{{ index . 0 | absURL }}</link>
</image>
{{- end }}
<generator>Hugo -- gohugo.io</generator>{{ with site.LanguageCode }}
<language>{{.}}</language>{{end}}{{ with site.Author.email }}
<managingEditor>{{.}}{{ with site.Author.name }} ({{.}}){{end}}</managingEditor>{{end}}{{ with site.Author.email }}
<webMaster>{{.}}{{ with site.Author.name }} ({{.}}){{end}}</webMaster>{{end}}{{ with site.Copyright }}
<copyright>{{.}}</copyright>{{end}}{{ if not .Date.IsZero }}
<lastBuildDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</lastBuildDate>{{ end }}
{{- with .OutputFormats.Get "RSS" -}}
<generator>Hugo -- {{ hugo.Version }}</generator>
<language>{{ site.Language.LanguageCode }}</language>{{ with $authorEmail }}
<managingEditor>{{.}}{{ with $authorName }} ({{ . }}){{ end }}</managingEditor>{{ end }}{{ with $authorEmail }}
<webMaster>{{ . }}{{ with $authorName }} ({{ . }}){{ end }}</webMaster>{{ end }}{{ with site.Copyright }}
<copyright>{{ . | markdownify | plainify | strings.TrimPrefix "© " }}</copyright>{{ end }}{{ if not .Date.IsZero }}
<lastBuildDate>{{ (index $pages.ByLastmod.Reverse 0).Lastmod.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</lastBuildDate>{{ end }}
{{- with .OutputFormats.Get "RSS" }}
{{ printf "<atom:link href=%q rel=\"self\" type=%q />" .Permalink .MediaType | safeHTML }}
{{- end -}}
{{ range $pages }}
{{- end }}
{{- range $pages }}
{{- if and (ne .Layout `search`) (ne .Layout `archives`) }}
<item>
<title>{{ .Title }}</title>
<link>{{ .Permalink }}</link>
<pubDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</pubDate>
{{ with site.Author.email }}<author>{{.}}{{ with site.Author.name }} ({{.}}){{end}}</author>{{end}}
<pubDate>{{ .PublishDate.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</pubDate>
{{- with $authorEmail }}<author>{{ . }}{{ with $authorName }} ({{ . }}){{ end }}</author>{{ end }}
<guid>{{ .Permalink }}</guid>
<description>{{ with .Description | html }}{{ . }}{{ else }}{{ .Summary | html }}{{ end -}}</description>
{{- if site.Params.ShowFullTextinRSS }}
{{- if and site.Params.ShowFullTextinRSS .Content }}
<content:encoded>{{ (printf "<![CDATA[%s]]>" .Content) | safeHTML }}</content:encoded>
{{- end }}
</item>
{{- end }}
{{ end }}
{{- end }}
</channel>
</rss>

View file

@ -22,7 +22,7 @@
<div id="searchbox">
<input id="searchInput" autofocus placeholder="{{ .Params.placeholder | default (printf "%s " .Title) }}"
aria-label="search" type="search" autocomplete="off">
aria-label="search" type="search" autocomplete="off" maxlength="64">
<ul id="searchResults" aria-label="search results"></ul>
</div>

View file

@ -3,9 +3,16 @@
<article class="post-single">
<header class="post-header">
{{ partial "breadcrumbs.html" . }}
<h1 class="post-title">
<h1 class="post-title entry-hint-parent">
{{ .Title }}
{{- if .Draft }}<sup><span class="entry-isdraft">&nbsp;&nbsp;[draft]</span></sup>{{- end }}
{{- if .Draft }}
<span class="entry-hint" title="Draft">
<svg xmlns="http://www.w3.org/2000/svg" height="35" viewBox="0 -960 960 960" fill="currentColor">
<path
d="M160-410v-60h300v60H160Zm0-165v-60h470v60H160Zm0-165v-60h470v60H160Zm360 580v-123l221-220q9-9 20-13t22-4q12 0 23 4.5t20 13.5l37 37q9 9 13 20t4 22q0 11-4.5 22.5T862.09-380L643-160H520Zm300-263-37-37 37 37ZM580-220h38l121-122-18-19-19-18-122 121v38Zm141-141-19-18 37 37-18-19Z" />
</svg>
</span>
{{- end }}
</h1>
{{- if .Description }}
<div class="post-description">
@ -21,8 +28,8 @@
</div>
{{- end }}
</header>
{{- $isHidden := .Params.cover.hidden | default site.Params.cover.hiddenInSingle | default site.Params.cover.hidden }}
{{- partial "cover.html" (dict "cxt" . "IsHome" false "isHidden" $isHidden) }}
{{- $isHidden := (.Param "cover.hiddenInSingle") | default (.Param "cover.hidden") | default false }}
{{- partial "cover.html" (dict "cxt" . "IsSingle" true "isHidden" $isHidden) }}
{{- if (.Param "ShowToc") }}
{{- partial "toc.html" . }}
{{- end }}

View file

@ -1,6 +1,6 @@
{{- if (.Param "ShowBreadCrumbs") -}}
<div class="breadcrumbs">
{{- $url := replace .Parent.Permalink (printf "%s" site.BaseURL) "" }}
{{- $url := replace .Parent.Permalink (printf "%s" site.Home.Permalink) "" }}
{{- $lang_url := strings.TrimPrefix (printf "%s/" .Lang) $url -}}
<a href="{{ "" | absLangURL }}">{{ i18n "home" | default "Home" }}</a>

View file

@ -1,41 +1,64 @@
{{- with .cxt}} {{/* Apply proper context from dict */}}
{{- if (and .Params.cover.image (not $.isHidden)) }}
{{- $alt := (.Params.cover.alt | default .Params.cover.caption | plainify) }}
<figure class="entry-cover">
{{- $loading := cond $.IsSingle "eager" "lazy" }}
{{- $addLink := (and site.Params.cover.linkFullImages $.IsSingle) }}
{{- $prod := (hugo.IsProduction | or (eq site.Params.env "production")) }}
{{- $alt := (.Params.cover.alt | default .Params.cover.caption | plainify) }}
{{- $responsiveImages := (.Params.cover.responsiveImages | default site.Params.cover.responsiveImages) | default true }}
{{- $addLink := (and site.Params.cover.linkFullImages (not $.IsHome)) }}
{{- $pageBundleCover := (.Resources.ByType "image").GetMatch (printf "*%s*" (.Params.cover.image)) }}
{{- $pageBundleCover := (.Resources.ByType "image").GetMatch (printf "*%s*" (.Params.cover.image)) }}
{{- $globalResourcesCover := (resources.ByType "image").GetMatch (printf "*%s*" (.Params.cover.image)) }}
{{- $cover := (or $pageBundleCover $globalResourcesCover)}}
{{- if $cover -}}{{/* i.e it is present in page bundle */}}
{{- if $addLink }}<a href="{{ (path.Join .RelPermalink .Params.cover.image) | absURL }}" target="_blank"
rel="noopener noreferrer">{{ end -}}
{{- $sizes := (slice "360" "480" "720" "1080" "1500") }}
{{- $processableFormats := (slice "jpg" "jpeg" "png" "tif" "bmp" "gif") -}}
{{- if hugo.IsExtended -}}
{{- $processableFormats = $processableFormats | append "webp" -}}
{{- end -}}
{{- $prod := (hugo.IsProduction | or (eq site.Params.env "production")) }}
{{- if (and (in $processableFormats $cover.MediaType.SubType) ($responsiveImages) (eq $prod true)) }}
<img loading="lazy" srcset="{{- range $size := $sizes -}}
{{- if (ge $cover.Width $size) -}}
{{ printf "%s %s" (($cover.Resize (printf "%sx" $size)).Permalink) (printf "%sw ," $size) -}}
{{ end }}
{{- end -}}{{$cover.Permalink }} {{printf "%dw" ($cover.Width)}}"
sizes="(min-width: 768px) 720px, 100vw" src="{{ $cover.Permalink }}" alt="{{ $alt }}"
width="{{ $cover.Width }}" height="{{ $cover.Height }}">
{{- else }}{{/* Unprocessable image or responsive images disabled */}}
<img loading="lazy" src="{{ (path.Join .RelPermalink .Params.cover.image) | absURL }}" alt="{{ $alt }}">
{{- end }}
{{- else }}{{/* For absolute urls and external links, no img processing here */}}
{{- if $addLink }}<a href="{{ (.Params.cover.image) | absURL }}" target="_blank"
rel="noopener noreferrer">{{ end -}}
<img loading="lazy" src="{{ (.Params.cover.image) | absURL }}" alt="{{ $alt }}">
{{- /* We are not using the .Param.cover.relative to decide the location of image */}}
{{- /* If we have the image in pageBundle or globalResources we can process the image */}}
{{- $sizes := (slice "360" "480" "720" "1080" "1500") }}
{{- $processableFormats := (slice "jpg" "jpeg" "png" "tif" "bmp" "gif") -}}
{{- if hugo.IsExtended -}}
{{- $processableFormats = $processableFormats | append "webp" -}}
{{- end -}}
{{- $imgdl := (.Params.cover.image) | absURL }}
{{- if $cover -}}
{{- $imgdl = $cover.Permalink }}
{{- end -}}
{{- if $addLink }}
<a href="{{ $imgdl }}" target="_blank" rel="noopener noreferrer">
{{- end }}
{{- if $addLink }}</a>{{ end -}}
{{/* Display Caption */}}
{{- if not $.IsHome }}
{{ with .Params.cover.caption }}<p>{{ . | markdownify }}</p>{{- end }}
{{- if $cover -}}
{{/* i.e it is present in page bundle */}}
{{- if (and (in $processableFormats $cover.MediaType.SubType) ($responsiveImages) (eq $prod true)) }}
<img loading="{{$loading}}"
srcset='{{- range $size := $sizes -}}
{{- if (ge $cover.Width $size) }}
{{- printf "%s %s" (($cover.Resize (printf "%sx" $size)).Permalink) (printf "%sw," $size) }}
{{- end }}
{{- end }}
{{- printf "%s %dw" ($cover.Permalink) ($cover.Width) }}'
src="{{ $cover.Permalink }}"
sizes="(min-width: 768px) 720px, 100vw"
width="{{ $cover.Width }}" height="{{ $cover.Height }}"
alt="{{ $alt }}">
{{- else }}{{/* Unprocessable image or responsive images disabled */}}
<img loading="{{ $loading }}" src="{{ $imgdl }}" alt="{{ $alt }}">
{{- end }}
{{- else }}
{{- /* For absolute urls and external links, no img processing here */}}
<img loading="{{ $loading }}" src="{{ $imgdl }}" alt="{{ $alt }}">
{{- end }}
{{- if $addLink }}
</a>
{{- end -}}
{{- /* Display Caption */}}
{{- if $.IsSingle }}
{{ with .Params.cover.caption -}}
<figcaption>{{ . | markdownify }}</figcaption>
{{- end }}
{{- end }}
</figure>
{{- end }}{{/* End image */}}

View file

@ -2,7 +2,7 @@
{{- $fileUrlPath := path.Join .File.Path }}
{{- if or .Params.author site.Params.author (.Param "ShowReadingTime") (not .Date.IsZero) .IsTranslated }}&nbsp;|&nbsp;{{- end -}}
<a href="{{ .Params.editPost.URL | default site.Params.editPost.URL }}{{ if .Params.editPost.appendFilePath | default ( site.Params.editPost.appendFilePath | default false ) }}/{{ $fileUrlPath }}{{ end }}" rel="noopener noreferrer" target="_blank">
<a href="{{ .Params.editPost.URL | default site.Params.editPost.URL }}{{ if .Params.editPost.appendFilePath | default ( site.Params.editPost.appendFilePath | default false ) }}/{{ $fileUrlPath }}{{ end }}" rel="noopener noreferrer edit" target="_blank">
{{- .Params.editPost.Text | default (site.Params.editPost.Text | default (i18n "edit_post" | default "Edit")) -}}
</a>
{{- end }}

View file

@ -1,10 +1,19 @@
{{- if not (.Param "hideFooter") }}
<footer class="footer">
{{- if site.Copyright }}
<span>{{ site.Copyright | markdownify }}</span>
{{- else }}
<span>&copy; {{ now.Year }} <a href="{{ "" | absLangURL }}">{{ site.Title }}</a></span>
{{- if not site.Params.footer.hideCopyright }}
{{- if site.Copyright }}
<span>{{ site.Copyright | markdownify }}</span>
{{- else }}
<span>&copy; {{ now.Year }} <a href="{{ "" | absLangURL }}">{{ site.Title }}</a></span>
{{- end }}
{{- print " · "}}
{{- end }}
{{- with site.Params.footer.text }}
{{ . | markdownify }}
{{- print " · "}}
{{- end }}
<span>
Powered by
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &

View file

@ -55,12 +55,12 @@
{{- $license_css := (resources.Get "css/core/license.css") }}
{{- $common := (resources.Match "css/common/*.css") | resources.Concat "assets/css/common.css" }}
{{- /* include `an-old-hope` if hljs is on */}}
{{- $isHLJSdisabled := (site.Params.assets.disableHLJS | default false) }}
{{- $hljs := (cond ($isHLJSdisabled) (".chroma { background-color: unset !important;}" | resources.FromString "assets/css/hljs-blank.css") (resources.Get "css/hljs/an-old-hope.min.css")) }}
{{- /* markup.highlight.noClasses should be set to `false` */}}
{{- $chroma_styles := (resources.Get "css/includes/chroma-styles.css") }}
{{- $chroma_mod := (resources.Get "css/includes/chroma-mod.css") }}
{{- /* order is important */}}
{{- $core := (slice $theme_vars $reset $common $hljs $includes_all $media) | resources.Concat "assets/css/core.css" | resources.Minify }}
{{- $core := (slice $theme_vars $reset $common $chroma_styles $chroma_mod $includes_all $media) | resources.Concat "assets/css/core.css" | resources.Minify }}
{{- $extended := (resources.Match "css/extended/*.css") | resources.Concat "assets/css/extended.css" | resources.Minify }}
{{- /* bundle all required css */}}
@ -89,19 +89,6 @@
{{- end }}
{{- end -}}
{{- /* Highlight.js */}}
{{- $isHLJSdisabled := (site.Params.assets.disableHLJS | default .Params.disableHLJS ) }}
{{- if (and (eq .Kind "page") (ne .Layout "archives") (ne .Layout "search") (not $isHLJSdisabled)) }}
{{- if not site.Params.assets.disableFingerprinting }}
{{- $highlight := slice (resources.Get "js/highlight.min.js") | resources.Concat "assets/js/highlight.js" | fingerprint }}
<script defer crossorigin="anonymous" src="{{ $highlight.RelPermalink }}" integrity="{{ $highlight.Data.Integrity }}"
onload="hljs.initHighlightingOnLoad();"></script>
{{- else }}
{{- $highlight := slice (resources.Get "js/highlight.min.js") | resources.Concat "assets/js/highlight.js" }}
<script defer crossorigin="anonymous" src="{{ $highlight.RelPermalink }}" onload="hljs.initHighlightingOnLoad();"></script>
{{- end }}
{{- end }}
{{- /* Favicons */}}
<link rel="icon" href="{{ site.Params.assets.favicon | default "favicon.ico" | absURL }}">
<link rel="icon" type="image/png" sizes="16x16" href="{{ site.Params.assets.favicon16x16 | default "favicon-16x16.png" | absURL }}">
@ -137,7 +124,7 @@
--secondary: rgb(155, 156, 157);
--tertiary: rgb(65, 66, 68);
--content: rgb(196, 196, 197);
--hljs-bg: rgb(46, 46, 51);
--code-block-bg: rgb(46, 46, 51);
--code-bg: rgb(55, 56, 62);
--border: rgb(51, 51, 51);
}
@ -163,8 +150,8 @@
{{- /* Misc */}}
{{- if hugo.IsProduction | or (eq site.Params.env "production") }}
{{- template "_internal/google_analytics.html" . }}
{{- template "partials/templates/opengraph.html" . }}
{{- template "partials/templates/twitter_cards.html" . }}
{{- template "partials/templates/schema_json.html" . }}
{{- partial "google_analytics.html" . }}
{{- partial "templates/opengraph.html" . }}
{{- partial "templates/twitter_cards.html" . }}
{{- partial "templates/schema_json.html" . }}
{{- end -}}

View file

@ -73,7 +73,7 @@
{{- end }}
<div class="logo-switches">
{{- if (not site.Params.disableThemeToggle) }}
<button id="theme-toggle" accesskey="t" title="(Alt + T)">
<button id="theme-toggle" accesskey="t" title="(Alt + T)" aria-label="Toggle theme">
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
@ -97,7 +97,7 @@
{{- $lang := .Lang}}
{{- $separator := or $label_text (not site.Params.disableThemeToggle)}}
{{- with site.Home.AllTranslations }}
{{- with site.Home.Translations }}
<ul class="lang-switch">
{{- if $separator }}<li>|</li>{{ end }}
{{- range . -}}

View file

@ -7,7 +7,7 @@
{{ .Content | markdownify }}
</div>
<footer class="entry-footer">
{{ partial "social_icons.html" site.Params.socialIcons }}
{{ partial "social_icons.html" (dict "align" site.Params.homeInfoParams.AlignSocialIconsTo) }}
</footer>
</article>
{{- end -}}

View file

@ -32,7 +32,7 @@
{{- end }}
<h1>{{ .title | default site.Title | markdownify }}</h1>
<span>{{ .subtitle | markdownify }}</span>
{{- partial "social_icons.html" site.Params.socialIcons -}}
{{- partial "social_icons.html" -}}
{{- with .buttons }}
<div class="buttons">

View file

@ -12,10 +12,12 @@
{{- $scratch.Add "meta" (slice (i18n "words" .WordCount | default (printf "%d words" .WordCount))) }}
{{- end }}
{{- if not (.Param "hideAuthor") -}}
{{- with (partial "author.html" .) }}
{{- $scratch.Add "meta" (slice .) }}
{{- end }}
{{- end }}
{{- with ($scratch.Get "meta") }}
{{- delimit . "&nbsp;·&nbsp;" -}}
{{- delimit . "&nbsp;·&nbsp;" | safeHTML -}}
{{- end -}}

View file

@ -13,59 +13,83 @@
{{- $ShareButtons := (.Param "ShareButtons")}}
{{- with $ShareButtons }}{{ $custom = true }}{{ end }}
<div class="share-buttons">
{{- if (cond ($custom) (in $ShareButtons "twitter") (true)) }}
<a target="_blank" rel="noopener noreferrer" aria-label="share {{ $title | plainify }} on twitter"
href="https://twitter.com/intent/tweet/?text={{ $title }}&amp;url={{ $pageurl }}&amp;hashtags={{- $.Scratch.Get "tags" -}}">
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
<path
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-253.927,424.544c135.939,0 210.268,-112.643 210.268,-210.268c0,-3.218 0,-6.437 -0.153,-9.502c14.406,-10.421 26.973,-23.448 36.935,-38.314c-13.18,5.824 -27.433,9.809 -42.452,11.648c15.326,-9.196 26.973,-23.602 32.49,-40.92c-14.252,8.429 -30.038,14.56 -46.896,17.931c-13.487,-14.406 -32.644,-23.295 -53.946,-23.295c-40.767,0 -73.87,33.104 -73.87,73.87c0,5.824 0.613,11.494 1.992,16.858c-61.456,-3.065 -115.862,-32.49 -152.337,-77.241c-6.284,10.881 -9.962,23.601 -9.962,37.088c0,25.594 13.027,48.276 32.95,61.456c-12.107,-0.307 -23.448,-3.678 -33.41,-9.196l0,0.92c0,35.862 25.441,65.594 59.311,72.49c-6.13,1.686 -12.72,2.606 -19.464,2.606c-4.751,0 -9.348,-0.46 -13.946,-1.38c9.349,29.426 36.628,50.728 68.965,51.341c-25.287,19.771 -57.164,31.571 -91.8,31.571c-5.977,0 -11.801,-0.306 -17.625,-1.073c32.337,21.15 71.264,33.41 112.95,33.41Z" />
</svg>
</a>
<ul class="share-buttons">
{{- if (or (cond ($custom) (in $ShareButtons "x") (true)) (cond ($custom) (in $ShareButtons "twitter") (true))) }}
<li>
<a target="_blank" rel="noopener noreferrer" aria-label="share {{ $title | plainify }} on x"
href="https://x.com/intent/tweet/?text={{ $title }}&amp;url={{ $pageurl }}&amp;hashtags={{- $.Scratch.Get "tags" -}}">
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
<path
d="M512 62.554 L 512 449.446 C 512 483.97 483.97 512 449.446 512 L 62.554 512 C 28.03 512 0 483.97 0 449.446 L 0 62.554 C 0 28.03 28.029 0 62.554 0 L 449.446 0 C 483.971 0 512 28.03 512 62.554 Z M 269.951 190.75 L 182.567 75.216 L 56 75.216 L 207.216 272.95 L 63.9 436.783 L 125.266 436.783 L 235.9 310.383 L 332.567 436.783 L 456 436.783 L 298.367 228.367 L 432.367 75.216 L 371.033 75.216 Z M 127.633 110 L 164.101 110 L 383.481 400.065 L 349.5 400.065 Z" />
</svg>
</a>
</li>
{{- end }}
{{- if (cond ($custom) (in $ShareButtons "linkedin") (true)) }}
<a target="_blank" rel="noopener noreferrer" aria-label="share {{ $title | plainify }} on linkedin"
href="https://www.linkedin.com/shareArticle?mini=true&amp;url={{ $pageurl }}&amp;title={{ $title }}&amp;summary={{ $title }}&amp;source={{ $pageurl }}">
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
<path
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-288.985,423.278l0,-225.717l-75.04,0l0,225.717l75.04,0Zm270.539,0l0,-129.439c0,-69.333 -37.018,-101.586 -86.381,-101.586c-39.804,0 -57.634,21.891 -67.617,37.266l0,-31.958l-75.021,0c0.995,21.181 0,225.717 0,225.717l75.02,0l0,-126.056c0,-6.748 0.486,-13.492 2.474,-18.315c5.414,-13.475 17.767,-27.434 38.494,-27.434c27.135,0 38.007,20.707 38.007,51.037l0,120.768l75.024,0Zm-307.552,-334.556c-25.674,0 -42.448,16.879 -42.448,39.002c0,21.658 16.264,39.002 41.455,39.002l0.484,0c26.165,0 42.452,-17.344 42.452,-39.002c-0.485,-22.092 -16.241,-38.954 -41.943,-39.002Z" />
</svg>
</a>
<li>
<a target="_blank" rel="noopener noreferrer" aria-label="share {{ $title | plainify }} on linkedin"
href="https://www.linkedin.com/shareArticle?mini=true&amp;url={{ $pageurl }}&amp;title={{ $title }}&amp;summary={{ $title }}&amp;source={{ $pageurl }}">
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
<path
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-288.985,423.278l0,-225.717l-75.04,0l0,225.717l75.04,0Zm270.539,0l0,-129.439c0,-69.333 -37.018,-101.586 -86.381,-101.586c-39.804,0 -57.634,21.891 -67.617,37.266l0,-31.958l-75.021,0c0.995,21.181 0,225.717 0,225.717l75.02,0l0,-126.056c0,-6.748 0.486,-13.492 2.474,-18.315c5.414,-13.475 17.767,-27.434 38.494,-27.434c27.135,0 38.007,20.707 38.007,51.037l0,120.768l75.024,0Zm-307.552,-334.556c-25.674,0 -42.448,16.879 -42.448,39.002c0,21.658 16.264,39.002 41.455,39.002l0.484,0c26.165,0 42.452,-17.344 42.452,-39.002c-0.485,-22.092 -16.241,-38.954 -41.943,-39.002Z" />
</svg>
</a>
</li>
{{- end }}
{{- if (cond ($custom) (in $ShareButtons "reddit") (true)) }}
<a target="_blank" rel="noopener noreferrer" aria-label="share {{ $title | plainify }} on reddit"
href="https://reddit.com/submit?url={{ $pageurl }}&title={{ $title }}">
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
<path
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-3.446,265.638c0,-22.964 -18.616,-41.58 -41.58,-41.58c-11.211,0 -21.361,4.457 -28.841,11.666c-28.424,-20.508 -67.586,-33.757 -111.204,-35.278l18.941,-89.121l61.884,13.157c0.756,15.734 13.642,28.29 29.56,28.29c16.407,0 29.706,-13.299 29.706,-29.701c0,-16.403 -13.299,-29.702 -29.706,-29.702c-11.666,0 -21.657,6.792 -26.515,16.578l-69.105,-14.69c-1.922,-0.418 -3.939,-0.042 -5.585,1.036c-1.658,1.073 -2.811,2.761 -3.224,4.686l-21.152,99.438c-44.258,1.228 -84.046,14.494 -112.837,35.232c-7.468,-7.164 -17.589,-11.591 -28.757,-11.591c-22.965,0 -41.585,18.616 -41.585,41.58c0,16.896 10.095,31.41 24.568,37.918c-0.639,4.135 -0.99,8.328 -0.99,12.576c0,63.977 74.469,115.836 166.33,115.836c91.861,0 166.334,-51.859 166.334,-115.836c0,-4.218 -0.347,-8.387 -0.977,-12.493c14.564,-6.47 24.735,-21.034 24.735,-38.001Zm-119.474,108.193c-20.27,20.241 -59.115,21.816 -70.534,21.816c-11.428,0 -50.277,-1.575 -70.522,-21.82c-3.007,-3.008 -3.007,-7.882 0,-10.889c3.003,-2.999 7.882,-3.003 10.885,0c12.777,12.781 40.11,17.317 59.637,17.317c19.522,0 46.86,-4.536 59.657,-17.321c3.016,-2.999 7.886,-2.995 10.885,0.008c3.008,3.011 3.003,7.882 -0.008,10.889Zm-5.23,-48.781c-16.373,0 -29.701,-13.324 -29.701,-29.698c0,-16.381 13.328,-29.714 29.701,-29.714c16.378,0 29.706,13.333 29.706,29.714c0,16.374 -13.328,29.698 -29.706,29.698Zm-160.386,-29.702c0,-16.381 13.328,-29.71 29.714,-29.71c16.369,0 29.689,13.329 29.689,29.71c0,16.373 -13.32,29.693 -29.689,29.693c-16.386,0 -29.714,-13.32 -29.714,-29.693Z" />
</svg>
</a>
<li>
<a target="_blank" rel="noopener noreferrer" aria-label="share {{ $title | plainify }} on reddit"
href="https://reddit.com/submit?url={{ $pageurl }}&title={{ $title }}">
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
<path
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-3.446,265.638c0,-22.964 -18.616,-41.58 -41.58,-41.58c-11.211,0 -21.361,4.457 -28.841,11.666c-28.424,-20.508 -67.586,-33.757 -111.204,-35.278l18.941,-89.121l61.884,13.157c0.756,15.734 13.642,28.29 29.56,28.29c16.407,0 29.706,-13.299 29.706,-29.701c0,-16.403 -13.299,-29.702 -29.706,-29.702c-11.666,0 -21.657,6.792 -26.515,16.578l-69.105,-14.69c-1.922,-0.418 -3.939,-0.042 -5.585,1.036c-1.658,1.073 -2.811,2.761 -3.224,4.686l-21.152,99.438c-44.258,1.228 -84.046,14.494 -112.837,35.232c-7.468,-7.164 -17.589,-11.591 -28.757,-11.591c-22.965,0 -41.585,18.616 -41.585,41.58c0,16.896 10.095,31.41 24.568,37.918c-0.639,4.135 -0.99,8.328 -0.99,12.576c0,63.977 74.469,115.836 166.33,115.836c91.861,0 166.334,-51.859 166.334,-115.836c0,-4.218 -0.347,-8.387 -0.977,-12.493c14.564,-6.47 24.735,-21.034 24.735,-38.001Zm-119.474,108.193c-20.27,20.241 -59.115,21.816 -70.534,21.816c-11.428,0 -50.277,-1.575 -70.522,-21.82c-3.007,-3.008 -3.007,-7.882 0,-10.889c3.003,-2.999 7.882,-3.003 10.885,0c12.777,12.781 40.11,17.317 59.637,17.317c19.522,0 46.86,-4.536 59.657,-17.321c3.016,-2.999 7.886,-2.995 10.885,0.008c3.008,3.011 3.003,7.882 -0.008,10.889Zm-5.23,-48.781c-16.373,0 -29.701,-13.324 -29.701,-29.698c0,-16.381 13.328,-29.714 29.701,-29.714c16.378,0 29.706,13.333 29.706,29.714c0,16.374 -13.328,29.698 -29.706,29.698Zm-160.386,-29.702c0,-16.381 13.328,-29.71 29.714,-29.71c16.369,0 29.689,13.329 29.689,29.71c0,16.373 -13.32,29.693 -29.689,29.693c-16.386,0 -29.714,-13.32 -29.714,-29.693Z" />
</svg>
</a>
</li>
{{- end }}
{{- if (cond ($custom) (in $ShareButtons "facebook") (true)) }}
<a target="_blank" rel="noopener noreferrer" aria-label="share {{ $title | plainify }} on facebook"
href="https://facebook.com/sharer/sharer.php?u={{ $pageurl }}">
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
<path
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-106.468,0l0,-192.915l66.6,0l12.672,-82.621l-79.272,0l0,-53.617c0,-22.603 11.073,-44.636 46.58,-44.636l36.042,0l0,-70.34c0,0 -32.71,-5.582 -63.982,-5.582c-65.288,0 -107.96,39.569 -107.96,111.204l0,62.971l-72.573,0l0,82.621l72.573,0l0,192.915l-191.104,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Z" />
</svg>
</a>
<li>
<a target="_blank" rel="noopener noreferrer" aria-label="share {{ $title | plainify }} on facebook"
href="https://facebook.com/sharer/sharer.php?u={{ $pageurl }}">
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
<path
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-106.468,0l0,-192.915l66.6,0l12.672,-82.621l-79.272,0l0,-53.617c0,-22.603 11.073,-44.636 46.58,-44.636l36.042,0l0,-70.34c0,0 -32.71,-5.582 -63.982,-5.582c-65.288,0 -107.96,39.569 -107.96,111.204l0,62.971l-72.573,0l0,82.621l72.573,0l0,192.915l-191.104,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Z" />
</svg>
</a>
</li>
{{- end }}
{{- if (cond ($custom) (in $ShareButtons "whatsapp") (true)) }}
<a target="_blank" rel="noopener noreferrer" aria-label="share {{ $title | plainify }} on whatsapp"
href="https://api.whatsapp.com/send?text={{ $title }}%20-%20{{ $pageurl }}">
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
<path
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-58.673,127.703c-33.842,-33.881 -78.847,-52.548 -126.798,-52.568c-98.799,0 -179.21,80.405 -179.249,179.234c-0.013,31.593 8.241,62.428 23.927,89.612l-25.429,92.884l95.021,-24.925c26.181,14.28 55.659,21.807 85.658,21.816l0.074,0c98.789,0 179.206,-80.413 179.247,-179.243c0.018,-47.895 -18.61,-92.93 -52.451,-126.81Zm-126.797,275.782l-0.06,0c-26.734,-0.01 -52.954,-7.193 -75.828,-20.767l-5.441,-3.229l-56.386,14.792l15.05,-54.977l-3.542,-5.637c-14.913,-23.72 -22.791,-51.136 -22.779,-79.287c0.033,-82.142 66.867,-148.971 149.046,-148.971c39.793,0.014 77.199,15.531 105.329,43.692c28.128,28.16 43.609,65.592 43.594,105.4c-0.034,82.149 -66.866,148.983 -148.983,148.984Zm81.721,-111.581c-4.479,-2.242 -26.499,-13.075 -30.604,-14.571c-4.105,-1.495 -7.091,-2.241 -10.077,2.241c-2.986,4.483 -11.569,14.572 -14.182,17.562c-2.612,2.988 -5.225,3.364 -9.703,1.12c-4.479,-2.241 -18.91,-6.97 -36.017,-22.23c-13.314,-11.876 -22.304,-26.542 -24.916,-31.026c-2.612,-4.484 -0.279,-6.908 1.963,-9.14c2.016,-2.007 4.48,-5.232 6.719,-7.847c2.24,-2.615 2.986,-4.484 4.479,-7.472c1.493,-2.99 0.747,-5.604 -0.374,-7.846c-1.119,-2.241 -10.077,-24.288 -13.809,-33.256c-3.635,-8.733 -7.327,-7.55 -10.077,-7.688c-2.609,-0.13 -5.598,-0.158 -8.583,-0.158c-2.986,0 -7.839,1.121 -11.944,5.604c-4.105,4.484 -15.675,15.32 -15.675,37.364c0,22.046 16.048,43.342 18.287,46.332c2.24,2.99 31.582,48.227 76.511,67.627c10.685,4.615 19.028,7.371 25.533,9.434c10.728,3.41 20.492,2.929 28.209,1.775c8.605,-1.285 26.499,-10.833 30.231,-21.295c3.732,-10.464 3.732,-19.431 2.612,-21.298c-1.119,-1.869 -4.105,-2.99 -8.583,-5.232Z" />
</svg>
</a>
<li>
<a target="_blank" rel="noopener noreferrer" aria-label="share {{ $title | plainify }} on whatsapp"
href="https://api.whatsapp.com/send?text={{ $title }}%20-%20{{ $pageurl }}">
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
<path
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-58.673,127.703c-33.842,-33.881 -78.847,-52.548 -126.798,-52.568c-98.799,0 -179.21,80.405 -179.249,179.234c-0.013,31.593 8.241,62.428 23.927,89.612l-25.429,92.884l95.021,-24.925c26.181,14.28 55.659,21.807 85.658,21.816l0.074,0c98.789,0 179.206,-80.413 179.247,-179.243c0.018,-47.895 -18.61,-92.93 -52.451,-126.81Zm-126.797,275.782l-0.06,0c-26.734,-0.01 -52.954,-7.193 -75.828,-20.767l-5.441,-3.229l-56.386,14.792l15.05,-54.977l-3.542,-5.637c-14.913,-23.72 -22.791,-51.136 -22.779,-79.287c0.033,-82.142 66.867,-148.971 149.046,-148.971c39.793,0.014 77.199,15.531 105.329,43.692c28.128,28.16 43.609,65.592 43.594,105.4c-0.034,82.149 -66.866,148.983 -148.983,148.984Zm81.721,-111.581c-4.479,-2.242 -26.499,-13.075 -30.604,-14.571c-4.105,-1.495 -7.091,-2.241 -10.077,2.241c-2.986,4.483 -11.569,14.572 -14.182,17.562c-2.612,2.988 -5.225,3.364 -9.703,1.12c-4.479,-2.241 -18.91,-6.97 -36.017,-22.23c-13.314,-11.876 -22.304,-26.542 -24.916,-31.026c-2.612,-4.484 -0.279,-6.908 1.963,-9.14c2.016,-2.007 4.48,-5.232 6.719,-7.847c2.24,-2.615 2.986,-4.484 4.479,-7.472c1.493,-2.99 0.747,-5.604 -0.374,-7.846c-1.119,-2.241 -10.077,-24.288 -13.809,-33.256c-3.635,-8.733 -7.327,-7.55 -10.077,-7.688c-2.609,-0.13 -5.598,-0.158 -8.583,-0.158c-2.986,0 -7.839,1.121 -11.944,5.604c-4.105,4.484 -15.675,15.32 -15.675,37.364c0,22.046 16.048,43.342 18.287,46.332c2.24,2.99 31.582,48.227 76.511,67.627c10.685,4.615 19.028,7.371 25.533,9.434c10.728,3.41 20.492,2.929 28.209,1.775c8.605,-1.285 26.499,-10.833 30.231,-21.295c3.732,-10.464 3.732,-19.431 2.612,-21.298c-1.119,-1.869 -4.105,-2.99 -8.583,-5.232Z" />
</svg>
</a>
</li>
{{- end }}
{{- if (cond ($custom) (in $ShareButtons "telegram") (true)) }}
<a target="_blank" rel="noopener noreferrer" aria-label="share {{ $title | plainify }} on telegram"
href="https://telegram.me/share/url?text={{ $title }}&amp;url={{ $pageurl }}">
<svg version="1.1" xml:space="preserve" viewBox="2 2 28 28" height="30px" width="30px" fill="currentColor">
<path
d="M26.49,29.86H5.5a3.37,3.37,0,0,1-2.47-1,3.35,3.35,0,0,1-1-2.47V5.48A3.36,3.36,0,0,1,3,3,3.37,3.37,0,0,1,5.5,2h21A3.38,3.38,0,0,1,29,3a3.36,3.36,0,0,1,1,2.46V26.37a3.35,3.35,0,0,1-1,2.47A3.38,3.38,0,0,1,26.49,29.86Zm-5.38-6.71a.79.79,0,0,0,.85-.66L24.73,9.24a.55.55,0,0,0-.18-.46.62.62,0,0,0-.41-.17q-.08,0-16.53,6.11a.59.59,0,0,0-.41.59.57.57,0,0,0,.43.52l4,1.24,1.61,4.83a.62.62,0,0,0,.63.43.56.56,0,0,0,.4-.17L16.54,20l4.09,3A.9.9,0,0,0,21.11,23.15ZM13.8,20.71l-1.21-4q8.72-5.55,8.78-5.55c.15,0,.23,0,.23.16a.18.18,0,0,1,0,.06s-2.51,2.3-7.52,6.8Z" />
</svg>
</a>
<li>
<a target="_blank" rel="noopener noreferrer" aria-label="share {{ $title | plainify }} on telegram"
href="https://telegram.me/share/url?text={{ $title }}&amp;url={{ $pageurl }}">
<svg version="1.1" xml:space="preserve" viewBox="2 2 28 28" height="30px" width="30px" fill="currentColor">
<path
d="M26.49,29.86H5.5a3.37,3.37,0,0,1-2.47-1,3.35,3.35,0,0,1-1-2.47V5.48A3.36,3.36,0,0,1,3,3,3.37,3.37,0,0,1,5.5,2h21A3.38,3.38,0,0,1,29,3a3.36,3.36,0,0,1,1,2.46V26.37a3.35,3.35,0,0,1-1,2.47A3.38,3.38,0,0,1,26.49,29.86Zm-5.38-6.71a.79.79,0,0,0,.85-.66L24.73,9.24a.55.55,0,0,0-.18-.46.62.62,0,0,0-.41-.17q-.08,0-16.53,6.11a.59.59,0,0,0-.41.59.57.57,0,0,0,.43.52l4,1.24,1.61,4.83a.62.62,0,0,0,.63.43.56.56,0,0,0,.4-.17L16.54,20l4.09,3A.9.9,0,0,0,21.11,23.15ZM13.8,20.71l-1.21-4q8.72-5.55,8.78-5.55c.15,0,.23,0,.23.16a.18.18,0,0,1,0,.06s-2.51,2.3-7.52,6.8Z" />
</svg>
</a>
</li>
{{- end }}
</div>
{{- if (cond ($custom) (in $ShareButtons "ycombinator") (true)) }}
<li>
<a target="_blank" rel="noopener noreferrer" aria-label="share {{ $title | plainify }} on ycombinator"
href="https://news.ycombinator.com/submitlink?t={{ $title }}&u={{ $pageurl }}">
<svg version="1.1" xml:space="preserve" width="30px" height="30px" viewBox="0 0 512 512" fill="currentColor"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape">
<path
d="M449.446 0C483.971 0 512 28.03 512 62.554L512 449.446C512 483.97 483.97 512 449.446 512L62.554 512C28.03 512 0 483.97 0 449.446L0 62.554C0 28.03 28.029 0 62.554 0L449.446 0ZM183.8767 87.9921H121.8427L230.6673 292.4508V424.0079H281.3328V292.4508L390.1575 87.9921H328.1233L256 238.2489z" />
</svg>
</a>
</li>
{{- end }}
</ul>

View file

@ -1,6 +1,7 @@
<div class="social-icons">
{{- range . }}
<a href="{{ trim .url " " }}" target="_blank" rel="noopener noreferrer me" title="{{ (.title | default .name) | title }}">
<div class="social-icons" {{ with .align}}align="{{.}}" {{- end }}>
{{- range site.Params.socialIcons }}
<a href="{{ trim .url " " | safeURL }}" target="_blank" rel="noopener noreferrer me"
title="{{ (.title | default .name) | title }}">
{{ partial "svg.html" . }}
</a>
{{- end }}

File diff suppressed because one or more lines are too long

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