2026-09-17 13:01:50 +00:00
<!doctype html> < html lang = de dir = ltr >< head >< meta charset = utf-8 >< meta name = viewport content = "width=device-width" >< link rel = icon type = image/png href = /avatar.png >< title ></ title >< script src = https://cdn.jsdelivr.net/npm/@tailwindcss/browser@4 ></ script >< link rel = stylesheet type = text/css href = https://cdn.jsdelivr.net/gh/devicons/devicon@latest/devicon.min.css >< link rel = stylesheet href = https://cdnjs.cloudflare.com/ajax/libs/font-awesome/7.0.1/css/all.min.css integrity = "sha512-2SwdPD6INVrV/lHTZbO2nodKhrnDdJK9/kg2XD1r9uGqPo1cUbujc+IYdlYdEErWNu69gVcYgdxlmVmzTWnetw==" crossorigin = anonymous referrerpolicy = no-referrer >< style >@ import 'https://fonts.googleapis.com/css2?family=Ubuntu+Sans+Mono:ital,wght@0,400..700;1,400..700&display=swap' ;. font-jersey { font-family : ubuntu sans mono , monospace ; font-optical-sizing : auto ; font-style : normal }. md-content . katex-display { max-width : 100 % ; overflow-x : auto ; overflow-y : hidden ; -webkit- overflow-scrolling : touch ; padding-left : .25 rem ; padding-right : .25 rem }. md-content . katex-display > . katex { display : inline-block ; max-width : 100 % }. swup-transition-fade { opacity : 1 ; transition : 300 ms ease-in-out }. is-animating . swup-transition-fade { opacity : 0 }. swup-transition-fade { opacity : 1 ; transition : opacity 300 ms ease-in-out } html . is-animating . swup-transition-fade { opacity : 0 } html . is-animating { cursor : progress } html . is-leaving . swup-transition-fade { opacity : 0 }</ style >< script src = https://unpkg.com/swup@4 ></ script >< script src = https://unpkg.com/@swup/preload-plugin@3 ></ script >< script src = https://unpkg.com/@swup/progress-plugin@3 ></ script >< script > const swup = new Swup ({ containers : [ "#swup" ], animationSelector : '[class*="swup-transition-"]' , cache :! 0 , preload :! 0 , animateHistoryBrowsing :! 0 , plugins : [ new SwupPreloadPlugin , new SwupProgressPlugin ]}); window . swup = swup </ script >< link rel = stylesheet href = https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.min.css crossorigin = anonymous >< script defer src = https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.min.js crossorigin = anonymous ></ script >< script defer src = https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/contrib/auto-render.min.js crossorigin = anonymous ></ script >< script > const KATEX_CONFIG = { delimiters : [{ left : "$$" , right : "$$" , display :! 0 },{ left : "$" , right : "$" , display :! 1 },{ left : "\\[" , right : "\\]" , display :! 0 },{ left : "\\(" , right : "\\)" , display :! 1 }], ignoredTags : [ "script" , "noscript" , "style" , "textarea" , "pre" , "code" ], throwOnError :! 1 }; function renderKatex (){ if ( typeof renderMathInElement != "function" ){ console . log ( "⏳ Waiting for KaTeX to load..." ); return } const e = document . getElementById ( "swup" ) || document . body ; try { renderMathInElement ( e , KATEX_CONFIG ), console . log ( "✅ KaTeX rendered successfully" )} catch ( e ){ console . error ( "❌ KaTeX rendering error:" , e )}} function renderKatexWithRetry ( e = 10 , t = 100 ){ let n = 0 ; const s = ()=>{ typeof renderMathInElement == "function" ? renderKatex () : n < e ? ( n ++ , setTimeout ( s , t )) : console . warn ( "⚠️ KaTeX auto-render not available after" , e , "attempts" )}; s ()} function setupSwupIntegration (){ window . swup ? ( window . swup . hooks . on ( "page:view" ,()=>{ console . log ( "🔄 Swup transition complete, re-rendering KaTeX..." ), setTimeout (()=> renderKatexWithRetry ( 3 , 50 ), 50 )}), console . log ( "✅ KaTeX-Swup integration ready" )) : setTimeout ( setupSwupIntegration , 100 )} document . addEventListener ( "DOMContentLoaded" , function (){ console . log ( "🚀 Initializing KaTeX..." ), renderKatexWithRetry (), setupSwupIntegration ()}), window . renderKatex = renderKatex </ script >< script type = module >
2026-09-14 19:30:34 +02:00
import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.esm.min.mjs' ;
let initialized = false ;
function renderMermaid () {
const contentArea = document . getElementById ( 'swup' ) || document . body ;
const mermaidBlocks = contentArea . querySelectorAll ( '.language-mermaid, .mermaid' );
if ( mermaidBlocks . length === 0 ) {
console . log ( "ℹ ️ No mermaid blocks found on this page" );
return ;
}
if ( ! initialized ) {
mermaid . initialize ({ startOnLoad : false , theme : 'dark' });
initialized = true ;
}
mermaidBlocks . forEach ( el => {
if ( el . dataset . processed === 'true' ) {
const source = el . dataset . mermaidSource ;
if ( source ) {
el . innerHTML = source ;
el . removeAttribute ( 'data-processed' );
}
} else {
el . dataset . mermaidSource = el . textContent ;
}
});
mermaid . run ({ nodes : mermaidBlocks })
. then (() => console . log ( "✅ Mermaid rendered successfully" ))
. catch ( err => console . error ( "❌ Mermaid rendering error:" , err ));
}
function renderMermaidWithRetry ( maxRetries = 10 , delay = 100 ) {
let attempts = 0 ;
const attempt = () => {
if ( typeof mermaid . initialize === "function" ) {
renderMermaid ();
} else if ( attempts < maxRetries ) {
attempts ++ ;
setTimeout ( attempt , delay );
} else {
console . warn ( "⚠️ Mermaid auto-render not available after" , maxRetries , "attempts" );
}
};
attempt ();
}
function setupSwupIntegration () {
if ( window . swup ) {
window . swup . hooks . on ( 'page:view' , () => {
console . log ( "🔄 Swup transition complete, re-rendering mermaid..." );
setTimeout (() => renderMermaidWithRetry ( 3 , 50 ), 50 );
});
console . log ( "✅ Mermaid-Swup integration ready" );
} else {
setTimeout ( setupSwupIntegration , 100 );
}
}
document . addEventListener ( "DOMContentLoaded" , function () {
console . log ( "🚀 Initializing KaTeX..." );
renderMermaidWithRetry ();
setupSwupIntegration ();
});
2026-09-17 13:01:50 +00:00
</ script ></ head >< body class = "min-h-screen flex flex-col bg-black font-jersey text-white text-3xl" >< header >< div class = "sticky absolute top-0 z-50" >< nav class = "w-full border-b border-gray-800 bg-[#070709]/95 backdrop-blur-sm text-gray-100" >< div class = "max-w-6xl mx-auto px-4 sm:px-6" >< div class = "flex items-center justify-between h-16" >< div class = "flex items-center gap-3" >< a href = https://thereisno.space/ class = "flex items-center gap-3 group" aria-label = Homepage >< img src = /avatar.jpg alt = ThereIsNo.Space class = "w-10 h-10 rounded-sm border-2 border-gray-700 object-cover transition-transform duration-300 transform group-hover:scale-105" style = "animation:border-breathe 4s ease-in-out infinite" >
< span class = "text-white text-lg sm:text-xl md:text-2xl lg:text-3xl font-semibold tracking-wide" > ThereIsNo.Space
< span class = "inline-block ml-2" style = "animation:flicker 1.6s steps(2,end)infinite" > _</ span ></ span ></ a ></ div >< div class = "flex items-center gap-4" >< div class = "hidden md:flex items-center" >< nav aria-label = Primary class = w-full >< ul class = "flex flex-col md:flex-row md:items-center md:space-x-6 space-y-2 md:space-y-0 sm:text-lg md:text-xl lg:text-3xl" >< li >< a href = / class = "group inline-flex items-center px-3 py-2 rounded-sm text-gray-200 hover:text-white transition-colors duration-200" >< span class = "relative inline-block" >< span > Projekte</ span >
< span class = "absolute left-0 -bottom-1 h-[2px] w-0 bg-indigo-400 transition-all duration-300 group-hover:w-full" ></ span ></ span ></ a ></ li >< li >< a href = /blog/ class = "group inline-flex items-center px-3 py-2 rounded-sm text-gray-200 hover:text-white transition-colors duration-200" >< span class = "relative inline-block" >< span > Blog</ span >
< span class = "absolute left-0 -bottom-1 h-[2px] w-0 bg-indigo-400 transition-all duration-300 group-hover:w-full" ></ span ></ span ></ a ></ li >< li >< a href = / class = "group inline-flex items-center px-3 py-2 rounded-sm text-gray-200 hover:text-white transition-colors duration-200" >< span class = "relative inline-block" >< span > Über uns</ span >
< span class = "absolute left-0 -bottom-1 h-[2px] w-0 bg-indigo-400 transition-all duration-300 group-hover:w-full" ></ span ></ span ></ a ></ li ></ ul ></ nav ></ div >< div class = md:hidden >< button id = nav-toggle aria-controls = mobile-menu aria-expanded = false class = "inline-flex items-center justify-center p-2 rounded-md focus:outline-none focus:ring-2 focus:ring-indigo-400" aria-label = "Open menu" >
< svg class = "h-6 w-6 text-gray-200" fill = "none" viewBox = "0 0 24 24" stroke = "currentColor" aria-hidden = "true" >< path stroke-linecap = "round" stroke-linejoin = "round" stroke-width = "2" d = "M4 6h16M4 12h16M4 18h16" /></ svg ></ button ></ div ></ div ></ div >< div id = mobile-menu class = "md:hidden hidden pb-4" >< nav aria-label = Primary class = w-full >< ul class = "flex flex-col md:flex-row md:items-center md:space-x-6 space-y-2 md:space-y-0 sm:text-lg md:text-xl lg:text-3xl" >< li >< a href = / class = "group inline-flex items-center px-3 py-2 rounded-sm text-gray-200 hover:text-white transition-colors duration-200" >< span class = "relative inline-block" >< span > Projekte</ span >
< span class = "absolute left-0 -bottom-1 h-[2px] w-0 bg-indigo-400 transition-all duration-300 group-hover:w-full" ></ span ></ span ></ a ></ li >< li >< a href = /blog/ class = "group inline-flex items-center px-3 py-2 rounded-sm text-gray-200 hover:text-white transition-colors duration-200" >< span class = "relative inline-block" >< span > Blog</ span >
< span class = "absolute left-0 -bottom-1 h-[2px] w-0 bg-indigo-400 transition-all duration-300 group-hover:w-full" ></ span ></ span ></ a ></ li >< li >< a href = / class = "group inline-flex items-center px-3 py-2 rounded-sm text-gray-200 hover:text-white transition-colors duration-200" >< span class = "relative inline-block" >< span > Über uns</ span >
< span class = "absolute left-0 -bottom-1 h-[2px] w-0 bg-indigo-400 transition-all duration-300 group-hover:w-full" ></ span ></ span ></ a ></ li ></ ul ></ nav ></ div ></ div ></ nav >< style >@ keyframes flicker { 0 % { opacity : 1 ; transform : translateY ( 0 )} 10 % { opacity : .2 ; transform : translateY ( -1 px )} 20 % { opacity : 1 ; transform : translateY ( 0 )} 100 % { opacity : 1 }}@ keyframes border-breathe { 0 % { box-shadow : 0 0 rgba ( 99 , 102 , 241 , 6 % )} 50 % { box-shadow : 0 0 18 px 6 px rgba ( 99 , 102 , 241 , 3 % )} 100 % { box-shadow : 0 0 rgba ( 99 , 102 , 241 , 6 % )}}</ style >< script >( function (){ const e = document . getElementById ( "nav-toggle" ), t = document . getElementById ( "mobile-menu" ); if ( ! e ||! t ) return ; e . addEventListener ( "click" ,()=>{ const n = t . classList . toggle ( "hidden" ) ===! 1 ; e . setAttribute ( "aria-expanded" , n ? "true" : "false" )})})()</ script ></ div ></ header >< main class = "flex-1 w-full" >< div id = swup class = swup-transition-fade >< div class = "max-w-3xl lg:max-w-6xl xl:max-w-7xl mx-auto px-5 sm:px-8 lg:px-10 py-10 lg:py-16" >< h1 ></ h1 >< time datetime = 0001-01-01T00:00:00+00:00 > 1. Januar 1</ time >< h1 id = über-thereisnospace class = "mt-8 mb-3 text-2xl sm:text-3xl text-white" >< span class = "relative inline-block" > Über ThereIsNo.Space
< span class = "absolute left-0 -bottom-1 h-px w-0 bg-indigo-400" ></ span ></ span ></ h1 >< p > ThereIsNo.Space ist ein sich im Aufbau befindlicher Hacker- und Makerspace in der Region Wetzlar.</ p >< h2 id = unsere-werte class = "mt-8 mb-3 text-xl sm:text-2xl text-white" >< span class = "relative inline-block" > Unsere Werte
< span class = "absolute left-0 -bottom-1 h-px w-0 bg-indigo-400" ></ span ></ span ></ h2 >< ul >< li > Open Knowledge – Wissen teilen statt horten</ li >< li > Hands-on – Lernen durch Ausprobieren</ li >< li > Community – Alle sind willkommen, egal welches Skill-Level</ li ></ ul >< h2 id = kontakt class = "mt-8 mb-3 text-xl sm:text-2xl text-white" >< span class = "relative inline-block" > Kontakt
< span class = "absolute left-0 -bottom-1 h-px w-0 bg-indigo-400" ></ span ></ span ></ h2 >< ul >< li > E-Mail: < a href = mailto:info@thereisno.space > info@thereisno.space</ a ></ li >< li > Matrix: #ThereIsNoSpace:wolffy.eu</ li >< li > Triff uns auf Events!</ li ></ ul ></ div ></ div ></ main >< footer >< div class = "border-t border-gray-800 bg-[#070709] text-gray-400" >< div class = "max-w-6xl mx-auto px-4 sm:px-6" >< div class = "flex flex-col md:flex-row items-center justify-between py-6 space-y-4 md:space-y-0" >< div class = "text-sm sm:text-base md:text-lg" >< span class = "relative inline-block" > © 2026 ThereIsNo.Space. All rights reserved.< br > Made with < a href = https://gohugo.io target = _blank > Hugo</ a > | < a href = https://github.com/Enerhim/enervoid-theme target = _blank > Enervoid</ a ></ span ></ div >< div class = "flex items-center space-x-6 text-sm sm:text-base md:text-lg" ></ div ></ div ></ div ></ div ></ footer ></ body ></ html >