intial commit

This commit is contained in:
2026-03-13 10:10:55 +01:00
commit ba9e436047
13 changed files with 1026 additions and 0 deletions

2
README.md Normal file
View File

@@ -0,0 +1,2 @@
## benji0x3c

462
config.toml Normal file
View File

@@ -0,0 +1,462 @@
base_url = "https://YOUR_URL.TLD"
title = "benji's website"
description = "Eine Mischung aus Blog, Portfolio und Spaßprojekt"
author = "benji0x3c"
theme = "tabi"
generate_feeds = true
compile_sass = true
minify_html = true
build_search_index = false
default_language = "de"
taxonomies = [{name = "tags", feed = true}]
[markdown]
bottom_footnotes = true
smart_punctuation = true
[markdown.highlighting]
theme = "catppuccin-frappe"
style = "class"
[extra]
# Check out the documentation (or the comments below) to learn how to customise tabi:
# https://welpo.github.io/tabi/blog/mastering-tabi-settings/
# Search index format.
# For Zola 0.17.X users only.
# This MUST MATCH the setting in [search].index_format.
# Example: If [search].index_format is "elasticlunr_javascript", set:
# index_format = "elasticlunr_javascript"
# index_format = ""
# Use sans-serif font everywhere.
# By default, the serif font is only used in articles.
override_serif_with_sans = false
# Enable JavaScript theme toggler to allow users to switch between dark/light mode.
# If disabled, your site will use the theme specified in the `default_theme` variable.
theme_switcher = true
# This setting determines the default theme on load ("light" or "dark").
# To follow the user's OS theme, leave it empty or unset.
default_theme = ""
# Choose the colourscheme (skin) for the theme. Default is "teal".
# Skin available: blue, lavender, mint, red, sakura, teal, monochrome, lowcontrast_orange, lowcontrast_peach, lowcontrast_pink, indigo_ingot, evangelion
# See them live and learn how to create your own: https://welpo.github.io/tabi/blog/customise-tabi/#skins
# WARNING! "lowcontrast" skins, while aesthetically pleasing, may not provide optimal
# contrast (in light theme) for readability and might not be suitable for all users.
# Furthermore, low contrasting elements will affect your Google Lighthouse rating.
# All other skins have optimal contrast.
skin = ""
# Set browser theme colour. Can be a single colour or [light, dark].
# Note: Bright colors may be ignored in dark mode.
# More details: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta/name/theme-color
# browser_theme_color = "#087e96" # Example of single value.
# browser_theme_color = ["#ffffff", "#000000"] # Example of light/dark colours.
# List additional stylesheets to load site-wide.
# These stylesheets should be located in your site's `static` directory.
# Example: stylesheets = ["extra1.css", "path/extra2.css"]
# You can load a stylesheet for a single post by adding it to the [extra] section of the post's front matter, following this same format.
stylesheets = []
# Sets the default canonical URL for all pages.
# Individual pages can override this in the [extra] section using canonical_url.
# Example: "$base_url/blog/post1" will get the canonical URL "https://example.com/blog/post1".
# Note: To ensure accuracy in terms of matching content, consider setting 'canonical_url' individually per page.
# base_canonical_url = "https://example.com"
# Remote repository for your Zola site.
# Used for `show_remote_changes` and `show_remote_source` (see below).
# Supports GitHub, GitLab, Gitea, and Codeberg.
# remote_repository_url = "https://github.com/welpo/tabi"
# Set this to "auto" to try and auto-detect the platform based on the repository URL.
# Accepted values are "github", "gitlab", "gitea", and "codeberg".
remote_repository_git_platform = "auto" # Defaults to "auto".
# Branch in the repo hosting the Zola site.
remote_repository_branch = "main" # Defaults to "main".
# Show a link to the commit history of updated posts, right next to the last updated date.
# Can be set at page or section levels, following the hierarchy: page > section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy
show_remote_changes = true # Defaults to true.
# Show a link to the repository of the site, right next to the "Powered by Zola & tabi" text.
show_remote_source = true # Defaults to true.
# Add a "copy" button to codeblocks (loads ~700 bytes of JavaScript).
# Can be set at page or section levels, following the hierarchy: page > section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy
copy_button = true
# Make code block names clickable if they are URLs (loads ~400 bytes of JavaScript).
# Can be set at page or section levels, following the hierarchy: page > section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy
code_block_name_links = false
# Force left-to-right (LTR) direction for code blocks.
# Set to false to allow code to follow the document's natural direction.
# Can be set at page or section levels. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy
force_codeblock_ltr = true
# Show the author(s) of a page.
# Can be set at page or section levels, following the hierarchy: page > section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy
show_author = false
# Show the reading time of a page.
# Can be set at page or section levels, following the hierarchy: page > section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy
show_reading_time = true
# Show the date of a page below its title.
# Can be set at page or section levels, following the hierarchy: page > section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy
show_date = true
# Determines how dates are displayed in the post listing (e.g. front page or /blog). Options:
# "date" - Show only the original date of the post (default if unset).
# "updated" - Show only the last updated date of the post. If there is no last updated date, it shows the original date.
# "both" - Show both the original date and the last updated date.
post_listing_date = "date"
# Enable iine like buttons on all posts: https://iine.to/
# Can be set at page or section levels, following the hierarchy: page > section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy
iine = false
iine_icon = "heart" # See https://iine.to/#customise
# Unify like counts across all language versions of the same page.
# When enabled, likes on /es/blog/hello/ will count towards /blog/hello/ (default language).
iine_unified_languages = true
# Show "Jump to posts" link next to series' title.
# By default, the link appears automatically when a series description exceeds 2000 characters.
# Can be set at page or section levels, following the hierarchy: page > section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy
# show_jump_to_posts = true
# Determines if indexes should be increasing (false) or decreasing (true) in series' posts list.
# It has only effect if the section uses indexes metadata (which is only the case for series as of now).
# Can be set at section levels, following the hierarchy: section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy
post_listing_index_reversed = false # Defaults to false.
# DEPRECATED!
# Use Zola's built-in `bottom_footnotes = true` in the [markdown] section instead. (Available since v0.19.0)
# Adds backlinks to footnotes (loads ~500 bytes of JavaScripts).
# Can be set at page or section levels, following the hierarchy: page > section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy
footnote_backlinks = false
# Enable KaTeX for all posts.
# Can be set at page or section levels, following the hierarchy: page > section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy
katex = false
# Enable Mermaid diagrams for all posts.
# Loads ~2.5MB of JavaScript.
# Can be set at page or section levels, following the hierarchy: page > section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy
mermaid = false
# Serve Mermaid JavaScript locally. Version bundled with tabi.
# If set to false, it will load the latest version from JSDelivr.
# Only relevant when `mermaid = true`.
serve_local_mermaid = true
# Show links to previous and next articles at the bottom of posts.
# Can be set at page or section levels, following the hierarchy: page > section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy
show_previous_next_article_links = false
# Invert order of the links to previous and next articles at the bottom of posts.
# By default, next articles are on the left side of the page and previous articles are on the right side.
# To reverse the order (next articles on the right and previous articles on the left), set it to true.
# Can be set at page or section levels, following the hierarchy: page > section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy
invert_previous_next_article_links = false
# Whether the navigation for previous/next article should match the full width of the site (same as the navigation bar at the top) or the article width.
# To match the navigation bar at the top, set it to true.
previous_next_article_links_full_width = true
# Quick navigation buttons.
# Adds "go up" and "go to comments" buttons on the bottom right (hidden for mobile).
# Can be set at page or section levels, following the hierarchy: page > section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy
quick_navigation_buttons = true
# Add a Table of Contents to posts, right below the title and metadata.
# Can be set at page or section levels, following the hierarchy: page > section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy
# toc = false
# Date format used when listing posts (main page, /blog section, tag posts list…)
# Default is "6th July 2049" in English and "%d %B %Y" in other languages.
# long_date_format = "%d %B %Y"
# Date format used for blog posts.
# Default is "6th July 2049" in English and "%-d %B %Y" in other languages.
short_date_format = ""
# Date format used for the archive page.
# Default is "06 July" in English and "%d %b" in other languages.
archive_date_format = ""
# Per-language date format overrides.
# Examples: Spanish uses "3 de febrero de 2024", German uses "3. Februar 2024"
date_formats = [
{ lang = "de", long = "%d. %B %Y", short = "%d.%m.%Y", archive = "%d. %b" },
]
# Custom separator used in title tag and posts metadata (between date, time to read, and tags).
separator = "•"
# Use a shorter layout for All tags listing.
# Default: tag_name n post[s]
# Compact: tag_name^n (superscript number)
compact_tags = false
# How tags are sorted in a Tags listing based on templates/tags/list.html.
# "name" for alphabetical, "frequency" for descending count of posts.
# Default: "name".
tag_sorting = "name"
# Show clickable tags above cards.html template (e.g. projects/) to filter the displayed items.
# Loads JS to filter. If JS is disabled, the buttons are links to the tag's page.
# Can be set at the section or config.toml level, following the hierarchy: section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy
# Default: true
enable_cards_tag_filtering = true
# Invert the order of the site title and page title in the browser tab.
# Example: true => "Blog • ~/tabi", false => "~/tabi • Blog"
invert_title_order = false
# Full path after the base URL required. So if you were to place it in "static" it would be "/favicon.ico"
# favicon = ""
# Add an emoji here to use it as favicon.
# Compatibility: https://caniuse.com/link-icon-svg
# favicon_emoji = ""
# Path to the fallback image for social media cards (the preview image shown when sharing a link on WhatsApp, LinkedIn…).
# Can be set at page or section levels, following the hierarchy: page > section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy
# Learn how to create these images in batch and automatically:
# https://osc.garden/blog/automating-social-media-cards-zola/
# social_media_card = ""
menu = [
{ name = "blog", url = "blog", trailing_slash = true },
{ name = "tags", url = "tags", trailing_slash = true },
{ name = "projects", url = "projects", trailing_slash = true },
]
# The RSS icon will be shown if (1) it's enabled and (2) the following variable is set.
# Set to true to use the default "rss" icon, or specify a custom icon name (e.g. "square-rss").
# The icon must exist in static/social_icons/ (without the .svg extension).
# Note for Zola 0.19.X users: when `feed_filenames` has two filenames, only the first one will be linked in the footer.
feed_icon = true
# Show the full post content in the Atom feed.
# If it's set to false, only the description or summary will be shown.
full_content_in_feed = true
# Email address for footer's social section.
# Protect against spambots:
# 1. Use base64 for email (convert at https://www.base64encode.org/ or `printf 'your@email.com' | base64`).
# 2. Or, set 'encode_plaintext_email' to true for auto-encoding (only protects on site, not in public repos).
# email = "bWFpbEBleGFtcGxlLmNvbQ==" # base64 encoded version of "mail@example.com"
# Decoding requires ~400 bytes of JavaScript. If JS is disabled, the email won't be displayed.
encode_plaintext_email = true # Setting is ignored if email is already encoded.
# Social media links for the footer.
# Built-in icons: https://github.com/welpo/tabi/tree/main/static/social_icons
# To use a custom icon, add it to your site's `static/social_icons` directory.
# socials = [
# { name = "github", url = "https://github.com/welpo/", icon = "github" },
# { name = "soundcloud", url = "https://soundcloud.com/oskerwyld", icon = "soundcloud" },
# { name = "instagram", url = "https://instagram.com/oskerwyld", icon = "instagram" },
# { name = "youtube", url = "https://youtube.com/@oskerwyld", icon = "youtube" },
# { name = "spotify", url = "https://open.spotify.com/artist/5Hv2bYBhMp1lUHFri06xkE", icon = "spotify" },
# ]
# Fediverse profile.
# Adds metadata to feature the author's profile in Mastodon link previews.
# Example: for @username@example.com, use:
# fediverse_creator = { handle = "username", domain = "example.com" }
# Extra menu to show on the footer, below socials section.
# footer_menu = [
# {url = "about", name = "about", trailing_slash = true},
# {url = "privacy", name = "privacy", trailing_slash = true},
# {url = "sitemap.xml", name = "sitemap", trailing_slash = false},
# {url = "https://example.com", name = "external link", trailing_slash = true},
# ]
# Enable a copyright notice for the footer, shown between socials and the "Powered by" text.
# $TITLE will be replaced by the website's title.
# $CURRENT_YEAR will be replaced by the current year.
# $AUTHOR will be replaced by the `author` variable.
# $SEPARATOR will be replaced by the `separator` variable.
# Markdown is supported (links, emphasis, etc).
# copyright = "$TITLE © $CURRENT_YEAR $AUTHOR $SEPARATOR Unless otherwise noted, the content in this website is available under the [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/) license."
# For multi-language sites, you can set a different copyright for each language.
# The old way of setting `translated_copyright = true` and using i18n files is deprecated.
# If a translation is missing for language, the `copyright` value will be used.
# copyright_translations.es = "$TITLE © $CURRENT_YEAR $AUTHOR $SEPARATOR A menos que se indique lo contrario, el contenido de esta web está disponible bajo la licencia [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/deed.es)."
# Custom security headers. What urls should your website be able to connect to?
# You need to specify the CSP and the URLs associated with the directive.
# Useful if you want to load remote content safely (embed YouTube videos, which needs frame-src, for example).
# Default directive is self.
# Default config, allows for https remote images and embedding YouTube and Vimeo content.
# This configuration (along with the right webserver settings) gets an A+ in Mozilla's Observatory: https://observatory.mozilla.org
# Note: to use a Zola built-in syntax highlighting theme, allow unsafe-inline for style-src.
allowed_domains = [
{ directive = "font-src", domains = ["'self'", "data:"] },
{ directive = "img-src", domains = ["'self'", "https://*", "data:"] },
{ directive = "media-src", domains = ["'self'"] },
{ directive = "script-src", domains = ["'self'"] },
{ directive = "style-src", domains = ["'self'"] },
{ directive = "frame-src", domains = ["player.vimeo.com", "https://www.youtube-nocookie.com"] },
]
# Enable the CSP directives configured (or default).
# Can be set at page or section levels, following the hierarchy: page > section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy
enable_csp = true
# Custom subset of characters for the header.
# If set to true, the `static/custom_subset.css` file will be loaded first.
# This avoids a flashing text issue in Firefox.
# Please see https://welpo.github.io/tabi/blog/custom-font-subset/ to learn how to create this file.
# custom_subset = true
[extra.analytics]
# Specify which analytics service you want to use.
# Supported options: ["goatcounter", "umami", "plausible"]
# service = ""
# Unique identifier for tracking.
# For GoatCounter, this is the code you choose during signup.
# For Umami, this is the website ID.
# For Plausible, this is the domain name (e.g. "example.com").
# Note: Leave this field empty if you're self-hosting GoatCounter.
# id = "yourID"
# Optional: Specify the URL for self-hosted analytics instances.
# For GoatCounter: Base URL like "https://stats.example.com"
# For Umami: Base URL like "https://umami.example.com"
# For Plausible: Base URL like "https://plausible.example.com"
# Leave this field empty if you're using the service's default hosting.
# self_hosted_url = ""
# Optional: For Umami, enable this option to respect users' Do Not Track (DNT) settings. The default is true.
do_not_track = true
# giscus support for comments. https://giscus.app
# Setup instructions: https://welpo.github.io/tabi/blog/comments/#setup
[extra.giscus]
# enabled_for_all_posts = false # Enables giscus on all posts. It can be enabled on individual posts by setting `giscus = true` in the [extra] section of a post's front matter.
# automatic_loading = true # If set to false, a "Load comments" button will be shown.
# repo = "welpo/tabi-comments"
# repo_id = "R_kgDOJ59Urw" # Find this value in https://giscus.app/
# category = "Announcements"
# category_id = "DIC_kwDOJ59Ur84CX0QG" # Find this value in https://giscus.app/
# mapping = "slug" # Available: pathname; url; title; slug. "slug" will use the post's filename (slug); this is the only way to share comments between languages.
# strict_title_matching = 1 # 1 to enable, 0 to disable. https://github.com/giscus/giscus/blob/main/ADVANCED-USAGE.md#data-strict
# enable_reactions = 1 # 1 to enable, 0 to disable.
# comment_box_above_comments = false
# light_theme = "noborder_light"
# dark_theme = "noborder_dark"
# lang = "" # Leave blank to match the page's language.
# lazy_loading = true
# utterances support for comments. https://utteranc.es
# Setup instructions: https://welpo.github.io/tabi/blog/comments/#setup
[extra.utterances]
# enabled_for_all_posts = false # Enables utterances on all posts. It can be enabled on individual posts by setting `utterances = true` in the [extra] section of a post's front matter.
# automatic_loading = true # If set to false, a "Load comments" button will be shown.
# repo = "yourGithubUsername/yourRepo" # https://utteranc.es/#heading-repository
# issue_term = "slug" # Available: pathname; url; title; slug. "slug" will use the post's filename (slug); this is the only way to share comments between languages. https://utteranc.es/#heading-mapping
# label = "💬" # https://utteranc.es/#heading-issue-label
# light_theme = "github-light" # https://utteranc.es/#heading-theme
# dark_theme = "photon-dark" # https://utteranc.es/#heading-theme
# lazy_loading = true
# Hyvor Talk support for comments. https://talk.hyvor.com
[extra.hyvortalk]
# enabled_for_all_posts = false # Enables hyvortalk on all posts. It can be enabled on individual posts by setting `hyvortalk = true` in the [extra] section of a post's front matter.
# automatic_loading = true # If set to false, a "Load comments" button will be shown.
# website_id = "1234"
# page_id_is_slug = true # If true, it will use the post's filename (slug) as id; this is the only way to share comments between languages. If false, it will use the entire url as id.
# lang = "" # Leave blank to match the page's language.
# page_author = "" # Email (or base64 encoded email) of the author.
# lazy_loading = true
# Isso support for comments. https://isso-comments.de/
# You need to self-host the backend first: https://blog.phusion.nl/2018/08/16/isso-simple-self-hosted-commenting-system/
# More info on some settings: https://isso-comments.de/docs/reference/client-config/
[extra.isso]
# enabled_for_all_posts = false # Enables Isso on all posts. It can be enabled on individual posts by setting `isso = true` in the [extra] section of a post's front matter.
# automatic_loading = true # If set to false, a "Load comments" button will be shown.
# endpoint_url = "" # Accepts relative paths like "/comments/" or "/isso/", as well as full urls like "https://example.com/comments/". Include the trailing slash.
# page_id_is_slug = true # If true, it will use the relative path for the default language as id; this is the only way to share comments between languages. If false, it will use the entire url as id.
# lang = "" # Leave blank to match the page's language.
# max_comments_top = "inf" # Number of top level comments to show by default. If some comments are not shown, an “X Hidden” link is shown.
# max_comments_nested = "5" # Number of nested comments to show by default. If some comments are not shown, an “X Hidden” link is shown.
# avatar = true
# voting = true
# page_author_hashes = "" # hash (or list of hashes) of the author.
# lazy_loading = true # Loads when the comments are in the viewport (using the Intersection Observer API).
[extra.webmentions]
# To disable for a specific section or page, set webmentions = false in that page/section's front matter's [extra] section.
enable = false
# Specify the domain registered with webmention.io.
domain = ""
# The HTML ID for the object to fill in with the webmention data.
# Defaults to "webmentions"
# id = "webmentions"
# data configuration for the webmention.min.js script
# The base URL to use for this page. Defaults to window.location
# page_url =
# Additional URLs to check, separated by |s
# add_urls
# The maximum number of words to render in reply mentions.
# wordcount = 20
# The maximum number of mentions to retrieve. Defaults to 30.
# max_webmentions = 30
# By default, Webmentions render using the mf2 'url' element, which plays
# nicely with webmention bridges (such as brid.gy and telegraph)
# but allows certain spoofing attacks. If you would like to prevent
# spoofing, set this to a non-empty string (e.g. "true").
# prevent_spoofing
# What to order the responses by; defaults to 'published'. See
# https://github.com/aaronpk/webmention.io#api
# sort_by
# The order to sort the responses by; defaults to 'up' (i.e. oldest
# first). See https://github.com/aaronpk/webmention.io#api
# sort_dir
# If set to a non-empty string (e.g. "true"), will display comment-type responses
# (replies/mentions/etc.) as being part of the reactions
# (favorites/bookmarks/etc.) instead of in a separate comment list.
# comments_are_reactions = "true"
# h-card configuration
# Will identify you on the indieweb (see https://microformats.org/wiki/h-card)
[extra.hcard]
# Enable home page h-card.
# enable = true
# Add your email to the card if extra.email is set and not encoded.
# with_mail = true
# Add your social links ('socials' config) to the card.
# with_social_links = true
# Homepage url. Defaults to the value of 'base_url'.
# homepage = "https://myhomepage.net"
# avatar = "img/profile.webp"
# Display name, default to the value of 'author'.
# full_name = "John Doe"
# Small bio, as shown on social media profiles.
# biography = "Fond of the indieweb"
#
# You can add any property from https://microformats.org/wiki/h-card#Properties
# Make sure to replace all '-' characters by '_'
# Examples:
# p_nickname = "nickname"
# p_locality = "Bordeaux"
# p_country_name = "France"

