diff --git a/README.md b/README.md
index 8f6814c..977dbb3 100644
--- a/README.md
+++ b/README.md
@@ -46,15 +46,17 @@ are currently published.
Hugo does generate an `.ics` feed per section (for example `/veranstaltungen/index.ics`) from the `dtstart`, `dtend`
and `rrule` front matter of the pages in `content/veranstaltungen/`, using the `.ics` templates under `layouts/`.
+The site must not make the browser load anything from an external server, so third party JavaScript is checked into
+`assets/js/vendor/` and bundled in by Hugo instead of being pulled from a CDN. See the README there before updating it.
+
To build the site for upload, run:
```shell
./build.sh
```
-This deletes `public/` and runs `hugo` with the parameters from `.hugo-params`.
-
-To build with *nix*: `nix build '.?submodules=1#production-content'`
+This deletes `public/` and runs `hugo` with the parameters from `.hugo-params`. To build with *nix* instead:
+`nix build '.?submodules=1#production-content'`
## Making a change
diff --git a/archetypes/datengarten.md b/archetypes/datengarten.md
index 1c2e5ef..88fa12b 100644
--- a/archetypes/datengarten.md
+++ b/archetypes/datengarten.md
@@ -11,10 +11,10 @@ speaker:
#speaker_url:
date: {{ .Date }}
event:
- start: {{ .Date }}
- end: {{ .Date }}
+ - start: {{ .Date }}
+ - end: {{ .Date }}
location: CCCB
-language: de
+language: Englisch
streaming: true
#recording: https://media.ccc.de/v/dg-{{ .File.TranslationBaseName }}
---
diff --git a/assets/css/calendar.css b/assets/css/calendar.css
index c6e64ab..5bec886 100644
--- a/assets/css/calendar.css
+++ b/assets/css/calendar.css
@@ -36,12 +36,15 @@
border-collapse: collapse;
}
#calendar-table th, #calendar-table td {
- border: none;
+ border: 1px;
padding: 5px;
text-align: center;
vertical-align: top;
height: 50px;
width: 15%;
+ }
+ #calendar-table th
+ #calendar-table td {
position: relative;
cursor: pointer;
}
@@ -80,6 +83,8 @@
background-color: rgba(255, 255, 255, 0.1);
box-shadow: 0 0 20px rgba(255, 255, 255, 0.1);
border-radius: 8px;
+ width: 20px;
+ height: 20px;
border: 5px solid grey;
font-weight: lighter;
position: relative;
diff --git a/assets/css/custom.css b/assets/css/custom.css
deleted file mode 100644
index 0355779..0000000
--- a/assets/css/custom.css
+++ /dev/null
@@ -1,411 +0,0 @@
-/* ── Self-hosted fonts ──────────────────────────────────────────────────── */
-
-@font-face {
- font-family: 'Press Start 2P';
- src: url('/fonts/PressStart2P.woff2') format('woff2');
- font-weight: normal;
- font-style: normal;
- font-display: swap;
-}
-
-/* ── Modern micro-improvements ─────────────────────────────────────────── */
-
-/* Smooth scrolling */
-html {
- scroll-behavior: smooth;
-}
-
-/* Thin, modern scrollbar on WebKit */
-::-webkit-scrollbar { width: 6px; height: 6px; }
-::-webkit-scrollbar-track { background: transparent; }
-::-webkit-scrollbar-thumb {
- background: rgba(var(--color-neutral-500), 0.5);
- border-radius: 3px;
-}
-::-webkit-scrollbar-thumb:hover {
- background: rgba(var(--color-primary-400), 0.7);
-}
-
-/* ── Typography ─────────────────────────────────────────────────────────── */
-
-/* Tighter, more confident headings */
-h1, h2, h3 {
- letter-spacing: -0.02em;
-}
-
-/* Slightly warmer body text contrast in dark mode */
-.dark .prose {
- color: rgba(var(--color-neutral-200), 0.92);
-}
-
-/* ── Cards ──────────────────────────────────────────────────────────────── */
-
-/* Lift + glow on card hover */
-article.cursor-pointer,
-.cursor-pointer[class*="backdrop"] {
- transition: transform 0.2s ease, box-shadow 0.2s ease;
-}
-article.cursor-pointer:hover,
-.cursor-pointer[class*="backdrop"]:hover {
- transform: translateY(-3px);
- box-shadow: 0 12px 32px rgba(var(--color-primary-400), 0.12);
-}
-
-/* ── Links ──────────────────────────────────────────────────────────────── */
-
-/* Animated underline: grows from left on hover */
-.prose a:not([class]) {
- text-decoration: none;
- background-image: linear-gradient(
- rgba(var(--color-primary-400), 0.9),
- rgba(var(--color-primary-400), 0.9)
- );
- background-size: 0 1.5px;
- background-position: 0 100%;
- background-repeat: no-repeat;
- transition: background-size 0.2s ease;
-}
-.prose a:not([class]):hover {
- background-size: 100% 1.5px;
-}
-
-/* ── Header ─────────────────────────────────────────────────────────────── */
-
-/* Crisper blur on the fixed-fill-blur header */
-#menu-blur {
- backdrop-filter: blur(20px) saturate(180%);
- -webkit-backdrop-filter: blur(20px) saturate(180%);
- background: rgba(var(--color-neutral-50), 0.85) !important;
-}
-.dark #menu-blur {
- background: rgba(var(--color-neutral-900), 0.72) !important;
-}
-
-/* ── Hero / Background ──────────────────────────────────────────────────── */
-
-/* Subtle gradient vignette over hero images */
-.single_hero_background::after {
- content: "";
- position: absolute;
- inset: 0;
- background: linear-gradient(
- to bottom,
- transparent 40%,
- rgba(var(--color-neutral-200), 0.5) 100%
- );
- pointer-events: none;
-}
-.dark .single_hero_background::after {
- background: linear-gradient(
- to bottom,
- transparent 40%,
- rgba(var(--color-neutral-900), 0.6) 100%
- );
-}
-
-/* ── Focus rings ────────────────────────────────────────────────────────── */
-
-/* Modern, rounded focus ring */
-:focus-visible {
- outline: 2px solid rgba(var(--color-primary-400), 0.9);
- outline-offset: 3px;
- border-radius: 4px;
-}
-
-/* ── Buttons / Tags ─────────────────────────────────────────────────────── */
-
-/* Pill-shaped tags with subtle glow on hover */
-a[href*="/tags/"],
-a[href*="/categories/"] {
- border-radius: 9999px;
- transition: box-shadow 0.2s ease, background 0.2s ease;
-}
-a[href*="/tags/"]:hover,
-a[href*="/categories/"]:hover {
- box-shadow: 0 0 0 3px rgba(var(--color-primary-400), 0.2);
-}
-
-/* ── Code blocks ────────────────────────────────────────────────────────── */
-
-/* Rounded corners and a border on code blocks */
-.dark .highlight {
- border: 1px solid rgba(var(--color-neutral-700), 1);
- border-radius: 8px;
- overflow: hidden;
-}
-
-/* ── Retro-terminal layer ───────────────────────────────────────────────── */
-
-/* Monospace headings + neon glow in dark mode */
-.dark .prose h1,
-.dark .prose h2,
-.dark .prose h3 {
- font-family: ui-monospace, 'Cascadia Code', 'Source Code Pro', Menlo, Consolas, monospace;
- text-shadow:
- 0 0 8px rgba(var(--color-primary-400), 0.55),
- 0 0 28px rgba(var(--color-primary-400), 0.2),
- 0 0 2px rgba(192, 132, 252, 0.35);
- letter-spacing: 0;
-}
-
-/* Scanline texture (dark mode only) */
-.dark body::after {
- content: "";
- position: fixed;
- inset: 0;
- z-index: 9998;
- pointer-events: none;
- background: repeating-linear-gradient(
- 0deg,
- rgba(0, 0, 0, 0.04) 0px,
- rgba(0, 0, 0, 0.04) 1px,
- transparent 1px,
- transparent 4px
- );
-}
-
-/* Terminal window chrome on code blocks (traffic-light dots via radial gradients) */
-.dark .highlight::before {
- content: "";
- display: block;
- height: 28px;
- background-color: rgba(var(--color-neutral-800), 1);
- background-image:
- radial-gradient(circle 5px at 16px 14px, #ff5f56 0%, #ff5f56 100%),
- radial-gradient(circle 5px at 32px 14px, #ffbd2e 0%, #ffbd2e 100%),
- radial-gradient(circle 5px at 48px 14px, #27c93f 0%, #27c93f 100%);
- background-repeat: no-repeat;
- border-bottom: 1px solid rgba(var(--color-neutral-700), 0.8);
-}
-
-/* Phosphor glow on hovered prose links in dark mode */
-.dark .prose a:not([class]):hover {
- text-shadow: 0 0 8px rgba(var(--color-primary-400), 0.4);
-}
-
-/* Cyan glow on card hover in dark mode */
-.dark article.cursor-pointer:hover,
-.dark .cursor-pointer[class*="backdrop"]:hover {
- box-shadow: 0 12px 40px rgba(var(--color-primary-400), 0.18),
- 0 0 0 1px rgba(var(--color-primary-400), 0.1);
-}
-
-/* Slide-in "> " prompt before nav items on hover (dark mode) */
-.dark .main-menu a p::before {
- content: "> ";
- display: inline-block;
- max-width: 0;
- overflow: hidden;
- color: rgba(var(--color-primary-400), 0.65);
- font-family: ui-monospace, monospace;
- font-weight: normal;
- transition: max-width 0.15s ease;
- vertical-align: bottom;
-}
-.dark .main-menu a:hover p::before {
- max-width: 1.5em;
-}
-
-/* Blinking block cursor keyframe (reusable) */
-@keyframes cursor-blink {
- 0%, 100% { opacity: 1; }
- 50% { opacity: 0; }
-}
-
-/* ── Pixel font — site title ────────────────────────────────────────────── */
-
-/* Navbar site title — only the first nav (space-x-3) holds the site title link;
- the menu items live in the second nav (hidden md:flex) */
-.main-menu .flex-1 nav:first-of-type a {
- font-family: 'Press Start 2P', ui-monospace, monospace !important;
- font-size: 0.6rem !important;
- transform: scaleY(1.4);
- display: inline-block;
- letter-spacing: 0 !important;
- transition: color 0.2s ease, text-shadow 0.2s ease;
-}
-
-/* Homepage hero h1 (font-extrabold is set only on the background layout h1) */
-h1.font-extrabold {
- font-family: 'Press Start 2P', ui-monospace, monospace !important;
- letter-spacing: 0 !important;
- transition: color 0.2s ease, text-shadow 0.2s ease;
-}
-
-/* Scale down the homepage h1 — pixel fonts read best smaller */
-h1.font-extrabold {
- font-size: clamp(1rem, 2.5vw, 1.6rem) !important;
- line-height: 1.8 !important;
-}
-
-/* Purple glow on hover — navbar */
-.main-menu .flex-1 nav:first-of-type a:hover {
- color: #c084fc !important;
- text-shadow:
- 0 0 6px rgba(192, 132, 252, 0.9),
- 0 0 18px rgba(168, 85, 247, 0.6),
- 0 0 40px rgba(139, 92, 246, 0.3);
-}
-
-/* Purple glow on hover — homepage h1 */
-h1.font-extrabold:hover {
- color: #c084fc !important;
- text-shadow:
- 0 0 8px rgba(192, 132, 252, 0.9),
- 0 0 24px rgba(168, 85, 247, 0.6),
- 0 0 50px rgba(139, 92, 246, 0.3);
- cursor: default;
-}
-
-/* ── Cyberpunk layer ─────────────────────────────────────────────────────── */
-
-/* Text selection — neon cyan highlight */
-.dark ::selection {
- background: rgba(34, 211, 238, 0.2);
- color: rgba(var(--color-neutral-50), 1);
-}
-
-/* Cyberpunk background: ambient glows + drifting grid (dark mode) */
-@keyframes grid-drift {
- from { background-position: 0 0, 0 0, 0 0, 0 0; }
- to { background-position: 0 0, 0 0, 48px 48px, 48px 48px; }
-}
-
-.dark body::before {
- content: "";
- position: fixed;
- inset: 0;
- z-index: 0;
- pointer-events: none;
- background-image:
- radial-gradient(ellipse 55vw 55vh at 88% 4%, rgba(34, 211, 238, 0.07), transparent),
- radial-gradient(ellipse 45vw 45vh at 8% 96%, rgba(192, 132, 252, 0.06), transparent),
- linear-gradient(rgba(34, 211, 238, 0.018) 1px, transparent 1px),
- linear-gradient(90deg, rgba(34, 211, 238, 0.018) 1px, transparent 1px);
- background-size: 100% 100%, 100% 100%, 48px 48px, 48px 48px;
- animation: grid-drift 28s linear infinite;
-}
-
-/* Neon horizontal rule — cyan-to-magenta gradient */
-.dark .prose hr {
- border: none;
- height: 1px;
- background: linear-gradient(
- 90deg,
- transparent,
- rgba(34, 211, 238, 0.6) 20%,
- rgba(192, 132, 252, 0.6) 50%,
- rgba(34, 211, 238, 0.6) 80%,
- transparent
- );
- box-shadow: 0 0 10px rgba(34, 211, 238, 0.25);
- margin: 2em 0;
-}
-
-/* Glitch keyframes for site title */
-@keyframes neon-glitch {
- 0%, 88%, 100% { text-shadow: inherit; }
- 89% {
- text-shadow:
- -2px 0 rgba(255, 0, 128, 0.85),
- 2px 0 rgba(34, 211, 238, 0.85);
- }
- 91% {
- text-shadow:
- 2px 0 rgba(255, 0, 128, 0.85),
- -2px 0 rgba(34, 211, 238, 0.85);
- }
- 93% { text-shadow: inherit; }
- 94% {
- text-shadow:
- -1px 0 rgba(255, 0, 128, 0.6),
- 1px 0 rgba(34, 211, 238, 0.6);
- }
- 96% { text-shadow: inherit; }
-}
-
-/* Apply glitch to pixel-font site title in dark mode */
-.dark .main-menu .flex-1 nav:first-of-type a {
- animation: neon-glitch 9s infinite;
-}
-
-/* Neon card border glow — enhanced dual-color on hover */
-.dark article.cursor-pointer:hover,
-.dark .cursor-pointer[class*="backdrop"]:hover {
- box-shadow:
- 0 12px 40px rgba(34, 211, 238, 0.22),
- 0 0 0 1px rgba(34, 211, 238, 0.18),
- 0 0 20px rgba(192, 132, 252, 0.08) inset;
-}
-
-/* Neon code-block border */
-.dark .highlight {
- border-color: rgba(34, 211, 238, 0.3);
- box-shadow: 0 0 14px rgba(34, 211, 238, 0.07);
-}
-
-/* ── Fairydust rocket ───────────────────────────────────────────────────── */
-
-.fairydust-wrapper {
- position: fixed;
- z-index: 9997;
- pointer-events: none;
- width: 40px;
- overflow: visible;
-}
-
-.fairydust-wrapper.go-right {
- left: -100px;
- animation: fairydust-fly-right var(--fly-duration, 5s) linear forwards;
-}
-.fairydust-wrapper.go-left {
- right: -100px;
- animation: fairydust-fly-left var(--fly-duration, 5s) linear forwards;
-}
-
-/* Comet trail */
-.fairydust-wrapper::after {
- content: "";
- position: absolute;
- top: 50%;
- transform: translateY(-50%);
- width: 130px;
- height: 6px;
- border-radius: 3px;
-}
-.fairydust-wrapper.go-right::after {
- right: 100%;
- background: linear-gradient(to right, transparent, rgba(232, 121, 249, 0.5));
-}
-.fairydust-wrapper.go-left::after {
- left: 100%;
- background: linear-gradient(to left, transparent, rgba(232, 121, 249, 0.5));
-}
-
-.fairydust-rocket {
- width: 40px;
- height: 80px;
- animation: fairydust-glow 0.85s ease-in-out infinite alternate;
-}
-
-@keyframes fairydust-glow {
- from {
- filter:
- drop-shadow(0 0 5px rgba(232, 121, 249, 0.8))
- drop-shadow(0 0 14px rgba(232, 121, 249, 0.4));
- }
- to {
- filter:
- drop-shadow(0 0 10px rgba(232, 121, 249, 1))
- drop-shadow(0 0 26px rgba(168, 85, 247, 0.65));
- }
-}
-
-@keyframes fairydust-fly-right {
- from { left: -100px; }
- to { left: calc(100vw + 100px); }
-}
-@keyframes fairydust-fly-left {
- from { right: -100px; }
- to { right: calc(100vw + 100px); }
-}
diff --git a/assets/css/schemes/fira.css b/assets/css/schemes/fira.css
deleted file mode 100644
index 0be9b55..0000000
--- a/assets/css/schemes/fira.css
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Fira scheme — deep navy + cyan + emerald */
-:root {
- --color-neutral: 255, 255, 255;
- /* Deep cool-slate — richer than pure black in dark mode */
- --color-neutral-50: 247, 250, 252;
- --color-neutral-100: 234, 241, 248;
- --color-neutral-200: 210, 225, 238;
- --color-neutral-300: 168, 196, 218;
- --color-neutral-400: 120, 148, 178;
- --color-neutral-500: 80, 105, 135;
- --color-neutral-600: 50, 70, 100;
- --color-neutral-700: 32, 48, 70;
- --color-neutral-800: 20, 30, 48;
- --color-neutral-900: 10, 15, 25;
- /* Cyan — electric, technical */
- --color-primary-50: 236, 254, 255;
- --color-primary-100: 207, 250, 254;
- --color-primary-200: 165, 243, 252;
- --color-primary-300: 103, 232, 249;
- --color-primary-400: 34, 211, 238;
- --color-primary-500: 6, 182, 212;
- --color-primary-600: 8, 145, 178;
- --color-primary-700: 14, 116, 144;
- --color-primary-800: 21, 94, 117;
- --color-primary-900: 22, 78, 99;
- /* Emerald — nod to CCC's green */
- --color-secondary-50: 240, 253, 244;
- --color-secondary-100: 220, 252, 231;
- --color-secondary-200: 187, 247, 208;
- --color-secondary-300: 134, 239, 172;
- --color-secondary-400: 74, 222, 128;
- --color-secondary-500: 34, 197, 94;
- --color-secondary-600: 22, 163, 74;
- --color-secondary-700: 21, 128, 61;
- --color-secondary-800: 22, 101, 52;
- --color-secondary-900: 20, 83, 45;
-}
diff --git a/assets/js/clubstatus.js b/assets/js/clubstatus.js
index f9cb5bc..fffd93d 100644
--- a/assets/js/clubstatus.js
+++ b/assets/js/clubstatus.js
@@ -1,6 +1,8 @@
const spaceapiUrl = "https://spaceapi.hamburg.ccc.de"
const interval_ms = 60000
+console.log("clubstatus.js geladen!"); /* TODO: ENTFERNEN */
+
function timeDistanceDE(pastDate) {
const seconds = Math.floor((Date.now() - pastDate.getTime()) / 1000)
const minutes = Math.floor(seconds / 60)
@@ -18,7 +20,6 @@ function timeDistanceDE(pastDate) {
function updateRoomState(openState, lastChangeTimestamp) {
const roomstate = document.querySelector('#clubstatus-badge')
- if (!roomstate) return
const statusItem = roomstate.querySelector(".state")
const durationItem = roomstate.querySelector(".duration")
@@ -29,20 +30,17 @@ function updateRoomState(openState, lastChangeTimestamp) {
if (openState === null || lastChangeTimestamp === null) {
statusItem.textContent = "unbekannt"
- roomstate.classList.add("unknown")
statusItem.classList.add("unknown")
- durationItem.textContent = "(seit unbekannt)"
+ durationItem.textContent = "(since unbekannt)"
} else {
const changeDate = new Date(lastChangeTimestamp * 1000)
const sinceText = timeDistanceDE(changeDate)
if (openState) {
statusItem.textContent = "open"
- roomstate.classList.add("open")
statusItem.classList.add("open")
} else {
statusItem.textContent = "closed"
- roomstate.classList.add("closed")
statusItem.classList.add("closed")
}
diff --git a/assets/js/fairydust.js b/assets/js/fairydust.js
deleted file mode 100644
index 0565534..0000000
--- a/assets/js/fairydust.js
+++ /dev/null
@@ -1,62 +0,0 @@
-(function () {
- 'use strict';
-
- var SVG = [
- ''
- ].join('');
-
- function isDark() {
- return document.documentElement.classList.contains('dark');
- }
-
- function launch() {
- if (!isDark()) { scheduleNext(); return; }
-
- var goRight = Math.random() > 0.5;
- var topPct = 6 + Math.random() * 72;
- var duration = (3.5 + Math.random() * 4).toFixed(1);
-
- var wrapper = document.createElement('div');
- wrapper.className = 'fairydust-wrapper ' + (goRight ? 'go-right' : 'go-left');
- wrapper.style.top = topPct + 'vh';
- wrapper.style.setProperty('--fly-duration', duration + 's');
-
- var rocket = document.createElement('div');
- rocket.className = 'fairydust-rocket';
- rocket.style.transform = 'rotate(' + (goRight ? 90 : -90) + 'deg)';
- rocket.innerHTML = SVG;
-
- wrapper.appendChild(rocket);
- document.body.appendChild(wrapper);
-
- wrapper.addEventListener('animationend', function (e) {
- if (e.animationName === 'fairydust-fly-right' ||
- e.animationName === 'fairydust-fly-left') {
- wrapper.remove();
- }
- });
-
- scheduleNext();
- }
-
- function scheduleNext() {
- setTimeout(launch, 250000 + Math.random() * 950000); // 250–1200 s
- }
-
-})();
diff --git a/config/_default/hugo.toml b/config/_default/hugo.toml
index 590458c..218ffbb 100644
--- a/config/_default/hugo.toml
+++ b/config/_default/hugo.toml
@@ -1,6 +1,7 @@
theme = "blowfish"
baseURL = "/"
defaultContentLanguage = "de"
+relativeURLs = true
canonifyURLs = true
pluralizeListTitles = false
enableRobotsTXT = true
diff --git a/config/_default/params.toml b/config/_default/params.toml
index 81045ad..15fd981 100644
--- a/config/_default/params.toml
+++ b/config/_default/params.toml
@@ -28,7 +28,7 @@ giteaDefaultServer = "https://git.fsfe.org"
forgejoDefaultServer = "https://git.berlin.ccc.de"
[header]
-layout = "fixed-fill-blur" # valid options: basic, fixed, fixed-fill, fixed-gradient, fixed-fill-blur
+layout = "basic" # valid options: basic, fixed, fixed-fill, fixed-gradient, fixed-fill-blur
[footer]
showMenu = true
@@ -46,7 +46,7 @@ showMoreLink = true
showMoreLinkDest = "/post/"
cardView = true
cardViewScreenWidth = false
-layoutBackgroundBlur = true # only used when layout equals background
+layoutBackgroundBlur = false # only used when layout equals background
[article]
showDate = true
@@ -85,14 +85,14 @@ showHero = false
layoutBackgroundBlur = true # only used when heroStyle equals background or thumbAndBackground
layoutBackgroundHeaderSpace = true # only used when heroStyle equals background
showBreadcrumbs = false
-showSummary = true
+showSummary = false
showViews = false
showLikes = false
showTableOfContents = false
-showCards = true
+showCards = false
orderByWeight = false
groupByYear = true
-cardView = true
+cardView = false
cardViewScreenWidth = false
constrainItemsWidth = false
diff --git a/content/_index.md b/content/_index.md
index 67a6a3e..cb897dc 100644
--- a/content/_index.md
+++ b/content/_index.md
@@ -25,6 +25,6 @@ description: "Startseite CCCB mit Kurzkalender"
### Nächste Veranstaltungen
-{{< calendar >}}
+{{< upcoming >}}
Weitere Termine findest du im [Veranstaltungskalender](/verein/calendar/).
diff --git a/content/post/2026-08-28-normenkontrolle-asog/feature-ki-kamera.jpg b/content/post/2026-08-28-normenkontrolle-asog/feature-ki-kamera.jpg
new file mode 100644
index 0000000..05dad4a
Binary files /dev/null and b/content/post/2026-08-28-normenkontrolle-asog/feature-ki-kamera.jpg differ
diff --git a/content/post/2026-08-28-normenkontrolle-asog/index.md b/content/post/2026-08-28-normenkontrolle-asog/index.md
new file mode 100644
index 0000000..6746d47
--- /dev/null
+++ b/content/post/2026-08-28-normenkontrolle-asog/index.md
@@ -0,0 +1,66 @@
+---
+title: "Linke und Grüne ziehen gegen das Berliner Polizeigesetz vor Gericht"
+date: 2026-08-28T12:00:00+02:00
+showHero: false
+tags: ["Überwachung", "Polizeigesetz", "ASOG"]
+---
+
+{{< figure
+ src="feature-ki-kamera.jpg"
+ alt="KI-Überwachungskamera"
+ caption="KI-Überwachungskamera. Foto: netzpolitik.org, CC BY-NC-SA 4.0"
+>}}
+
+Als CDU und SPD Ende 2025 das Berliner Polizeigesetz verschärften, war die Kritik laut. Jetzt wird sie juristisch: Am 28. August 2026 haben Bündnis 90/Die Grünen und Die Linke beim Verfassungsgerichtshof des Landes Berlin einen Antrag auf Normenkontrolle eingereicht. Das höchste Berliner Gericht soll nun prüfen, ob die neuen Überwachungsbefugnisse mit der Landesverfassung vereinbar sind oder schlicht zu weit gehen.
+
+### Vor fünf Tagen war das noch ein Thema im Club
+
+Am 23. August fand unser [Aktionstag gegen Überwachung](/post/2026/08/11/aktionstag-gegen-überwachung/) statt. Rund 80 Leute kamen, um über KI-Kameras, Verhaltensscanner und das verschärfte Polizeigesetz zu reden. Auch Abgeordnete der Linksfraktion waren dabei und erzählten dort schon, dass sie gegen das Gesetz vorgehen wollen. Ein Normenkontrollantrag war im Gespräch.
+
+Jetzt liegt er vor.
+
+### Kurzer Rückblick
+
+Im Dezember 2025 beschloss die schwarz-rote Koalition eine Novelle des Allgemeinen Sicherheits- und Ordnungsgesetzes (ASOG). Heraus kam ein Gesetzespaket voller neuer digitaler Befugnisse: von Kameras, die Verhalten automatisch analysieren, bis zu einer zentralen Plattform, auf der ganz unterschiedliche Polizeidaten zusammengeführt werden dürfen.
+
+Die Berliner Datenschutzbeauftragte warnte, die Opposition warnte, unabhängige Sachverständige im Innenausschuss warnten. Passiert ist trotzdem wenig: die Kritik wurde im Verfahren nicht ausgeräumt. Genau hier setzt der Normenkontrollantrag an.
+
+### Worum es konkret geht
+
+Die Kanzlei KM8, die die Fraktionen vertritt, zählt in ihrer Begründung fünf Punkte auf, die besonders stechen:
+
+1. Die Polizei darf künftig mit Spähsoftware auf Smartphones und Computer zugreifen und zwar nicht nur bei schwersten Straftaten, sondern schon zur Verhinderung vergleichsweise kleiner Delikte. Wer solche Software baut, braucht Sicherheitslücken. Das Gesetz setzt also einen Anreiz, Lücken offenzuhalten, statt sie zu stopfen.
+
+2. Der überwachte öffentliche Raum soll automatisiert ausgewertet werden: Wer sich „auffällig" verhält, löst Alarm aus. Was auffällig ist, entscheidet der Algorithmus - ohne klare Einsatzregeln und ohne echten Schutz gegen Fehler, Diskriminierung oder Missbrauch.
+
+3. Öffentlich zugängliche Bilder aus dem Internet darf die Polizei in großem Stil biometrisch auswerten. Die Kanzlei spricht von biometrischer Massenüberwachung und von einem Abschreckungseffekt, der vor allem diejenigen trifft, die demonstrieren wollen.
+
+4. Polizeilich erhobene Daten sollen für einen komplett neuen Zweck weiterverwendet werden dürfen: das Training von KI-Systemen, teilweise sogar unter Weitergabe an private Firmen. Was genau mit welchen Daten passiert, lässt das Gesetz offen. Der Grundsatz, dass Daten nur für den Zweck genutzt werden, für den sie erhoben wurden, wird damit faktisch ausgehebelt.
+
+5. Verschiedenste Bestände dürfen auf einer zentralen Analyseplattform zusammengeführt und automatisiert ausgewertet werden auch mit KI. Übrig bleibt eine Art Riesendatenbank, in der Daten aus völlig unterschiedlichen Zusammenhängen für neue Zwecke zur Verfügung stehen. Ausgeschlossen ist dabei auch der Einsatz von Palantir nicht.
+
+### Was eine Normenkontrolle überhaupt ist
+
+Anders als bei einer konkreten Klage geht es bei der abstrakten Normenkontrolle nicht um einen einzelnen Fall. Das Gericht schaut sich das Gesetz als solches an und prüft, ob es mit der Verfassung vereinbar ist. Antragsberechtigt ist unter anderem ein Viertel der Abgeordneten genau dieses Quorum bringen Die Linke und die Grünen zusammen. Hält das Gericht einzelne Regelungen für verfassungswidrig, erklärt es sie für nichtig.
+
+### Was die Beteiligten sagen
+
+Die innenpolitischen Sprecher Vasili Franco (Grüne) und Niklas Schrader (Die Linke) nennen die Novelle einen massiven Ausbau der Überwachung. Zusammen mit der automatisierten Auswertung von Polizeidaten könnte eine „riesige Superdatenbank" entstehen, die „jegliche Grenzen des Rechtsstaates sprengt". Und sie kritisieren: Es sei völlig unklar, welche Daten künftig wofür verarbeitet werden dürfen. Für ein Parlament, das die Polizei kontrollieren soll, sei das nicht hinnehmbar.
+
+Ihr Kernargument: Polizeigesetze sind keine gewöhnlichen Gesetze. Sie entscheiden, was die Polizei in einem Rechtsstaat darf und das Gewaltmonopol des Staates muss sich an den Grundrechten messen lassen. „Verfassungswidrige Polizeigesetze sind keine guten Polizeigesetze." Deshalb halten sie eine verfassungsrechtliche Prüfung für unabdingbar.
+
+Rechtsanwalt David Werdermann, der die Fraktionen vertritt, bringt es ähnlich auf den Punkt: Die Novelle bedeute einen grundlegenden Kurswechsel, mit Befugnissen, die aus mehreren Gründen gegen Grundrechte verstoßen.
+
+### Warum das jetzt wichtig ist
+
+Der Ball liegt beim Verfassungsgerichtshof. Dessen Entscheidung wird nicht nur über die einzelnen Punkte entscheiden, sondern grundsätzlich darüber, wie viel Überwachung die Landesverfassung überhaupt hergibt – vom Verhaltensscanner im öffentlichen Raum bis zur zentralen Datenanalyse.
+
+Wie das ausgeht, ist offen. Sicher ist nur: Der Streit um das Polizeigesetz wird nicht mehr allein politisch geführt, sondern jetzt auch vor Gericht.
+
+### Zum Weiterlesen
+
+- Linksfraktion Berlin: [Linke und Grüne erheben Normenkontrolle gegen verfassungswidrige Regelungen im schwarz-roten Polizeigesetz](https://www.linksfraktion.berlin/politik/presse/detail/news/linke-und-gruene-erheben-normenkontrolle-gegen-verfassungswidrige-regelungen-im-schwarz-roten-polizeigesetz/)
+- Verfassungsblog: [„Try harder hilft selten": die ASOG-Novelle verfassungsrechtlich eingeordnet](https://verfassungsblog.de/berlin-asog-novelle-kbos/)
+- taz: [KI-Videoüberwachung in Berlin: Verhaltensscanner bald auch vor dem Abgeordnetenhaus](https://taz.de/KI-Videoueberwachung-in-Berlin/!6160851/)
+- netzpolitik.org: [So wehrt man sich gegen Verhaltensscanner](https://netzpolitik.org/2026/ki-gestuetzte-videoueberwachung-in-berlin-so-wehrt-man-sich-gegen-verhaltensscanner/)
+- beck-aktuell: [Kameras und KI-Einsatz: Berlin verschärft Polizeigesetz](https://www.beck-aktuell.de/heute-im-recht/rechtspolitik-gesetzgebung/berlin-verschaerfung-polizeigesetz-2025-12-04)
diff --git a/content/post/2026-09-21-thiel-ante-portas/feature-peter-thiel.jpg b/content/post/2026-09-21-thiel-ante-portas/feature-peter-thiel.jpg
new file mode 100644
index 0000000..e2726e6
Binary files /dev/null and b/content/post/2026-09-21-thiel-ante-portas/feature-peter-thiel.jpg differ
diff --git a/content/post/2026-09-21-thiel-ante-portas/index.md b/content/post/2026-09-21-thiel-ante-portas/index.md
new file mode 100644
index 0000000..df5643f
--- /dev/null
+++ b/content/post/2026-09-21-thiel-ante-portas/index.md
@@ -0,0 +1,85 @@
+---
+title: "Peter Thiel ante portas"
+date: 2026-08-28T12:00:00+02:00
+showHero: false
+tags: ["Überwachung", "Palantir", "Ankündigung"]
+---
+
+{{< figure
+ src="feature-peter-thiel.jpg"
+ alt="Peter Thiel"
+ caption="Peter Thiel. Foto: Gage Skidmore, CC BY-SA 2.0"
+>}}
+
+### Was?
+
+Am 24. September nimmt Peter Thiel in Berlin den Axel-Springer-Award entgegen. Drei Tage vorher, am 21. September, schauen wir uns im Club an, wer da eigentlich geehrt wird. Denn der Mann, den Axel Springer da auszeichnet, ist kein harmloser Tech-Unternehmer.
+
+Peter Thiel hat PayPal mitgegründet, früh in Facebook investiert und mit Palantir eines der wichtigsten Überwachungsunternehmen der Welt aufgebaut. Er ist einer der reichsten und einflussreichsten Männer des Silicon Valley, und seine Vorstellungen davon, wie die Welt aussehen soll, sind radikal. Darüber wollen wir reden.
+
+### Wer ist Peter Thiel?
+
+Peter Thiel wurde 1967 in Frankfurt am Main geboren und wanderte als Kind mit seiner Familie in die USA aus. Er studierte Philosophie in Stanford, machte einen Abschluss in Jura und arbeitete kurz als Anwalt, bevor er in die Tech-Welt wechselte. 1998 gründete er mit Max Levchin das Unternehmen Confinity, aus dem später PayPal wurde. Als eBay PayPal 2002 für 1,5 Milliarden Dollar kaufte, war Thiel als Vorstandschef der große Gewinner.
+
+Danach wurde er zu einer der zentralen Figuren des Silicon Valley. 2004 gab er als erster externer Investor eine halbe Million Dollar in ein damals unbekanntes Studentenprojekt namens Facebook. Mit seiner Wagniskapitalfirma Founders Fund steckte er früh Geld in Unternehmen wie SpaceX, Airbnb und die Rüstungsfirma Anduril. Und mit dem Thiel Fellowship bezahlt er seit 2011 junge Menschen dafür, ihr Studium abzubrechen und stattdessen Firmen zu gründen.
+
+Vor allem aber steht sein Name für Palantir.
+
+### Palantir
+
+Palantir ist nach den Sehsteinen aus Tolkiens „Herr der Ringe" benannt, den Palantíri. Das passt, denn die Firma baut genau das: Software, die alles sehen soll. Ihre Werkzeuge durchforsten riesige Datenmengen nach Mustern, Verbindungen und Auffälligkeiten.
+
+Die Kundschaft sind Geheimdienste, Militärs und Polizeibehörden. Palantir-Software half der US-Einwanderungsbehörde ICE dabei, Abschiebungen zu organisieren. Sie unterstützt Militärs bei der Auswahl von Zielen und steckt hinter polizeilichen Analyse- und Vorhersagesystemen. In Großbritannien hat sich Palantir einen umstrittenen Vertrag über die Gesundheitsdaten des staatlichen NHS gesichert.
+
+Auch bei uns wird darum gestritten. Erst kürzlich haben wir [darüber geschrieben]({{< ref "post/2026-08-28-normenkontrolle-asog" >}}), dass im neuen Berliner Polizeigesetz der Einsatz von Palantir ausdrücklich nicht ausgeschlossen ist. Die zentrale Analyseplattform, die dieses Gesetz vorsieht, ist genau das Geschäftsmodell von Palantir.
+
+### Thiels Weltbild
+
+Thiel ist nicht nur Geschäftsmann. Er hat eine klare politische Agenda, und die ist erklärtermaßen antidemokratisch. 2009 schrieb er in einem Essay: „I no longer believe that freedom and democracy are compatible." Zu Deutsch: Ich glaube nicht mehr daran, dass Freiheit und Demokratie vereinbar sind. Im selben Text machte er das Wahlrecht für Frauen und den Sozialstaat dafür verantwortlich, dass die liberale Demokratie seiner Ansicht nach gescheitert ist.
+
+Er steht dem Umfeld der sogenannten Neoreaktion nahe, einer Denkrichtung, die die Demokratie für gescheitert hält und stattdessen autoritäre Strukturen anstrebt. Ein Vordenker dieser Szene, Curtis Yarvin, träumt öffentlich von der Abschaffung des Parlamentarismus und von einem Staat, der wie ein Unternehmen geführt wird, mit einem Chef an der Spitze statt gewählter Vertreter:innen. Thiel hat Yarvin über Jahre gefördert und gepriesen.
+
+Thiels Geld fließt auch in die Politik. Er unterstützte Donald Trump bereits 2016 und finanzierte 2022 mit 15 Millionen Dollar die Senatskampagne von JD Vance, dem heutigen Vizepräsidenten der USA. Es war damals die größte Einzelspende an einen Senatskandidaten. Und mit dem Seasteading Institute wollte er schwimmende Stadtstaaten errichten, die sich staatlicher Regeln komplett entziehen.
+
+Kurz gesagt: Hier geht es um jemanden, der die Demokratie nicht nur kritisiert, sondern sie abschaffen will.
+
+### Thiels Glaube und der Antichrist
+
+Was viele bei Thiel übersehen: Seine Weltsicht ist tief religiös geprägt, allerdings auf eine sehr eigene Art. Thiel ist gläubiger Christ, aber weit entfernt vom Mainstream. Sein Denken ist stark von dem französischen Philosophen René Girard beeinflusst, dessen Theorie um Nachahmung, Sündenböcke und Apokalypse kreist. Thiel hat Girard über Jahre studiert und dessen apokalyptische Grundhaltung übernommen.
+
+Das zeigt sich besonders bei einem Thema, über das Thiel immer wieder spricht: den Antichristen. Thiel nimmt das wörtlich. In Interviews beschreibt er den Antichristen als eine Figur, die einen weltweiten Einheitsstaat errichtet, einen falschen Frieden verspricht und dabei jede Freiheit abschafft. Zentrale Datenmacht, allgegenwärtige Überwachung und Dinge wie das chinesische Social-Credit-System ordnet er in dieses Endzeitszenario ein. Er beschreibt sich selbst als jemand, der die Zeichen dafür überall erkennt.
+
+An dieser Stelle lohnt es sich, kurz innezuhalten. Denn hier steckt ein bemerkenswerter Widerspruch: Thiel warnt vor einem totalitären Überwachungsstaat als Vorboten des Antichristen, während er gleichzeitig mit Palantir das leistungsfähigste Überwachungsunternehmen der Welt aufbaut und an genau die Staaten verkauft, vor denen er angeblich warnt. Ob man das nun für aufrichtige Angst, für Zynismus oder für beides hält: Es sagt eine Menge über diesen Mann aus, dass sein Geschäft genau das herstellt, was sein Glaube verdammt.
+
+### Der Axel-Springer-Award
+
+Vor diesem Hintergrund ist es bemerkenswert, dass ausgerechnet Axel Springer diesen Mann auszeichnet. Axel Springer ist einer der größten Medienkonzerte Europas und gibt Blätter wie Bild und Welt heraus. Den Axel-Springer-Award verleiht der Konzern seit Jahren an Persönlichkeiten der Digitalwirtschaft, unter den bisherigen Preisträgern waren Mark Zuckerberg, Jeff Bezos und Elon Musk.
+
+Mit Peter Thiel ehrt Axel Springer nun einen Mann, der offen erklärt hat, dass er Demokratie und Freiheit für unvereinbar hält. Die Verleihung am 24. September in Berlin ist eine Bühne. Wir finden: Sie sollte nicht unwidersprochen bleiben. Deshalb laden wir drei Tage vorher in den Club ein.
+
+### Programm
+
+**19:00 Uhr: Vortrag** \
+Wer ist Peter Thiel? Was macht Palantir? Welche Netzwerke, welches Weltbild und welcher Glaube stecken dahinter? Und warum ist das alles gefährlich?
+
+**Anschließend: Austausch** \
+Diskussion und offener Austausch, offenes Ende.
+
+Ihr braucht kein Vorwissen. Kommt einfach vorbei.
+
+### Wo?
+
+📍 **Chaos Computer Club Berlin, Marienstraße 11, 10117 Berlin**
+
+🚈 Etwa 5 Minuten ab dem S-Bahnhof Friedrichstraße
+
+### Wann?
+
+**📆 Montag, 21. September 2026** \
+**ab 19:00 Uhr**
+
+### Zum Weiterlesen
+
+- Wikipedia: [Peter Thiel](https://de.wikipedia.org/wiki/Peter_Thiel)
+- Wikipedia: [Palantir Technologies](https://de.wikipedia.org/wiki/Palantir_Technologies)
+- Wikipedia: [Axel Springer SE](https://de.wikipedia.org/wiki/Axel_Springer_SE)
diff --git a/content/sonstiges/oma_paulsen_erzählt_von_früher.md b/content/sonstiges/oma_paulsen_erzählt_von_früher.md
new file mode 100644
index 0000000..01ce32a
--- /dev/null
+++ b/content/sonstiges/oma_paulsen_erzählt_von_früher.md
@@ -0,0 +1,130 @@
+---
+title: "Oma Paulsen erzählt von früher"
+date: 2018-05-20T23:16:30+02:00
+menu:
+ main:
+ parent: "sonstiges"
+draft: true
+---
+
+Rundfunk
+--------
+
+- [Bilder zur Geschichte des Rundfunks bis
+ 1945](http://www.dra.de/galerie.htm) Bilder DRA
+- [Rundfunkwerbung der dreißiger Jahre von Elly
+ Heuss-Knapp](http://www.dra.de/dok_0504.htm)
+- [Hans Fritsche. Rundfunk im totalen Krieg. (Reichsrundfunk 1944/45,
+ Heft 13, S
+ 135ff.)](http://www.mediaculture-online.de/fileadmin/bibliothek/fritzsche_total/fritzsche_total.pdf)
+ (PDF)
+- [Verbot des Niggerjazz. Teil einer auf der Intendantentagung am 12.
+ Oktober 1935 gehaltenen
+ Rede.](http://www.mediaculture-online.de/fileadmin/bibliothek/hadamovsky_jazz/hadamovsky_jazz.pdf)
+ (PDF)
+- [Zensur im Rundfunk. Niederschrift zur Sitzung des Programmrates des
+ deutschen Rundfunks aus dem Jahr
+ 1929](http://www.mediaculture-online.de/fileadmin/bibliothek/hardt_zensur/hardt_zensur.pdf)
+ (PDF)
+- [Calling .... 2LO
+ Calling](http://www.sciencemuseum.org.uk/exhibitions/2lo/) The set
+ of equipment which transmitted the BBC’s first-ever programme
+
+Computer
+--------
+
+- [Fördermaßnahmen zur Etablierung der Datenverarbeitung in
+ (West-)Deutschland. Von Konrad Zuse bis zum 1. DV-Programm des
+ Bundes 1967.](http://www.susas.de/computergeschichte_02.htm)
+- [Informatik und Rechentechnik in der
+ DDR](http://waste.informatik.hu-berlin.de/robotron/studienarbeit/index.html)
+- [EDV-Einführung in der DDR in der Epoche des "Neuen ökonomischen
+ Systems](http://www.susas.de/einfuehrung_edv_ddr_r300/index.htm)
+- [Kleincomputer in der
+ DDR](http://waste.informatik.hu-berlin.de/robotron/diplom/texte/einleitung/einleitung.html)
+- [Computersendungen im Rundfunk der
+ DDR](http://waste.informatik.hu-berlin.de/robotron/studienarbeit/files/literatur/rundfunk/rundfunk.html)
+- [Computergeschichte und
+ Militär](http://www.susas.de/computer_militaer/index.htm)
+- [Computer während Weltkrieg
+ zwei](http://robotron.informatik.hu-berlin.de/WW2/default.html)
+- [Adam Thornton: A Brief History of the Rice Computer.
+ 1959-1971](http://www.princeton.edu/~adam/R1/r1rpt.html)
+- [Ivan Sutherland. Sketchpad: A man-machine graphical communication
+ system. Massachusetts: Ph. D. Thesis,
+ 1963](http://www.cl.cam.ac.uk/TechReports/UCAM-CL-TR-574.pdf)
+ elektronische Version, 2003 (PDF)
+- [Jeff Johnson, Teresa L. Roberts: The Xerox "Star": A
+ Retrospective](http://digibarn.com/friends/curbow/star/retrospect/index.html)
+- [David Canfield Smith et al.Designing the Star User
+ Interface](http://www.aci.com.pl/mwichary/guidebook/articles/designingthestaruserinterface)
+- [Alan C. Kay. The Early History of
+ Smalltalk](http://gagne.homedns.org/~tgagne/contrib/EarlyHistoryST.html)
+- [Alan Kay: Doing with Images Makes Symbols Pt
+ 1](http://www.archive.org/movies/details-db.php?collection=opensource_movies&collectionid=AV_Geek_Skip_20021212061248)
+- [Alan Kay: Doing with Images Makes Symbols Pt
+ 2](http://www.archive.org/movies/details-db.php?collection=opensource_movies&collectionid=AV_Geek_Skip_20021212071234)
+- [Adele Goldberg, Alan C. Kay. Smalltalk72 Instruction
+ Manual](http://bitsavers.org/pdf/xerox/alto/Smalltalk72_Manual.pdf)
+ (PDF)
+- [Licklider, J. C. R. Man-Computer Symbiosis. IRE Transactions on
+ Human Factors in Electronics, HFE-1, 4-11,
+ 1960](http://memex.org/licklider.pdf) (PDF)
+- [Licklider, J. C. R., & Taylor, R. The Computer as a Communication
+ Device. Science and Technology (4), 21-41,
+ 1968](http://memex.org/licklider.pdf)
+- [William Henry Gates. An Open Letter to Hobbyists. February 3,
+ 1976](http://www.blinkenlights.com/classiccmp/gateswhine.html)
+- [Dennis Mocigemba. Ideengeschichte der Computernutzung. Metaphern
+ der Computernutzung und
+ Qualitätssicherungsstrategien](http://edocs.tu-berlin.de/diss/2003/mocigemba_dennis.htm)
+- [Computer
+ Chronicles](http://www.archive.org/movies/computerchronicles.php) -
+ 618 episodes
+
+Roboter
+-------
+
+- [Leave It to
+ Roll-Oh](http://www.archive.org/movies/details-db.php?collection=prelinger&collectionid=07898)
+ Tongue-in-cheek film showing a domestic robot freeing housewives of
+ their chores (and intimating that their work is hardly necessary);
+ actually a promo showing how relays and switches function in the
+ modern automobile. Shown at the New York World's Fair in 1940.
+ (1940)
+- [Robots makes
+ radios](http://www.sciencemuseum.org.uk/on-line/ecme/) (1947)
+
+Vermischtes
+-----------
+
+- [Der Schwarze Kanal 1960-1989](http://dra.orb.de/) digitalisierte
+ Sendemanuskripte
+- [Technikgeschichte](http://fotothek.slub-dresden.de/index.html?/technik/technik.html)
+ Deutsche Fothothek, SUB Dresden
+- [The Early History of Talking
+ Machines](http://www.haskins.yale.edu/haskins/HEADS/simulacra.html)
+- ["Die telegraphischen Verbindungen Deutschlands mit seinen Kolonien"
+ von Ober Postpraktikant H. Thurn
+ Koblenz](http://www.jaduland.de/kolonien/text/televerbindung.html)
+- [Die modernen Medien der Weimarer
+ Republik](http://www.ralf-hecht.de/weimar/)
+- [120 Years of Electronic Music](http://www.obsolete.com/120_years/)
+ Electronic Musical Instrument 1870 - 1990
+- [Verbotene Bilder, manipulierte Filme
+ (I+II).](http://www.deutsches-filminstitut.de/dt2tai01.htm) Zur
+ Edition der Zensurentscheidungen der Berliner Film-Oberprüfstelle
+ aus den Jahren 1920 bis 1938
+
+Filme aus dem Archiv der CBC (in behämmertem Format)
+
+- [A Network called
+ "Internet"](http://archives.cbc.ca/IDC-1-75-710-4205/science_technology/computers/) 8.
+ Oktober 1993
+- [Kids and their
+ Computers](http://archives.cbc.ca/400d.asp?id=1-75-710-4186) 26.
+ Oktober 1982
+- [IDA, der
+ Geldautomat](http://archives.cbc.ca/400d.asp?id=1-75-710-4201) 12.
+ April 1968
+
diff --git a/content/veranstaltungen/bastelabend.md b/content/veranstaltungen/bastelabend.md
new file mode 100644
index 0000000..c787c17
--- /dev/null
+++ b/content/veranstaltungen/bastelabend.md
@@ -0,0 +1,32 @@
+---
+title: "Bastelabend"
+subtitle: "Der Bastelabend jeden 1. und 3. Samstag im Monat"
+date: 2025-01-08T20:00:00+02:00
+dtstart: 20250118T170000
+dtend: 20250118T230000
+rrule: "FREQ=MONTHLY;BYDAY=1SA,3SA;WKST=MO"
+menu:
+ main:
+ parent: "Veranstaltungen"
+tag: ["Veranstaltung"]
+draft: true
+---
+
+
+{{< figure
+ src="/img/club/27481933907_f240f4232d.jpg"
+ title="Lötkolben im CCCB"
+ alt="Lötkolben im CCCB"
+ caption="Lötkolben im CCCB"
+>}}
+
+
+**Jeden 1. und 3. Samstag im Monat ist ab 17 Uhr Bastelabend im Club.**
+
+
+
+{{< alert "circle-info" >}}
+Wenn ihr neu seid und den CCCB zum ersten Mal besuchen wollt, kommt am besten an einem Donnerstag zum [Club Discordia](/veranstaltungen/clubdiscordia/), da samstags nicht immer genug Leute da sind, um euch zu empfangen.
+
+Generell sind aber alle, die schon mal im Club waren, herzlich eingeladen, an den Bastelabenden vorbeizukommen.
+{{< /alert >}}
diff --git a/content/veranstaltungen/chaosradio.md b/content/veranstaltungen/chaosradio.md
index 0576910..f9357ac 100644
--- a/content/veranstaltungen/chaosradio.md
+++ b/content/veranstaltungen/chaosradio.md
@@ -19,7 +19,7 @@ tag: ["Veranstaltung"]
caption="Chaosradio logo"
>}}
-[Chaosradio](https://chaosradio.ccc.de) ist der Podcast des CCCB. Seit 2020 zeichnen
+[Chaosradio](https://chaosradio.ccc.de) ist der Podcast des CCCB. Seit 2020 zeichen
wir ihn remote auf. Gelegentlich finden Sendungen vor Live-Publikum im Club, auf
oder auf CCC-Veranstaltungen statt. Dies kündigen wir im Vorfeld separat an.
diff --git a/content/veranstaltungen/cms.md b/content/veranstaltungen/cms.md
index c539d09..2aa4048 100644
--- a/content/veranstaltungen/cms.md
+++ b/content/veranstaltungen/cms.md
@@ -42,7 +42,7 @@ Wissen der Menschheit. All diese Ziele werden auch vom Gesamtkonzept
Internet getragen, weshalb es dem CCC naheliegt, sich genau dort als
öffentlicher Ansprechpartner einzufinden, wo das Internet als Werkzeug
im Alltag überall Einzug hält. Von:
-[München – CCC Schule](http://schule.muc.ccc.de/)
+\[[München](http://schule.muc.ccc.de/%5DCCC)
Regelmäßige Treffen
-------------------
@@ -208,7 +208,7 @@ Mailingliste
Die Mailingliste richtet sich an alle, die bei Chaos macht Schule in
Berlin aktiv sind. Subscribe-Anfragen von uns nicht bekannten Personen
-können wir deshalb leider nicht annehmen. Falls wir dich nicht
+können wir deshalb leider nicht annehmen. Falls wir dich nicht nicht
kennen, komm doch gerne mal bei einem unserer Treffen vorbei.
- **Mitglieder-Liste:**
diff --git a/content/veranstaltungen/neujahresempfang.md b/content/veranstaltungen/neujahresempfang.md
index 3a0f189..98de614 100644
--- a/content/veranstaltungen/neujahresempfang.md
+++ b/content/veranstaltungen/neujahresempfang.md
@@ -1,7 +1,7 @@
---
title: "Neujahresempfang"
subtitle: "#NJE 26"
-date: 2026-05-23T18:00:00+02:00
+date: 2025-03-05T18:00:00+02:00
dtstart: 20260523T180000
dtend: 20260524T100000
menu:
diff --git a/content/veranstaltungen/plenum.md b/content/veranstaltungen/plenum.md
index 64cd407..202ed96 100644
--- a/content/veranstaltungen/plenum.md
+++ b/content/veranstaltungen/plenum.md
@@ -2,16 +2,16 @@
title: "Plenum (club closed - members only)"
subtitle: "Instrument der internen Konsensfindung"
date: 2018-05-18T01:11:54+02:00
-dtstart: 20180710T200000
-dtend: 20180710T220000
+dtstart: 20180704T200000
+dtend: 20180704T220000
rrule: "FREQ=MONTHLY;BYDAY=2TU,4TU;INTERVAL=1;WKST=MO"
-members_only: true
-tag: ["Mitgliedschaft", "Veranstaltung"]
+tags: ["Mitgliedschaft", "Veranstaltung"]
+draft: true
---
Das Plenum findet in der Regel am 2. und 4. Dienstag im Monat ab 20:00 Uhr in den Clubräumen
des CCCB statt.
Als Instrument der internen Konsensbildung, bei dem Interna diskutiert werden,
-richtet sich das Plenum **ausschließlich an Mitglieder oder explizit eingeladene Gäste**.
+richtet sich das Plenum **aussließlich an Mitglieder oder explizit eingeladene Gäste**.
diff --git a/content/veranstaltungen/spieleabend.md b/content/veranstaltungen/spieleabend.md
index 3ba69b3..ab3d120 100644
--- a/content/veranstaltungen/spieleabend.md
+++ b/content/veranstaltungen/spieleabend.md
@@ -2,8 +2,8 @@
title: "Spieleabend"
subtitle: "Der Spieleabend jeden 2. und 4. Samstag im Monat"
date: 2025-01-08T20:00:00+02:00
-dtstart: 20250111T170000
-dtend: 20250111T230000
+dtstart: 20250125T170000
+dtend: 20250125T230000
rrule: "FREQ=MONTHLY;BYDAY=2SA,4SA;WKST=MO"
menu:
main:
diff --git a/content/veranstaltungen/subbotnik.md b/content/veranstaltungen/subbotnik.md
index 552c035..a520035 100644
--- a/content/veranstaltungen/subbotnik.md
+++ b/content/veranstaltungen/subbotnik.md
@@ -9,6 +9,7 @@ menu:
main:
parent: "Veranstaltungen"
tag: ["Veranstaltung"]
+draft: true
---

diff --git a/content/veranstaltungen/thiel-ante-portas.md b/content/veranstaltungen/thiel-ante-portas.md
new file mode 100644
index 0000000..d595c7b
--- /dev/null
+++ b/content/veranstaltungen/thiel-ante-portas.md
@@ -0,0 +1,22 @@
+---
+title: "Peter Thiel ante portas"
+subtitle: "Vortrag und Austausch über Peter Thiel, Palantir und den Axel-Springer-Preis"
+date: 2026-08-28T12:00:00+02:00
+dtstart: 20260921T190000
+dtend: 20260921T220000
+menu:
+ main:
+ parent: "Veranstaltungen"
+tag: ["Veranstaltung"]
+---
+
+**Am 21. September schauen wir uns an, wer da am 24. September in Berlin ausgezeichnet wird.**
+
+Peter Thiel kommt nach Berlin, um den Axel-Springer-Award entgegenzunehmen. Er ist Mitgründer von PayPal und Palantir, früher Investor bei Facebook und einer der einflussreichsten Geldgeber der Tech-Rechten. Grund genug, sich ihn genauer anzusehen.
+
+Das Programm:
+
+- **19:00 Uhr:** Vortrag zu Peter Thiel, Palantir und seinen Netzwerken
+- **anschließend:** Offener Austausch und Diskussion, offenes Ende
+
+📍 Chaos Computer Club Berlin, Marienstraße 11, 10117 Berlin
diff --git a/dev.sh b/dev.sh
deleted file mode 100755
index 2db7841..0000000
--- a/dev.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/sh
-
-set -e
-
-hugo server \
- --buildDrafts \
- --buildFuture \
- --disableFastRender \
- --bind 0.0.0.0 \
- --port 1313
diff --git a/layouts/_default/list.xml.xml b/layouts/_default/list.xml.xml
index 9b683a4..4e54e3e 100644
--- a/layouts/_default/list.xml.xml
+++ b/layouts/_default/list.xml.xml
@@ -2,10 +2,10 @@
{{ range .Pages }}
- {{ .Title | html }}
+ {{ .Title }}
{{ .Permalink }}
{{ .Date.Format "2006-01-02" }}
- {{ .Summary | plainify | html }}
+ {{ .Summary | plainify }}
{{ with .Params.location }}{{ . }}{{ end }}
{{ end }}
diff --git a/layouts/_default/single.ics b/layouts/_default/single.ics
deleted file mode 100644
index f979b43..0000000
--- a/layouts/_default/single.ics
+++ /dev/null
@@ -1,21 +0,0 @@
-BEGIN:VCALENDAR
-VERSION:2.0
-PRODID:-//CCCB//Calendar//DE
-{{ with .Title }}
-X-WR-CALNAME:{{ . }}
-{{ end }}
-CALSCALE:GREGORIAN
-METHOD:PUBLISH
-{{ if and .Date (not .Params.members_only) }}
-BEGIN:VEVENT
-UID:{{ .File.UniqueID }}@berlin.ccc.de
-DTSTAMP:{{ .Date.UTC.Format "20060102T150405Z" }}
-DTSTART:{{ .Date.UTC.Format "20060102T150405Z" }}
-{{ with .Params.event.end }}DTEND:{{ dateFormat "20060102T150405Z" . }}{{ end }}
-SUMMARY:{{ .Title }}
-DESCRIPTION:{{ .Summary | plainify }}
-URL:{{ .Permalink }}
-{{ with .Params.location }}LOCATION:{{ . }}{{ end }}
-END:VEVENT
-{{ end }}
-END:VCALENDAR
diff --git a/layouts/datengarten/section.ics b/layouts/datengarten/section.ics
index f37b9b8..d6a9227 100644
--- a/layouts/datengarten/section.ics
+++ b/layouts/datengarten/section.ics
@@ -21,7 +21,6 @@ END:STANDARD
END:VTIMEZONE
{{ range .Pages }}
-{{ if and .Params.event.start .Params.event.end -}}
BEGIN:VEVENT
ORGANIZER;CN="CCCB":mailto:datengarten@berlin.ccc.de
SUMMARY:{{ .Title }}{{ with .Params.subtitle }}: {{ . }}{{ end }}
@@ -35,6 +34,5 @@ LOCATION:{{ with .Params.location }}{{ . }}{{ else }}CCCB{{ end }}
URL:{{ .Permalink }}
DESCRIPTION:{{ .Permalink }}
END:VEVENT
-{{ end -}}
{{ end }}
END:VCALENDAR
diff --git a/layouts/datengarten/section.xml b/layouts/datengarten/section.xml
index 41673dd..47eaf0c 100644
--- a/layouts/datengarten/section.xml
+++ b/layouts/datengarten/section.xml
@@ -11,21 +11,21 @@
{{range .Pages.ByDate -}}
-
+ {{dateFormat "2006-01-02T15:04:05" .Params.event.start}}{{dateFormat "15:04:05" .Params.event.start}}{{ $end := time .Params.event.end }}{{ $t := time "1970-01-01"}}{{ dateFormat "15:04" ( $t.Add ( $end.Sub (time .Params.event.start) ) ) }}Saal23dg-{{.Params.no}}
- {{.Title | html}}
- {{with .Params.subtitle}}{{. | html}}{{end}}
+ {{htmlEscape .Title}}
+ {{with .Params.subtitle}}{{htmlEscape .}}{{end}}{{.Params.language}}
-
-
+
+
- {{.Params.speaker | html}}
+ {{htmlEscape .Params.speaker}}
diff --git a/layouts/page/single.ics b/layouts/page/single.ics
index 77ac42e..50a1de3 100644
--- a/layouts/page/single.ics
+++ b/layouts/page/single.ics
@@ -25,7 +25,7 @@ SUMMARY:{{.Title}}
UID:{{lower (replace .Title " " "")}}@berlin.ccc.de
SEQUENCE:0
STATUS:CONFIRMED
-DTSTAMP:{{ now.Format "20060102T150405Z" }}
+DTSTAMP:20180508T200000Z
DTSTART;TZID=Europe/Berlin:{{.Params.dtstart}}
DTEND;TZID=Europe/Berlin:{{.Params.dtend}}
RRULE:{{.Params.rrule}}
diff --git a/layouts/partials/extend-footer.html b/layouts/partials/extend-footer.html
deleted file mode 100644
index 604753b..0000000
--- a/layouts/partials/extend-footer.html
+++ /dev/null
@@ -1,2 +0,0 @@
-{{ $fairydust := resources.Get "js/fairydust.js" | resources.Minify | resources.Fingerprint "sha512" }}
-
diff --git a/layouts/partials/footer.html b/layouts/partials/footer.html
index 1707fcf..12a2638 100644
--- a/layouts/partials/footer.html
+++ b/layouts/partials/footer.html
@@ -52,7 +52,7 @@