10
content/_index.md Normal file
View File

@@ -0,0 +1,10 @@
+++
title = "Neues"
[extra]
header = { title = "benji0x3c", img = "img/emp-cutout.png", img_alt = "YOUR_NAME" }
section_path = "blog/_index.md"
max_posts = 5
+++
Willkommen auf meiner Webseite. Hier findet ihr meine Meinung zu vielen (technischen) Dingen. Außerdem Stelle ich meine Projekte vor.

6
content/blog/_index.md Normal file
View File

@@ -0,0 +1,6 @@
+++
title = "Blog"
sort_by = "date"
paginate_by = 5
insert_anchor_links = "none"
+++

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

View File

@@ -0,0 +1,77 @@
+++
title = "Revolution oder Blase"
date = "2026-03-12"
description = "Was ich vom KI Hype halte"
[taxonomies]
tags = ["ki","meinung"]
+++
**Was ich vom KI Hype halte und warum ich nie OpenClaw benutzen würde**
Künstliche Intelligenz ist das Kernthema der meisten Diskurse die momentan im IT Kosmos geführt werden.
Mir fällt auf, dass sich die meisten Talking Points unter zwei Erzählungen einordnen lassen:
#### "Die jetzige KI ist nur Blendwerk"
Eine relativ große Gruppe, darunter viele Akademiker, scheinen sich vor allem auf die Probleme und Schwächen
der großen Sprachmodelle zu konzentrieren. Im Grunde ist dieser Ansatz wichtig, besonders da viele Benchmarks
und Metriken von der Industrie erstellt werden, die ihre Produkte damit testen will. Jedoch fällt mir auf, dass
es einigen Kritikern eher darum geht KI gesamthaft zu diskreditieren. Persönlich glaube ich, dass diese Reaktion
bei vielen Menschen mit Angst zu tun hat. Denn anzuerkennen, dass wir der Modellierung von Intelligenz
ein ganzes Stück näher gekommen sind, ist extrem besorgniserregend.
Diese Sorge ist meiner Meinung nach aber leider keinesfalls irrational. In unserer Gesellschaft sind Maschinen,
die plötzlich eine deutlich größere Zahl an Aufgaben übernehmen können, eine Bedrohung für Arbeitnehmer. Hinzu
kommt die viel grundlegendere Frage ob eine Superintelligenz, also eine Intelligenz welche die Intelligenz des
klügsten Menschen bei weitem übersteigt, überhaupt erstrebenswert ist. Eines der meistzitierten Bücher zu KI,
*Superintelligence. Paths, Dangers, Strategies.* von Nick Bostrom, befasst sich auf mehreren hundert Seiten nur
mit den Fragen wie uns die Superintelligenz zugrunde richten kann und wie schwierig es sein wird sie zu kontrollieren.
Abgesehen davon, dass ich mit sehr vielen von Nick Bostrom grundsätzliche Probleme habe (Transhumanismus, Longtermismus etc.),
macht er in dem Buch durchaus gute Punkte. Die KI muss uns nichtmal feindlich gesinnt sein, damit ihre Existenz für den
Menschen zur Katastrophe werden kann. Wir sind den anderen Tieren auf diesem Planeten auch nicht feindlich gesinnt,
dennoch werden sie durch unsere Handeln massiv in Mitleidenschaft gezogen. Diese Dominanz entsteht nur durch den
Intelligenz-Gap zwischen uns und den Tieren, von denen uns viele ja sogar physisch Überlegen sind.
All das illustriert nur, dass die Bedenken gegenüber KI mehr als berechtigt sind. Diese ändern jedoch nichts am Fakt,
dass auch aktuelle Sprachsysteme beeindruckende und nützliche Fähigkeiten haben, die über reines Googlen hinausgehen.
Das heißt aber nicht, dass die Superintelligenz bereits unter uns ist.
#### "Die Revolution ist da"
Der andere Standpunkt zu den aktuellen Entwicklungen im Feld der KI ist deutlich optimistischer. Zu optimistisch für
meinen Geschmack. Alles ist jetzt KI oder KI-Assisted, für jede Aufgabe gibt es einen Agent und KI-Startupgründer
unterbieten sich mit Prognosen für das Aussterben diverser Berufszweige. LLMs sind sehr praktisch und nützlich aber
haben immer noch sehr starke Limitierungen. Momentan kann niemand wirklich prognostizieren, ob Sprachmodelle irgendwann
an eine gläserne Decke prallen werden. Denn aktuell passieren Verbesserungen vor allem durch Skalierung, also mehr Daten
mehr Hardware, mehr Daten, mehr Hardware etc.
Die Auswirkungen auf die Umwelt sind natürlich absolut Katastrophal. Abgesehen
vom absurden Wasserverbrauch sind die riesigen Sprachmodelle extrem energieintensiv. Bei den Hyperscalern (Google, Amazon, Meta)
die sich vor kurzem noch auf C0² Neutralität committed haben, sieht die Welt durch den KI Hype mittlerweile ganz anders aus:
* **Google** Steigerung von 48% der Treibhausgas-Emissionen in 2018-2023
* **Microsoft** Steigerung von 29% der Treibhausgas-Emissionen in 2020-2023
* **Meta** Steigerung von 49% der Treibhausgas-Emissionen nur in 2022
![Meta Datacenter](1-datacenter.png)
Meta plant den Bau eines Datacenters so groß wie Manhattan, ausschließlich im die eigene KI Infrastruktur zu verbessern.
Auch wenn sich beim Befragen von KI Modellen einiges optimieren lässt
(Stichwort: Speculative Decoding, Early Exciting etc.), ist aus einer ökologischen sicht sehr davon abzuraten die Anzahl der KI Anfragen insgesamt zu steigern.
Genau das würde allerdings bei einer breiten Einbindung von Sprachmodellen in Arbeitsprozesse passieren.
Dabei sind, und das ist mir hier noch einmal wichtig zu betonen, diese Modelle nicht im klassischen Sinne intelligent. Sie erzeugen
einfach eine Reihe von Sprachbausteinen(tokens) und wählen jeweils den nächst wahrscheinlichen Sprachbaustein (extrem vereinfacht).
Dabei wird auf Plausibilität optimiert, nicht auf Korrektheit, weshalb es zu den bekannten Halluzinationen kommt. Diese Fehler sind
in der Praxis sehr gefährlich, weil sie plausibel aussehen und nur von Menschen mit Fachkenntnis im betroffenen Themengebiet enttarnt
werden können. Woher soll der durchschnittliche Patient wissen, dass ihm der Gesundheits-Chatbot soeben eine tödliche Dosis eines
Medikamentes verschrieben hat. KI Modelle, modellieren Wahrscheinlichkeiten, auf eine sehr komplexe, einzigartige Weise, aber dennoch
arbeiten sie auf Basis von Stochastik. Hier besteht natürlich eine extreme Gefahr für diverse Formen von Bias. Die KI ist mit Daten aus
unserer Gesellschaft trainiert worden und wird somit all ihre diskriminierenden Defizite übernehmen. Hinzu kommt, dass die Modelle von
Tech Bros mit fragwürdigen bis problematischen ideologischen Hintergründen kontrolliert werden. Zu diesem Thema kann ich das Büchlein
*Künstliche Intelligenz und der neue Faschismus* von Rainer Mühlhoff empfehlen.
### Fazit
Die Künstliche Intelligenz in ihrer aktuell verbreitetsten Form extrem nützlich, aber noch weit von einer Superintelligenz entfernt.
Diese Nützlichkeit kommt jedoch zu einem sehr hohen ökologischen Preis und könnte bisher ungeahnte Folgen auf die Kognition der Menschen haben,
die ihre regelmäßig Aufgaben übertragen. Ich glaube die KI Revolution ist noch nicht gekommen, aber wir haben einen kleinen Vorgeschmack bekommen,
wie disruptiv diese Revolution sein könnte. Die Technologie wird zugleich unter- und überschätzt und beide Lager haben ihre Gründe für ihre Standpunkte,
aber die eigentlich zentrale Frage bleibt: wer entscheidet darüber wie diese Modelle eingesetzt werden. Ich finde es falsch, dass private Unternehmen
mit Profitinteressen entscheiden wie diese Modelle umgesetzt und eingesetzt werden. Das abgebildete Wissen in den Modellen wurde von der gesamten Gesellschaft
produziert, weshalb ihr meiner Meinung ein Mitspracherecht zusteht. Außerdem ist die Technologie existenziell zu relevant,
um sie in die Obhut von ein paar Silicon Valley "Strategen" zu geben.

View File

@@ -0,0 +1,9 @@
+++
title = "Projekte"
sort_by = "weight"
template = "cards.html"
insert_anchor_links = "left"
[extra]
show_reading_time = false
+++

View File

@@ -0,0 +1,47 @@
+++
title = "Self-Hosting"
description = "Meine kleine aber feine Infrastruktur"
weight = 1
template = "page.html"
[taxonomies]
tags = ["meta"]
[extra]
local_image = "img/Raspberry_Pi_Logo.svg"
+++
#### [View Source](https://github.com/welpo/tabi-start){.centered-text}
## Features showcase
Here's what you can do with project pages:
- Add project descriptions
- Include code snippets
- Tag your projects
- Add images and media
- Link to external resources
## Sample Code
Here's a simple "Hello, World!" in different languages:
```python
print("Hello, World!")
```
```javascript
console.log("Hello, World!");
```
```rust
fn main() {
println!("Hello, World!");
}
```
Feel free to delete this demo project when you're ready to add your own!

395
static/giallo.css Normal file
View File

@@ -0,0 +1,395 @@
/*
* theme "catppuccin-frappe" generated by giallo
*/
.z-code {
color: #C6D0F5;
background-color: #303446;
}
.z-hl {
background-color: #C6D0F512;
}
.giallo-ln {
color: #838BA7;
}
.z-text { color: #C6D0F5; }
.z-source { color: #C6D0F5; }
.z-punctuation { color: #949CBB; }
.z-comment { color: #949CBB; font-style: italic; }
.z-string { color: #A6D189; }
.z-keyword { color: #CA9EE6; }
.z-variable { color: #C6D0F5; }
.z-variable { color: #C6D0F5; }
.z-punctuation { color: #E78284; }
.z-punctuation { color: #E78284; }
.z-punctuation { color: #E78284; }
.z-punctuation { color: #E5C890; font-style: italic; }
.z-variable { color: #EA999C; }
.z-variable { color: #8CAAEE; }
.z-punctuation { color: #E78284; }
.z-constant.z-numeric { color: #EF9F76; }
.z-storage.z-type { color: #CA9EE6; }
.z-storage.z-modifier { color: #CA9EE6; }
.z-keyword.z-operator { color: #81C8BE; }
.z-punctuation.z-accessor { color: #81C8BE; }
.z-support.z-function { color: #8CAAEE; font-style: italic; }
.z-variable.z-function { color: #8CAAEE; font-style: italic; }
.z-support.z-class { color: #E5C890; font-style: italic; }
.z-meta.z-type { color: #E5C890; font-style: italic; }
.z-meta.z-type-alias { color: #E5C890; font-style: italic; }
.z-support.z-type { color: #E5C890; font-style: italic; }
.z-meta.z-decorator { color: #EF9F76; }
.z-punctuation.z-decorator { color: #EF9F76; }
.z-variable.z-parameter { color: #EA999C; font-style: italic; }
.z-constant.z-language { color: #E78284; }
.z-variable.z-graphql { color: #C6D0F5; }
.z-markup.z-bold { color: #E78284; font-weight: bold; }
.z-markup.z-italic { color: #E78284; font-style: italic; }
.z-markup.z-strikethrough { color: #A5ADCE; text-decoration: line-through; }
.z-markup.z-link { color: #BABBF1; }
.z-markup.z-quote { color: #F4B8E4; }
.z-variable.z-function { color: #EF9F76; }
.z-meta.z-attribute-selector { color: #A6D189; }
.z-variable.z-other { color: #EA999C; }
.z-variable.z-lua { color: #C6D0F5; }
.z-punctuation.z-definition { color: #949CBB; }
.z-support.z-asciidoc { color: #949CBB; }
.z-support.z-function { color: #99D1DB; }
.z-constant.z-language { color: #81C8BE; font-style: italic; }
.z-variable.z-other.z-readwrite { color: #C6D0F5; }
.z-punctuation.z-definition.z-variable { color: #C6D0F5; }
.z-punctuation.z-definition.z-comment { color: #949CBB; font-style: italic; }
.z-punctuation.z-definition.z-string { color: #A6D189; }
.z-constant.z-character.z-escape { color: #F4B8E4; }
.z-variable.z-other.z-constant { color: #EF9F76; }
.z-entity.z-name.z-constant { color: #EF9F76; }
.z-constant.z-language.z-boolean { color: #EF9F76; }
.z-constant.z-language.z-false { color: #EF9F76; }
.z-constant.z-language.z-true { color: #EF9F76; }
.z-keyword.z-operator.z-word { color: #CA9EE6; }
.z-keyword.z-operator.z-new { color: #CA9EE6; }
.z-variable.z-language.z-super { color: #CA9EE6; }
.z-support.z-type.z-primitive { color: #CA9EE6; }
.z-punctuation.z-definition.z-keyword { color: #CA9EE6; }
.z-punctuation.z-definition.z-generic { color: #81C8BE; }
.z-punctuation.z-definition.z-tag { color: #81C8BE; }
.z-punctuation.z-separator.z-key-value { color: #81C8BE; }
.z-entity.z-name.z-function { color: #8CAAEE; font-style: italic; }
.z-meta.z-function-call.z-method { color: #8CAAEE; font-style: italic; }
.z-support.z-function.z-misc { color: #8CAAEE; font-style: italic; }
.z-entity.z-name.z-class { color: #E5C890; font-style: italic; }
.z-entity.z-other.z-inherited-class { color: #E5C890; font-style: italic; }
.z-meta.z-function-call.z-constructor { color: #E5C890; font-style: italic; }
.z-entity.z-name.z-struct { color: #E5C890; font-style: italic; }
.z-entity.z-name.z-enum { color: #E5C890; font-style: italic; }
.z-variable.z-other.z-enummember { color: #81C8BE; }
.z-meta.z-property.z-object { color: #81C8BE; }
.z-entity.z-name.z-type { color: #E5C890; font-style: italic; }
.z-meta.z-function.z-parameters { color: #EA999C; font-style: italic; }
.z-support.z-function.z-builtin { color: #E78284; }
.z-keyword.z-control.z-directive { color: #E5C890; }
.z-punctuation.z-definition.z-directive { color: #E5C890; }
.z-punctuation.z-definition.z-typeparameters { color: #99D1DB; }
.z-entity.z-name.z-namespace { color: #E5C890; }
.z-variable.z-language.z-this { color: #E78284; }
.z-variable.z-object.z-property { color: #C6D0F5; }
.z-keyword.z-operator.z-new { font-weight: bold; }
.z-meta.z-interpolation.z-cs { color: #C6D0F5; }
.z-constant.z-language.z-json { color: #EF9F76; }
.z-constant.z-language.z-yaml { color: #EF9F76; }
.z-markup.z-changed.z-diff { color: #EF9F76; }
.z-markup.z-inserted.z-diff { color: #A6D189; }
.z-markup.z-deleted.z-diff { color: #E78284; }
.z-variable.z-other.z-env { color: #8CAAEE; }
.z-constant.z-language.z-gdscript { color: #EF9F76; }
.z-constant.z-language.z-go { color: #EF9F76; }
.z-keyword.z-other.z-doctype { color: #CA9EE6; }
.z-entity.z-name.z-tag { color: #8CAAEE; }
.z-entity.z-other.z-attribute-name { color: #E5C890; }
.z-support.z-class.z-component { color: #F4B8E4; }
.z-punctuation.z-definition.z-annotation { color: #EF9F76; }
.z-storage.z-type.z-annotation { color: #EF9F76; }
.z-variable.z-other.z-jsdoc { color: #EA999C; }
.z-support.z-constant.z-node { color: #CA9EE6; }
.z-storage.z-modifier.z-implements { color: #CA9EE6; }
.z-variable.z-parameter.z-generic { color: #E5C890; }
.z-punctuation.z-decorator.z-ts { color: #8CAAEE; font-style: italic; }
.z-constant.z-language.z-julia { color: #EF9F76; }
.z-variable.z-language.z-liquid { color: #F4B8E4; }
.z-heading.z-\31 .z-markdown { color: #E78284; }
.z-heading.z-\31 .z-quarto { color: #E78284; }
.z-heading.z-\32 .z-markdown { color: #EF9F76; }
.z-heading.z-\32 .z-quarto { color: #EF9F76; }
.z-heading.z-\33 .z-markdown { color: #E5C890; }
.z-heading.z-\33 .z-quarto { color: #E5C890; }
.z-heading.z-\34 .z-markdown { color: #A6D189; }
.z-heading.z-\34 .z-quarto { color: #A6D189; }
.z-heading.z-\35 .z-markdown { color: #85C1DC; }
.z-heading.z-\35 .z-quarto { color: #85C1DC; }
.z-heading.z-\36 .z-markdown { color: #BABBF1; }
.z-heading.z-\36 .z-quarto { color: #BABBF1; }
.z-punctuation.z-definition.z-link { color: #8CAAEE; }
.z-markup.z-underline.z-link { color: #8CAAEE; }
.z-markup.z-substitution.z-attribute-reference { color: #BABBF1; }
.z-fenced_code.z-block.z-language { color: #99D1DB; }
.z-meta.z-separator.z-markdown { color: #81C8BE; }
.z-markup.z-list.z-bullet { color: #81C8BE; }
.z-markup.z-heading.z-quarto { font-weight: bold; }
.z-support.z-attribute.z-builtin { color: #E5C890; }
.z-meta.z-attribute.z-php { color: #E5C890; }
.z-constant.z-language.z-php { color: #CA9EE6; }
.z-meta.z-function-call.z-python { color: #8CAAEE; }
.z-support.z-type.z-python { color: #CA9EE6; }
.z-constant.z-language.z-python { color: #EF9F76; }
.z-meta.z-indexed-name.z-python { color: #EA999C; font-style: italic; }
.z-meta.z-item-access.z-python { color: #EA999C; font-style: italic; }
.z-meta.z-function-call.z-r { color: #8CAAEE; }
.z-string.z-regexp.z-ts { color: #C6D0F5; }
.z-meta.z-annotation.z-rust { color: #E5C890; font-style: italic; }
.z-meta.z-attribute.z-rust { color: #E5C890; font-style: italic; }
.z-storage.z-modifier.z-rust { color: #CA9EE6; }
.z-storage.z-type.z-rust { color: #CA9EE6; }
.z-meta.z-generic.z-rust { color: #EF9F76; }
.z-support.z-macro.z-rust { color: #8CAAEE; font-style: italic; }
.z-comment.z-line.z-shebang { color: #F4B8E4; font-style: italic; }
.z-comment.z-line.z-shebang { color: #F4B8E4; font-style: italic; }
.z-meta.z-shebang.z-shell { color: #F4B8E4; font-style: italic; }
.z-markup.z-heading.z-typst { color: #E78284; }
.z-punctuation.z-section.z-parameters { color: #81C8BE; }
.z-variable.z-other.z-readwrite { color: #81C8BE; }
.z-variable.z-annotation.z-function { color: #EF9F76; }
.z-punctuation.z-definition.z-annotation { color: #EF9F76; }
.z-punctuation.z-definition.z-variable { color: #E78284; }
.z-constant.z-other.z-unicode-range { color: #EF9F76; }
.z-variable.z-parameter.z-url { color: #A6D189; }
.z-variable.z-other.z-less { color: #8CAAEE; }
.z-variable.z-other.z-env { color: #C6D0F5; }
.z-meta.z-annotation.z-go { color: #EA999C; }
.z-punctuation.z-definition.z-tag { color: #CA9EE6; }
.z-entity.z-name.z-tag { color: #CA9EE6; }
.z-punctuation.z-definition.z-tag { color: #CA9EE6; }
.z-constant.z-character.z-entity { color: #E78284; }
.z-keyword.z-control.z-preamble { color: #81C8BE; }
.z-support.z-function.z-be { color: #99D1DB; }
.z-support.z-function.z-rust { color: #8CAAEE; font-style: italic; }
.z-variable.z-other.z-rust { color: #EA999C; }
.z-variable.z-other.z-rust { color: #C6D0F5; }
.z-punctuation.z-definition.z-comment { color: #F4B8E4; font-style: italic; }
.z-punctuation.z-section.z-interpolation { color: #E78284; }
.z-punctuation.z-section.z-interpolation { color: #E78284; }
.z-punctuation.z-section.z-interpolation { color: #81C8BE; }
.z-variable.z-other.z-less { color: #EA999C; }
.z-string.z-unquoted.z-graphql { color: #EEBEBE; }
.z-storage.z-type.z-rust { color: #C6D0F5; }
.z-variable.z-other.z-readwrite { color: #EF9F76; font-style: italic; }
.z-keyword.z-other.z-unit.z-user-defined { color: #EF9F76; }
.z-entity.z-name.z-tag.z-documentation { color: #CA9EE6; }
.z-entity.z-other.z-attribute-name.z-documentation { color: #E78284; }
.z-support.z-type.z-property-name.z-css { color: #8CAAEE; }
.z-support.z-type.z-property-name.z-less { color: #8CAAEE; }
.z-entity.z-name.z-scope-resolution.z-cpp { color: #E5C890; }
.z-storage.z-type.z-class.z-doxygen { }
.z-storage.z-modifier.z-reference.z-cpp { color: #81C8BE; }
.z-comment.z-block.z-documentation.z-cs { color: #C6D0F5; }
.z-punctuation.z-separator.z-operator.z-css { color: #81C8BE; }
.z-support.z-type.z-vendored.z-property-name { color: #99D1DB; }
.z-meta.z-definition.z-variable.z-scss { color: #EA999C; }
.z-keyword.z-other.z-definition.z-ini { color: #8CAAEE; }
.z-support.z-type.z-property-name.z-json { color: #8CAAEE; }
.z-support.z-type.z-property-name.z-toml { color: #8CAAEE; }
.z-entity.z-name.z-tag.z-yaml { color: #8CAAEE; }
.z-support.z-type.z-property-name.z-yaml { color: #8CAAEE; }
.z-variable.z-other.z-alias.z-yaml { color: #E5C890; }
.z-support.z-type.z-property-name.z-table { color: #E5C890; }
.z-punctuation.z-definition.z-anchor.z-yaml { color: #F4B8E4; }
.z-punctuation.z-definition.z-alias.z-yaml { color: #F4B8E4; }
.z-meta.z-diff.z-header.z-from-file { color: #8CAAEE; }
.z-meta.z-diff.z-header.z-to-file { color: #8CAAEE; }
.z-punctuation.z-definition.z-from-file.z-diff { color: #8CAAEE; }
.z-punctuation.z-definition.z-to-file.z-diff { color: #8CAAEE; }
.z-support.z-function.z-builtin.z-gdscript { color: #8CAAEE; }
.z-string.z-unquoted.z-alias.z-graphql { color: #EEBEBE; }
.z-constant.z-character.z-enum.z-graphql { color: #81C8BE; }
.z-constant.z-character.z-entity.z-xml { color: #E78284; }
.z-constant.z-character.z-entity.z-tsx { color: #E78284; }
.z-support.z-class.z-component.z-jsx { color: #F4B8E4; }
.z-support.z-class.z-component.z-tsx { color: #F4B8E4; }
.z-support.z-class.z-component.z-vue { color: #F4B8E4; }
.z-constant.z-other.z-enum.z-java { color: #81C8BE; }
.z-storage.z-modifier.z-import.z-java { color: #C6D0F5; }
.z-variable.z-other.z-constant.z-js { color: #C6D0F5; }
.z-variable.z-other.z-constant.z-ts { color: #C6D0F5; }
.z-variable.z-other.z-property.z-js { color: #C6D0F5; }
.z-variable.z-other.z-property.z-ts { color: #C6D0F5; }
.z-storage.z-type.z-class.z-jsdoc { }
.z-constant.z-language.z-null.z-js { color: #CA9EE6; }
.z-constant.z-language.z-null.z-ts { color: #CA9EE6; }
.z-constant.z-language.z-undefined.z-js { color: #CA9EE6; }
.z-constant.z-language.z-undefined.z-ts { color: #CA9EE6; }
.z-support.z-type.z-builtin.z-ts { color: #CA9EE6; }
.z-keyword.z-operator.z-expression.z-is { color: #CA9EE6; }
.z-support.z-function.z-macro.z-julia { color: #81C8BE; font-style: italic; }
.z-constant.z-other.z-symbol.z-julia { color: #EA999C; }
.z-markup.z-heading.z-heading-0.z-asciidoc { color: #E78284; }
.z-markup.z-heading.z-heading-1.z-asciidoc { color: #EF9F76; }
.z-markup.z-heading.z-heading-2.z-asciidoc { color: #E5C890; }
.z-markup.z-heading.z-heading-3.z-asciidoc { color: #A6D189; }
.z-markup.z-heading.z-heading-4.z-asciidoc { color: #85C1DC; }
.z-markup.z-heading.z-heading-5.z-asciidoc { color: #BABBF1; }
.z-punctuation.z-definition.z-constant.z-markdown { color: #BABBF1; }
.z-punctuation.z-definition.z-constant.z-quarto { color: #BABBF1; }
.z-punctuation.z-definition.z-raw.z-markdown { color: #A6D189; }
.z-punctuation.z-definition.z-raw.z-quarto { color: #A6D189; }
.z-markup.z-raw.z-block.z-markdown { color: #A6D189; }
.z-markup.z-raw.z-block.z-quarto { color: #A6D189; }
.z-punctuation.z-definition.z-quote.z-begin { color: #F4B8E4; }
.z-variable.z-parameter.z-name.z-nix { color: #C6D0F5; }
.z-string.z-unquoted.z-path.z-nix { color: #F4B8E4; }
.z-keyword.z-other.z-phpdoc.z-php { }
.z-support.z-variable.z-magic.z-python { color: #C6D0F5; }
.z-meta.z-function-call.z-arguments.z-python { color: #C6D0F5; }
.z-support.z-function.z-magic.z-python { color: #99D1DB; font-style: italic; }
.z-keyword.z-control.z-flow.z-python { color: #CA9EE6; }
.z-keyword.z-operator.z-logical.z-python { color: #CA9EE6; }
.z-storage.z-type.z-function.z-python { color: #CA9EE6; }
.z-support.z-token.z-decorator.z-python { color: #99D1DB; }
.z-punctuation.z-definition.z-decorator.z-python { color: #EF9F76; font-style: italic; }
.z-support.z-type.z-exception.z-python { color: #EF9F76; }
.z-support.z-function.z-builtin.z-python { color: #EF9F76; }
.z-storage.z-type.z-string.z-python { color: #A6D189; font-style: italic; }
.z-meta.z-function.z-parameters.z-python { }
.z-meta.z-function-call.z-arguments.z-r { color: #C6D0F5; }
.z-keyword.z-control.z-anchor.z-regexp { color: #CA9EE6; }
.z-punctuation.z-definition.z-group.z-regexp { color: #A6D189; }
.z-keyword.z-other.z-back-reference.z-regexp { color: #A6D189; }
.z-punctuation.z-definition.z-character-class.z-regexp { color: #E5C890; }
.z-constant.z-other.z-character-class.z-regexp { color: #F4B8E4; }
.z-keyword.z-operator.z-quantifier.z-regexp { color: #81C8BE; }
.z-constant.z-character.z-numeric.z-regexp { color: #EF9F76; }
.z-meta.z-assertion.z-look-ahead.z-regexp { color: #8CAAEE; }
.z-meta.z-assertion.z-negative-look-ahead.z-regexp { color: #8CAAEE; }
.z-punctuation.z-definition.z-attribute.z-rust { color: #E5C890; font-style: italic; }
.z-storage.z-type.z-module.z-rust { color: #CA9EE6; }
.z-storage.z-type.z-struct.z-rust { color: #CA9EE6; }
.z-storage.z-type.z-enum.z-rust { color: #CA9EE6; }
.z-storage.z-type.z-trait.z-rust { color: #CA9EE6; }
.z-storage.z-type.z-union.z-rust { color: #CA9EE6; }
.z-storage.z-type.z-impl.z-rust { color: #CA9EE6; }
.z-storage.z-type.z-function.z-rust { color: #CA9EE6; }
.z-storage.z-type.z-type.z-rust { color: #CA9EE6; }
.z-entity.z-name.z-impl.z-rust { color: #E5C890; font-style: italic; }
.z-entity.z-name.z-module.z-rust { color: #EF9F76; }
.z-entity.z-name.z-trait.z-rust { color: #E5C890; font-style: italic; }
.z-storage.z-type.z-source.z-rust { color: #E5C890; }
.z-entity.z-name.z-union.z-rust { color: #E5C890; }
.z-storage.z-modifier.z-lifetime.z-rust { color: #8CAAEE; font-style: italic; }
.z-entity.z-name.z-type.z-lifetime { color: #8CAAEE; font-style: italic; }
.z-meta.z-function.z-call.z-rust { color: #8CAAEE; }
.z-punctuation.z-brackets.z-angle.z-rust { color: #99D1DB; }
.z-constant.z-other.z-caps.z-rust { color: #EF9F76; }
.z-variable.z-language.z-self.z-rust { color: #E78284; }
.z-punctuation.z-definition.z-entity.z-css { color: #E5C890; }
.z-entity.z-other.z-attribute-name.z-pseudo-class { color: #81C8BE; }
.z-meta.z-annotation.z-parameters.z-go { color: #EF9F76; }
.z-variable.z-other.z-readwrite.z-js { color: #EA999C; }
.z-storage.z-type.z-annotation.z-lua { color: #CA9EE6; }
.z-entity.z-name.z-variable.z-lua { color: #C6D0F5; }
.z-punctuation.z-definition.z-heading.z-markdown { color: #E78284; }
.z-punctuation.z-definition.z-heading.z-quarto { color: #E78284; }
.z-punctuation.z-definition.z-heading.z-mdx { color: #E78284; }
.z-punctuation.z-definition.z-heading.z-markdown { color: #EF9F76; }
.z-punctuation.z-definition.z-heading.z-quarto { color: #EF9F76; }
.z-punctuation.z-definition.z-heading.z-mdx { color: #EF9F76; }
.z-punctuation.z-definition.z-heading.z-markdown { color: #E5C890; }
.z-punctuation.z-definition.z-heading.z-quarto { color: #E5C890; }
.z-punctuation.z-definition.z-heading.z-mdx { color: #E5C890; }
.z-punctuation.z-definition.z-heading.z-markdown { color: #A6D189; }
.z-punctuation.z-definition.z-heading.z-quarto { color: #A6D189; }
.z-punctuation.z-definition.z-heading.z-mdx { color: #A6D189; }
.z-punctuation.z-definition.z-heading.z-markdown { color: #85C1DC; }
.z-punctuation.z-definition.z-heading.z-quarto { color: #85C1DC; }
.z-punctuation.z-definition.z-heading.z-mdx { color: #85C1DC; }
.z-punctuation.z-definition.z-heading.z-markdown { color: #BABBF1; }
.z-punctuation.z-definition.z-heading.z-quarto { color: #BABBF1; }
.z-punctuation.z-definition.z-heading.z-mdx { color: #BABBF1; }
.z-punctuation.z-definition.z-link.z-title { color: #BABBF1; }
.z-punctuation.z-definition.z-link.z-title { color: #BABBF1; }
.z-variable.z-parameter.z-name.z-nix { color: #BABBF1; }
.z-punctuation.z-definition.z-variable.z-php { color: #EA999C; }
.z-punctuation.z-definition.z-string.z-begin { color: #F4B8E4; }
.z-punctuation.z-definition.z-string.z-end { color: #F4B8E4; }
.z-string.z-quoted.z-double.z-rust { }
.z-storage.z-type.z-source.z-rust { color: #81C8BE; }
.z-constant.z-other.z-placeholder.z-rust { color: #F4B8E4; }
.z-punctuation.z-definition.z-variable.z-shell { color: #E78284; }
.z-punctuation.z-definition.z-variable.z-shell { color: #E78284; }
.z-variable.z-other.z-normal.z-shell { color: #C6D0F5; }
.z-punctuation.z-definition.z-variable.z-less { color: #8CAAEE; }
.z-punctuation.z-definition.z-variable.z-less { color: #EA999C; }
.z-keyword.z-other.z-unit.z-suffix.z-floating-point { color: #EF9F76; }
.z-storage.z-modifier.z-specifier.z-extern.z-cpp { color: #CA9EE6; }
.z-entity.z-name.z-scope-resolution.z-parameter.z-cpp { color: #E5C890; }
.z-keyword.z-other.z-unit.z-percentage.z-css { color: #EF9F76; }
.z-punctuation.z-support.z-type.z-property-name.z-json { color: #8CAAEE; }
.z-punctuation.z-support.z-type.z-property-name.z-toml { color: #8CAAEE; }
.z-punctuation.z-support.z-type.z-property-name.z-yaml { color: #8CAAEE; }
.z-entity.z-name.z-type.z-anchor.z-yaml { color: #E5C890; }
.z-entity.z-name.z-section.z-group-title.z-ini { color: #E5C890; }
.z-entity.z-other.z-document.z-begin.z-yaml { color: #F4B8E4; }
.z-constant.z-character.z-entity.z-js.z-jsx { color: #E78284; }
.z-support.z-type.z-object.z-console.z-js { color: #C6D0F5; }
.z-support.z-type.z-object.z-module.z-js { color: #CA9EE6; }
.z-keyword.z-declaration.z-function.z-arrow.z-js { color: #81C8BE; }
.z-storage.z-type.z-function.z-arrow.z-ts { color: #81C8BE; }
.z-keyword.z-operator.z-expression.z-in.z-js { color: #CA9EE6; }
.z-keyword.z-operator.z-expression.z-in.z-ts { color: #CA9EE6; }
.z-keyword.z-operator.z-expression.z-infer.z-ts { color: #CA9EE6; }
.z-keyword.z-operator.z-expression.z-instanceof.z-js { color: #CA9EE6; }
.z-keyword.z-operator.z-expression.z-instanceof.z-ts { color: #CA9EE6; }
.z-keyword.z-operator.z-expression.z-keyof.z-ts { color: #CA9EE6; }
.z-keyword.z-operator.z-expression.z-of.z-js { color: #CA9EE6; }
.z-keyword.z-operator.z-expression.z-of.z-ts { color: #CA9EE6; }
.z-keyword.z-operator.z-expression.z-typeof.z-ts { color: #CA9EE6; }
.z-constant.z-other.z-general.z-math.z-tex { color: #EEBEBE; }
.z-markup.z-heading.z-atx.z-\31 .z-mdx { color: #E78284; }
.z-markup.z-heading.z-setext.z-\31 .z-markdown { color: #E78284; }
.z-markup.z-heading.z-atx.z-\32 .z-mdx { color: #EF9F76; }
.z-markup.z-heading.z-setext.z-\32 .z-markdown { color: #EF9F76; }
.z-markup.z-heading.z-atx.z-\33 .z-mdx { color: #E5C890; }
.z-markup.z-heading.z-atx.z-\34 .z-mdx { color: #A6D189; }
.z-markup.z-heading.z-atx.z-\35 .z-mdx { color: #85C1DC; }
.z-markup.z-heading.z-atx.z-\36 .z-mdx { color: #BABBF1; }
.z-string.z-other.z-link.z-title.z-markdown { color: #BABBF1; }
.z-string.z-other.z-link.z-title.z-quarto { color: #BABBF1; }
.z-constant.z-other.z-reference.z-link.z-markdown { color: #BABBF1; }
.z-constant.z-other.z-reference.z-link.z-quarto { color: #BABBF1; }
.z-markup.z-inline.z-raw.z-string.z-markdown { color: #A6D189; }
.z-markup.z-inline.z-raw.z-string.z-quarto { color: #A6D189; }
.z-punctuation.z-definition.z-list.z-begin.z-markdown { color: #81C8BE; }
.z-punctuation.z-definition.z-list.z-begin.z-quarto { color: #81C8BE; }
.z-entity.z-other.z-attribute-name.z-multipart.z-nix { color: #8CAAEE; }
.z-entity.z-other.z-attribute-name.z-single.z-nix { color: #8CAAEE; }
.z-variable.z-language.z-special.z-self.z-python { color: #E78284; font-style: italic; }
.z-meta.z-function.z-decorator.z-identifier.z-python { color: #99D1DB; }
.z-entity.z-name.z-function.z-decorator.z-python { color: #EF9F76; font-style: italic; }
.z-constant.z-other.z-character-class.z-range.z-regexp { color: #F2D5CF; }
.z-punctuation.z-definition.z-group.z-no-capture.z-regexp { color: #8CAAEE; }
.z-entity.z-name.z-type.z-numeric.z-rust { color: #CA9EE6; }
.z-entity.z-name.z-function.z-macro.z-rust { color: #8CAAEE; font-style: italic; }
.z-variable.z-other.z-metavariable.z-name.z-rust { color: #F4B8E4; }
.z-punctuation.z-definition.z-comment.z-shebang.z-shell { color: #F4B8E4; font-style: italic; }
.z-punctuation.z-definition.z-evaluation.z-backticks.z-shell { color: #81C8BE; }
.z-entity.z-name.z-tag.z-heredoc.z-shell { color: #CA9EE6; }
.z-entity.z-other.z-attribute-name.z-class.z-css { color: #E5C890; }
.z-keyword.z-other.z-documentation.z-javadoc.z-java { }
.z-string.z-quoted.z-single.z-char.z-rust { }
.z-keyword.z-operator.z-macro.z-dollar.z-rust { color: #F4B8E4; }
.z-entity.z-name.z-scope-resolution.z-template.z-call.z-cpp { color: #E5C890; }
.z-entity.z-name.z-scope-resolution.z-function.z-definition.z-cpp { color: #E5C890; }
.z-constant.z-other.z-time.z-datetime.z-offset.z-toml { color: #F4B8E4; }
.z-constant.z-character.z-format.z-placeholder.z-other.z-python { color: #F4B8E4; }
.z-entity.z-name.z-function.z-macro.z-rules.z-rust { color: #CA9EE6; }
.z-variable.z-parameter.z-function.z-language.z-special.z-self.z-python { color: #E78284; font-style: italic; }

View File

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="570" height="720">
<path d="m 158.375,1.65625 c -3.6193,0.1123192 -7.51715,1.4493266 -11.9375,4.9375 C 135.61054,2.4174496 125.11041,0.9665612 115.71875,9.46875 101.22489,7.5879922 96.508461,11.469494 92.9375,16 89.754953,15.934135 69.118652,12.72793 59.65625,26.84375 35.874602,24.030329 28.359472,40.831625 36.875,56.5 c -4.856911,7.518955 -9.889503,14.947226 1.46875,29.28125 -4.018006,7.983514 -1.527431,16.64403 7.9375,27.125 -2.497857,11.2226 2.412077,19.14086 11.21875,25.3125 -1.64709,15.35756 14.083505,24.28743 18.78125,27.46875 1.803677,8.94868 5.56291,17.3927 23.53125,22.0625 2.96323,13.3361 13.76206,15.63906 24.21875,18.4375 -34.561929,20.08954 -64.20067,46.52266 -64,111.375 l -5.0625,9.03125 C 15.337882,350.69604 -20.316547,428.16001 35.4375,491.125 c 3.641871,19.70838 9.749589,33.86396 15.1875,49.53125 8.133834,63.13058 61.21763,92.69161 75.21875,96.1875 20.51653,15.62812 42.36818,30.45672 71.9375,40.84375 27.87515,28.74946 58.07388,39.7064 88.4375,39.6875 0.44515,-2.8e-4 0.89853,0.005 1.34375,0 30.36363,0.0189 60.56235,-10.93804 88.4375,-39.6875 29.56932,-10.38703 51.42097,-25.21563 71.9375,-40.84375 14.00112,-3.49589 67.08492,-33.05692 75.21875,-96.1875 5.43791,-15.66729 11.54562,-29.82287 15.1875,-49.53125 55.75404,-62.96499 20.09961,-140.42896 -19.53125,-164.53125 L 513.75,317.5625 c 0.20067,-64.85234 -29.43807,-91.28546 -64,-111.375 10.45669,-2.79844 21.25552,-5.1014 24.21875,-18.4375 17.96834,-4.6698 21.72758,-13.11382 23.53125,-22.0625 4.69775,-3.18132 20.42834,-12.11119 18.78125,-27.46875 8.80668,-6.17164 13.71661,-14.0899 11.21875,-25.3125 9.46494,-10.48097 11.9555,-19.141487 7.9375,-27.125 C 546.79575,71.447226 541.76316,64.018955 536.90625,56.5 545.42178,40.831625 537.90665,24.030329 514.125,26.84375 504.6626,12.72793 484.0263,15.934135 480.84375,16 477.27279,11.469494 472.55636,7.587992 458.0625,9.46875 448.67084,0.96656132 438.17071,2.41745 427.34375,6.59375 414.48455,-3.5536631 405.97149,4.580454 396.25,7.65625 380.67615,2.568472 377.11698,9.5371578 369.46875,12.375 352.4935,8.7869238 347.33315,16.598532 339.1875,24.84375 l -9.46875,-0.1875 c -25.61054,15.093115 -38.33378,45.825501 -42.84375,61.625 -4.51206,-15.801979 -17.20647,-46.534542 -42.8125,-61.625 l -9.46875,0.1875 C 226.4481,16.598532 221.28775,8.7869235 204.3125,12.375 196.66427,9.5371583 193.1051,2.5684729 177.53125,7.65625 c -6.37973,-2.0184911 -12.24667,-6.2144276 -19.15625,-6 z" style="fill:#000000" />
<path d="m 107.39184,68.055583 c 67.94767,35.031357 107.44689,63.368967 129.08717,87.504467 -11.08235,44.41759 -68.89638,46.44464 -90.03559,45.19858 4.32842,-2.01474 7.93988,-4.42778 9.22051,-8.13574 -5.30449,-3.76981 -24.11289,-0.39719 -37.24363,-7.77416 5.04407,-1.04499 7.40348,-2.06302 9.76289,-5.78542 -12.40571,-3.9567 -25.76862,-7.36642 -33.627746,-13.92116 4.241253,0.0524 8.201156,0.9488 13.740366,-2.89271 -11.111694,-5.98819 -22.969108,-10.73351 -32.18139,-19.88738 5.745213,-0.14063 11.939452,-0.0568 13.740371,-2.16953 -10.17044,-6.30068 -18.751242,-13.30787 -25.853592,-20.97215 8.039979,0.97052 11.435284,0.13478 13.378782,-1.26556 -7.687795,-7.87419 -17.417559,-14.52319 -22.056911,-24.22644 5.969606,2.057484 11.431249,2.84506 15.36752,-0.180795 -2.612365,-5.893453 -13.805413,-9.369618 -20.248967,-23.141676 6.284359,0.609377 12.949606,1.371108 14.282753,0 C 61.802068,58.517346 56.796919,51.835885 51.887978,44.913906 65.338021,44.714177 85.715734,44.966253 84.792549,43.82914 l -8.31654,-8.497335 c 13.137617,-3.537241 26.580651,0.568164 36.339661,3.615887 4.38186,-3.457681 -0.0776,-7.82998 -5.42383,-12.294015 11.16496,1.490646 21.25382,4.057389 30.37345,7.593362 4.87238,-4.399329 -3.16389,-8.798658 -7.05098,-13.197987 17.24936,3.272568 24.55716,7.87068 31.81981,12.47481 5.26935,-5.050799 0.30166,-9.343299 -3.2543,-13.740371 13.00566,4.817048 19.70478,11.035551 26.75756,17.175463 2.39119,-3.227053 6.07494,-5.592408 1.62715,-13.378781 9.23416,5.322725 16.18926,11.59506 21.33374,18.621817 5.71336,-3.637941 3.40387,-8.613023 3.43509,-13.197987 9.59665,7.806516 15.68687,16.11395 23.14168,24.226443 1.50169,-1.093437 2.81661,-4.80171 3.97747,-10.666867 22.89539,22.211815 55.24591,78.158241 8.31654,100.340861 C 207.95028,109.95728 160.25292,86.016909 107.39184,68.055583 z" style="fill:#75a928" />
<path d="M 467.92487,68.055583 C 399.9772,103.08694 360.47798,131.42455 338.8377,155.56005 c 11.08235,44.41759 68.89638,46.44464 90.03559,45.19858 -4.32842,-2.01474 -7.93988,-4.42778 -9.22051,-8.13574 5.30449,-3.76981 24.11289,-0.39719 37.24363,-7.77416 -5.04407,-1.04499 -7.40348,-2.06302 -9.76289,-5.78542 12.40571,-3.9567 25.76862,-7.36642 33.62775,-13.92116 -4.24126,0.0524 -8.20116,0.9488 -13.74037,-2.89271 11.11169,-5.98819 22.96911,-10.73351 32.18139,-19.88738 -5.74521,-0.14063 -11.93945,-0.0568 -13.74037,-2.16953 10.17044,-6.30068 18.75124,-13.30787 25.85359,-20.97215 -8.03998,0.97052 -11.43528,0.13478 -13.37878,-1.26556 7.68779,-7.87419 17.41756,-14.52319 22.05691,-24.22644 -5.96961,2.057484 -11.43125,2.84506 -15.36752,-0.180795 2.61237,-5.893453 13.80541,-9.369618 20.24897,-23.141676 -6.28436,0.609377 -12.94961,1.371108 -14.28276,0 2.92231,-11.888563 7.92746,-18.570024 12.8364,-25.492003 -13.45004,-0.199729 -33.82775,0.05235 -32.90457,-1.084766 l 8.31654,-8.497335 c -13.13762,-3.537241 -26.58065,0.568164 -36.33966,3.615887 -4.38186,-3.457681 0.0776,-7.82998 5.42383,-12.294015 -11.16496,1.490646 -21.25382,4.057389 -30.37345,7.593362 -4.87238,-4.399329 3.16389,-8.798658 7.05098,-13.197987 -17.24936,3.272568 -24.55716,7.87068 -31.81981,12.47481 -5.26935,-5.050799 -0.30166,-9.343299 3.2543,-13.740371 -13.00566,4.817048 -19.70478,11.035551 -26.75756,17.175463 -2.39119,-3.227053 -6.07494,-5.592408 -1.62715,-13.378781 -9.23416,5.322725 -16.18926,11.59506 -21.33374,18.621817 -5.71336,-3.637941 -3.40387,-8.613023 -3.43509,-13.197987 -9.59665,7.806516 -15.68687,16.11395 -23.14168,24.226443 -1.50169,-1.093437 -2.81661,-4.80171 -3.97747,-10.666867 -22.89539,22.211815 -55.24591,78.158241 -8.31654,100.340861 39.91877,-32.94716 87.61613,-56.887531 140.47721,-74.848857 z" style="fill:#75a928" />
<path d="m 365.2046,521.84937 a 71.956154,66.532318 0 1 1 -143.91231,0 71.956154,66.532318 0 1 1 143.91231,0 z" transform="matrix(1.131107,0,0,1.1280497,-43.139135,-68.310983)" style="fill:#bc1142" />
<path d="m 262.84091,276.64774 a 61.875,28.125 0 1 1 -123.75,0 61.875,28.125 0 1 1 123.75,0 z" transform="matrix(0.76741684,-1.1613112,2.171115,1.4224368,-560.88858,217.68859)" style="fill:#bc1142" />
<path d="m 262.84091,276.64774 a 61.875,28.125 0 1 1 -123.75,0 61.875,28.125 0 1 1 123.75,0 z" transform="matrix(-0.76741684,-1.1613112,-2.171115,1.4224368,1134.8288,213.68859)" style="fill:#bc1142" />
<path d="M 72.910253,342.0878 C 109.32447,332.33088 85.201845,492.72431 55.576871,479.56357 22.990103,453.35089 12.493801,376.58814 72.910253,342.0878 z" style="fill:#bc1142" />
<path d="m 493.67828,340.0878 c -36.41422,-9.75692 -12.2916,150.63651 17.33338,137.47577 32.58677,-26.21268 43.08307,-102.97543 -17.33338,-137.47577 z" style="fill:#bc1142" />
<path d="m 369.97158,220.6534 c 62.83486,-10.61013 115.11594,26.72229 113.01138,94.85796 -2.06693,26.12112 -136.15872,-90.96907 -113.01138,-94.85796 z" style="fill:#bc1142" />
<path d="M 196.35975,218.6534 C 133.52489,208.04327 81.24381,245.37569 83.34837,313.51136 85.4153,339.63248 219.50709,222.54229 196.35975,218.6534 z" style="fill:#bc1142" />
<path d="m 286.61932,202.75568 c -37.50259,-0.97548 -73.49548,27.83418 -73.58158,44.54443 -0.10462,20.30426 29.6512,41.09266 73.83726,41.62035 45.12305,0.32321 73.91561,-16.64049 74.0611,-37.59409 0.16484,-23.73996 -41.03879,-48.93744 -74.31678,-48.57069 z" style="fill:#bc1142" />
<path d="m 288.90937,619.11675 c 32.69744,-1.42711 76.57083,10.53196 76.6568,26.39598 0.5427,15.4052 -39.78969,50.21055 -78.82634,49.53765 -40.42729,1.74391 -80.06908,-33.11559 -79.54951,-45.19859 -0.60506,-17.71593 49.226,-31.54796 81.71905,-30.73504 z" style="fill:#bc1142" />
<path d="m 168.13874,525.10369 c 23.2791,28.04573 33.89066,77.31899 14.46355,91.84353 -18.37917,11.08784 -63.01228,6.52162 -94.736237,-39.05157 -21.395052,-38.24168 -18.637584,-77.15663 -3.615887,-88.58924 22.464424,-13.68429 57.173424,4.79902 83.888574,35.79728 z" style="fill:#bc1142" />
<path d="m 405.0209,516.21177 c -25.18682,29.50165 -39.21227,83.30951 -20.83785,100.6428 17.56828,13.46361 64.7292,11.58162 99.56566,-36.75574 25.29599,-32.46471 16.82013,-86.68225 2.37077,-101.07511 -21.46408,-16.60213 -52.27691,4.64489 -81.09858,37.18805 z" style="fill:#bc1142" />
</svg>

After

Width:  |  Height:  |  Size: 8.7 KiB

BIN
static/img/emp-cutout.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
static/img/profile.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

1
themes/tabi Submodule

Submodule themes/tabi added at 0a48c52770