don't do theme, build via nix

This commit is contained in:
CherryKitten 2024-04-20 14:54:05 +02:00
parent 1fb5d8a426
commit 8dccf577c3
Signed by: sammy
GPG key ID: 98D8F75FB0658276
89 changed files with 1267 additions and 5514 deletions

1
.gitignore vendored
View file

@ -1 +1,2 @@
.idea
result

View file

@ -2,8 +2,6 @@
base_url = "https://cherrykitten.dev"
title = "CherryKitten"
theme = "cherrykitten"
compile_sass = true
# Whether to build a search index to be used later on by a JavaScript library

61
flake.lock Normal file
View file

@ -0,0 +1,61 @@
{
"nodes": {
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1710146030,
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1713596654,
"narHash": "sha256-LJbHQQ5aX1LVth2ST+Kkse/DRzgxlVhTL1rxthvyhZc=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "fd16bb6d3bcca96039b11aa52038fafeb6e4f4be",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

View file

@ -1,12 +1,30 @@
{
description = "Zola based website";
description = "cherrykitten.dev";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
};
inputs.nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
inputs.flake-utils.url = "github:numtide/flake-utils";
outputs = { self, nixpkgs }: {
};
outputs = { self, nixpkgs, flake-utils }:
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = nixpkgs.legacyPackages.${system};
in
{
packages.website = pkgs.stdenv.mkDerivation {
pname = "cherrykitten.dev";
version = "0";
src = ./.;
nativeBuildInputs = [ pkgs.zola ];
buildPhase = "zola build";
installPhase = "cp -r public $out";
};
defaultPackage = self.packages.${system}.website;
devShell = pkgs.mkShell {
packages = with pkgs; [
zola
];
};
}
);
}

View file

@ -1,99 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>
404
</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
<meta name="robots" content="noodp"/>
<link rel="stylesheet" href="https://cherrykitten.dev/style.css">
<link rel="stylesheet" href="https://cherrykitten.dev/color.css">
<link rel="alternate" type="application/rss+xml" title="RSS" href="https://cherrykitten.dev/ rss.xml
">
</head>
<body class="">
<div class="container">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="https://cherrykitten.dev" style="text-decoration: none;">
<div class="logo">
CherryKitten
</div>
</a>
</div>
</div>
<nav class="menu">
<ul class="menu__inner">
<li><a href="https://cherrykitten.dev">Home</a></li>
<li><a href="https://cherrykitten.dev/about">About me</a></li>
<li><a href="https://cherrykitten.dev/blog">Blog</a></li>
<li><a href="https://cherrykitten.dev/cv">CV</a></li>
<li><a href="https://cherrykitten.dev/contact">Contact</a></li>
</ul>
</nav>
</header>
<div class="content">
<div class="post">
<h1 class="post-title">Lost?</h1>
<p>This page does not exist.</p>
</div>
</div>
<footer class="footer">
<div class="footer__inner">
<div class="copyright copyright--user">
 
<span>&copy;
2024
- CherryKitten</span><br>
 
<span onclick="alert('Nya!')">🐱</span></div>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<span><a href="/impressum">Impressum</a></span>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<a href="/rss.xml">RSS</a>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<img src="/buttons/antinft.gif" alt="Anti NFT">
<img src="/buttons/acab.gif" alt="ACAB">
<img src="/buttons/transnow2.gif" alt="Trans rights now">
</div>
</footer>
</div>
</body>
</html>

View file

@ -1,131 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>About Me | CherryKitten</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
<meta name="robots" content="noodp"/>
<link rel="stylesheet" href="https://cherrykitten.dev/style.css">
<link rel="stylesheet" href="https://cherrykitten.dev/color.css">
<link rel="alternate" type="application/rss+xml" title="RSS" href="https://cherrykitten.dev/ rss.xml
">
</head>
<body class="">
<div class="container">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="https://cherrykitten.dev" style="text-decoration: none;">
<div class="logo">
CherryKitten
</div>
</a>
</div>
</div>
<nav class="menu">
<ul class="menu__inner">
<li><a href="https://cherrykitten.dev">Home</a></li>
<li class="active"><a href="https://cherrykitten.dev/about">About me</a></li>
<li><a href="https://cherrykitten.dev/blog">Blog</a></li>
<li><a href="https://cherrykitten.dev/cv">CV</a></li>
<li><a href="https://cherrykitten.dev/contact">Contact</a></li>
</ul>
</nav>
</header>
<div class="content">
<div class="post">
<h1 class="post-title"><a href="https://cherrykitten.dev/about/">About Me</a></h1>
<div class="post-meta-inline">
<span class="post-date"></span>
</div>
<div class="post-content">
<p>I'm Sammy. A queer catgirl who loves working with computers.
My pronouns are It/Its. <strong>Only</strong> It/Its.
I love learning new things, trying out new technologies and exploring the unknown.</p>
<p>My first little steps into the world of IT already started as a little kitten.
At age 12, I started learning LUA and the basics of server infrastructure
to host Gameservers with custom code for a video game I had been playing.</p>
<p>Since then, I have been continuously expanding my knowledge in both programming and administration.</p>
<p>The linux command line is my cozy place. I selfhost almost everything.
From cloud storage and media streaming to password management and social media. I also <strong>love</strong> Open Source. I like
contributing to Open Source-Software and building my own tools to share with the world.</p>
<p>I am experienced in Web-Development with HTML, CSS, and JavaScript, including Frameworks like React, Vue.js, and Svelte,
as well as Backend-Development with NodeJS and Rust. I also know Python, and am generally able to learn new programming
languages well and understand them quickly, even if I haven't used them much before. For example, I have also worked
with PHP and Java Code in the past. Like I said, I love learning new things.</p>
<p>Besides all that computer stuff, I love sewing, especially making cute plushies. I also try to spend at least as much
time outside in nature as I do inside in front of a computer screen. I love being around water and wild animals, I love
walking through
forests and listening to all the beautiful birdsongs.</p>
<p>Sometimes I try to make music and visual arts, it might not be much yet, but it's fun to play around with.</p>
</div>
</div>
</div>
<footer class="footer">
<div class="footer__inner">
<div class="copyright copyright--user">
 
<span>&copy;
2024
- CherryKitten</span><br>
 
<span onclick="alert('Nya!')">🐱</span></div>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<span><a href="/impressum">Impressum</a></span>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<a href="/rss.xml">RSS</a>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<img src="/buttons/antinft.gif" alt="Anti NFT">
<img src="/buttons/acab.gif" alt="ACAB">
<img src="/buttons/transnow2.gif" alt="Trans rights now">
</div>
</footer>
</div>
</body>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 248 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 878 KiB

View file

@ -1,193 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Being Queer and Otherkin | CherryKitten</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
<meta name="robots" content="noodp"/>
<link rel="stylesheet" href="https://cherrykitten.dev/style.css">
<link rel="stylesheet" href="https://cherrykitten.dev/color.css">
<link rel="alternate" type="application/rss+xml" title="RSS" href="https://cherrykitten.dev/ rss.xml
">
</head>
<body class="">
<div class="container">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="https://cherrykitten.dev" style="text-decoration: none;">
<div class="logo">
CherryKitten
</div>
</a>
</div>
</div>
<nav class="menu">
<ul class="menu__inner">
<li><a href="https://cherrykitten.dev">Home</a></li>
<li><a href="https://cherrykitten.dev/about">About me</a></li>
<li class="active"><a href="https://cherrykitten.dev/blog">Blog</a></li>
<li><a href="https://cherrykitten.dev/cv">CV</a></li>
<li><a href="https://cherrykitten.dev/contact">Contact</a></li>
</ul>
</nav>
</header>
<div class="content">
<div class="post">
<h1 class="post-title"><a href="https://cherrykitten.dev/blog/being-queer-and-otherkin/">Being Queer and Otherkin</a></h1>
<div class="post-meta-inline">
<span class="post-date">
2023-06-09
</span>
</div>
<span class="post-tags-inline">
:: tags:&nbsp;
<a class="post-tag" href="https://cherrykitten.dev/tags/personal/">#personal</a>&nbsp;
<a class="post-tag" href="https://cherrykitten.dev/tags/queerness/">#queerness</a>&nbsp;
<a class="post-tag" href="https://cherrykitten.dev/tags/otherkin/">#otherkin</a>&nbsp;
<a class="post-tag" href="https://cherrykitten.dev/tags/neurodivergency/">#neurodivergency</a>&nbsp;
<a class="post-tag" href="https://cherrykitten.dev/tags/autism/">#autism</a>&nbsp;
<a class="post-tag" href="https://cherrykitten.dev/tags/cat/">#cat</a>&nbsp;
<a class="post-tag" href="https://cherrykitten.dev/tags/nya/">#nya</a>&nbsp;
<a class="post-tag" href="https://cherrykitten.dev/tags/meow/">#meow</a>&nbsp;
<a class="post-tag" href="https://cherrykitten.dev/tags/gender/">#gender</a></span>
<div class="post-content">
<p>This is a bit more of a personal one, some background on me personally and on my identity.</p>
<p>As you might have noticed, I am a catgirl. But what does that actually mean?
For some, it might just be a weird cute thing they know from anime, others might think &quot;a girl who likes cats&quot;.
For me, it means I am a cat and a girl (<a href="https://nonbinary.wiki/wiki/Demigender#Demigirl">kinda</a>). Both are equally important parts of my identity.</p>
<p>I am trans, I am nonbinary, and I am otherkin. I am also autistic. All of these are properties of me as a whole. They
add up to create this entity that's writing this post right now. Remove any single one of these properties, and you end
up with a completely different being.</p>
<span id="continue-reading"></span><h3 id="what-even-is-this-otherkin-thing">What even is this 'otherkin' thing???</h3>
<p>The <a href="https://otherkin.miraheze.org/wiki/Main_Page">Otherkin Wiki</a> describes Otherkin as a <em>subculture of people who don't consider
themselves human</em>, although the specifics of what that means and how exactly it manifests can be very different on a
personal basis, and the term functions as an umbrella term for a lot of different experiences.</p>
<p>For me, it means that in every way other than my physical body, I <strong>am</strong> a cat. I don't <em>identify</em> as a cat, I don't
<em>think</em> that I'm a cat. I don't <em>act</em> like a cat. I <strong>am</strong> a cat. I did not choose to be a cat, being a cat is simply a
part of me, the same way my gender and my neurodivergencies are.</p>
<p>In that way, being otherkin is very similar to being trans. There are trans people who, having no idea how it actually
feels to be otherkin, disagree with this comparison, probably out of some kind of urge to appeal to a wider transmisic
society, hoping for easier acceptance by not associating with <em>&quot;those weird ones&quot;</em>. Personally, from my experience of
living as a trans cat, those two things couldn't be any more similar.</p>
<p>I get the same kind of euphoria from getting referred to with feline-related terms that I get from being called a girl,
or from being referred to with my correct pronouns. When I look into a mirror, both the cat ears on my head and the
boobs on my body cause a little happy reaction. I love wearing a collar with a cute little bell the same way I love
wearing a skirt or making my dress go spinny. If you refer to me as <em>&quot;not a cat&quot;</em>, I will feel a similar kind of hurt
and anger as if you misgender me. I don't need people in my life who can accept one part of me, while not respecting an
equally important part of me.</p>
<p>Many of my instinctive and natural behaviours align with the stereotypical cat. I meow at people to get their attention,
I get startled really easily by sudden loud noises and will perk up in alert mode as a reaction. I bump my head against
people to show affection, and I'm always in the way when my girlfriend comes home and I rush over to greet her at the
door while she's trying to unpack. When I feel comfortable, I start kneading with my paws. I love chasing things and
trying to climb up places that are actually too high for me and then being scared of getting back down. The list goes on
and on.</p>
<p>And then there is the overlap of being a cat and being autistic. Many autistic traits are similar to animalistic
behaviour - Or the absence of &quot;typical&quot; human behaviour. I feel <strong>very</strong> uncomfortable around people who I don't know
well, while being very affectionate and active around people I trust and love. I get overstimulated and confused when a
lot of stuff is going on around me. I don't understand most human behaviours, and people think I'm unsociable and mean
when I act distressed or overwhelmed in response to their behaviours and expectations.</p>
<p>In the end, all these parts of me affect each other in many ways. My pronouns, <em>It/Its</em> represent my gender, being
distinct from the binaries made up by human society, and actively going against the notion of what pronouns are
acceptable or not. At the same time, they reinforce the non-human part of me. I am a cat, an animal, and thus my gender
expression - including pronouns - explicitly breaks human ideas of gender. While a lot of people also have different
reasoning for similar gender expressions, for me those aspects are deeply interlinked.</p>
<p>So.. that was a weird one to write. Writing about personal topics can be so much more complex and hard than writing
about touching computers. I hope this was interesting to read, maybe you even learned something new about people like me
or have gained some kind of new perspective on gender and species. Either way, thank you so much for reading my blog,
remember to stay hydrated, and have a lovely <code>{time of day}</code>!</p>
</div>
<div class="pagination">
<div class="pagination__title">
<span class="pagination__title-h">More posts!</span>
<hr />
</div>
<div class="pagination__buttons">
<span class="button previous">
<a href="https://cherrykitten.dev/blog/rust-options-results/">
<span class="button__icon"></span>&nbsp;
<span class="button__text">Learning Rust: A kitten&#x27;s guide to Options and Results</span>
</a>
</span>
<span class="button next">
<a href="https://cherrykitten.dev/blog/birds/">
<span class="button__text">Birds.</span>&nbsp;
<span class="button__icon"></span>
</a>
</span>
</div>
</div>
</div>
</div>
<footer class="footer">
<div class="footer__inner">
<div class="copyright copyright--user">
 
<span>&copy;
2024
- CherryKitten</span><br>
 
<span onclick="alert('Nya!')">🐱</span></div>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<span><a href="/impressum">Impressum</a></span>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<a href="/rss.xml">RSS</a>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<img src="/buttons/antinft.gif" alt="Anti NFT">
<img src="/buttons/acab.gif" alt="ACAB">
<img src="/buttons/transnow2.gif" alt="Trans rights now">
</div>
</footer>
</div>
</body>
</html>

View file

@ -1,191 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Birds. | CherryKitten</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
<meta name="robots" content="noodp"/>
<link rel="stylesheet" href="https://cherrykitten.dev/style.css">
<link rel="stylesheet" href="https://cherrykitten.dev/color.css">
<link rel="alternate" type="application/rss+xml" title="RSS" href="https://cherrykitten.dev/ rss.xml
">
</head>
<body class="">
<div class="container">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="https://cherrykitten.dev" style="text-decoration: none;">
<div class="logo">
CherryKitten
</div>
</a>
</div>
</div>
<nav class="menu">
<ul class="menu__inner">
<li><a href="https://cherrykitten.dev">Home</a></li>
<li><a href="https://cherrykitten.dev/about">About me</a></li>
<li class="active"><a href="https://cherrykitten.dev/blog">Blog</a></li>
<li><a href="https://cherrykitten.dev/cv">CV</a></li>
<li><a href="https://cherrykitten.dev/contact">Contact</a></li>
</ul>
</nav>
</header>
<div class="content">
<div class="post">
<h1 class="post-title"><a href="https://cherrykitten.dev/blog/birds/">Birds.</a></h1>
<div class="post-meta-inline">
<span class="post-date">
2024-03-26
</span>
</div>
<span class="post-tags-inline">
:: tags:&nbsp;
<a class="post-tag" href="https://cherrykitten.dev/tags/animals/">#animals</a>&nbsp;
<a class="post-tag" href="https://cherrykitten.dev/tags/birds/">#birds</a>&nbsp;
<a class="post-tag" href="https://cherrykitten.dev/tags/nature/">#nature</a>&nbsp;
<a class="post-tag" href="https://cherrykitten.dev/tags/society/">#society</a>&nbsp;
<a class="post-tag" href="https://cherrykitten.dev/tags/politics/">#politics</a></span>
<div class="post-content">
<p>Birds. They're all around us. They are wonderful beings of pure bliss. I love them all.</p>
<p>I've wanted to write about &quot;birds&quot; as a general topic for a long time now. There's a lot to say, I have so many bits and pieces of drafts, ideas, thoughts. On birds themselves, on my personal relationship with them, on their cultural significance and how humanity treats them. This is my attempt at actually putting all of that into a semi-coherent text for you to read, or just to have actually written it all out. I don't know if anyone will get that much out of reading this, but I care about this topic deeply and I need to get these words out.</p>
<span id="continue-reading"></span><h2 id="why-i-love-birds">Why I love birds</h2>
<p>I spend a big portion of my free time watching birds, feeding birds, hanging out with birds, admiring birds.</p>
<p>This started in 2022, during a pretty hard time in my life.
My then best friend - now wife! - had recently started carefully feeding the crows that hang out around her favorite spot, and introduced me to her new friends.</p>
<p>At first they kept their distance. They watched us throw the peanuts (unsalted!), waited for us to turn away, and then carefully picked them up.
Over time, they started to trust us more. They ate while we were looking, they came closer and closer, they started approaching us <strong>before</strong> we got any peanuts out.
Weeks and months passed, we visited the crows more regularly, and they noticed. They now come flying straight towards us long before we reach our spot, they jump around next to us, they follow us around, and they look at us with the cutest pleading eyes we've ever seen.</p>
<p>The first time I ever paw-fed a crow was a life-changing experience, and I'm not exaggerating. There was one crow that came even closer to us than the others. At some point I just tried holding my paw out for it, not really expecting much. Of course it didn't immediately eat out of my paw, but it did get curious. I repeatedly tried many times over the next weeks, and one day it just clicked. This &quot;wild&quot; animal decided that it now trusts me enough to walk right up to me, and eat peanuts out of my paw. We named that crow Bill. Bill regularly eats out of my paws and out of my wife's hands now. It's just a thing he does. He's a bird, living out in this big world, able to fly wherever he wants to, and he decides to fly up to us and eat directly from us. I appreciate this trust so goddamn much, every single time.</p>
<p>Similar relationships of trust have evolved with other birds too. There's a group of seagulls that has us throw food in a high angle and catches it mid-air, with a few of them even flying by close enough to snatch up peanuts that we're holding up towards them.</p>
<p>There are ducks and geese that regularly come quacking at us and eat out of our paws/hands. We have pigeons who knock on our window in the morning or when they hear us arrive at home. Even swans, those majestic big birds that everyone always keeps describing as &quot;dangerous&quot; and &quot;aggressive&quot; come walking up to us calmly, nicely ask for some food, and patiently wait for us to give it to them.</p>
<p>Birds treat you the same way you treat them. Show them respect and trust, and they'll give you the same.</p>
<h2 id="how-birds-have-changed-my-life">How birds have changed my life</h2>
<p>Now, in 2024, I basically don't leave the house without at least a pack of peanuts in my bag. These birds have changed how I go through my daily life, how I view the world around me, how I think and feel.
I pay so much more attention to my surroundings,
I notice the pigeons hushing in-between the crowds in the city,
I notice the alarm calls of the crows when they spot a falcon high up in the sky,
I notice the beautiful chattering of the magpies,
I notice the tiniest little bird singing at the top of their lungs, echoing through the neighborhood.
When I feel down, I spend time with birds. I watch them do their thing, I go &quot;nyawwww&quot; at their cute behaviors, and they make me feel better.</p>
<p>And I appreciate it all so much. These wonderful beings are all around us, and we don't appreciate them nearly enough.</p>
<h2 id="humans-people-society">Humans. People. Society.</h2>
<p>In fact, unfortunately, a significant part of the society we live in, doesn't appreciate them at all.
Pigeons are often considered &quot;dirty&quot;, described as &quot;pests&quot; and treated as annoying nuisances by the very same society that bred them for fun and games, brought them into their cities, kept them as pets, and then discarded them.</p>
<p>Crows are often described as &quot;bad omens&quot; and &quot;signs of death&quot;, or associated with witchcraft and other so-called evils. People hate them for their loud calls, while claiming to enjoy the sounds of other songbirds (which crows also belong to!). Those same songbirds that they most likely can only hear because the nearby crows keep them safe from predators like falcons and hawks.</p>
<p>I wish I could claim that everything is always good and nice on my bird-feeding adventures. Sadly, there are negative experiences too. Those are never the birds' fault though. All the bad stories have to do with interactions with other humans.</p>
<p>Here's an anecdote from a few months ago:
We're standing outside, off from the main path, and feeding a group of pigeons. A child and their parent approach from afar.
The child sees us, turns to their parent, says &quot;Isn't that forbidden???&quot; and <em>immediately</em> proceeds to chase right through the group of pigeons on the ground, scaring them away.</p>
<p>Kids grow up learning that kindness towards &quot;wild&quot; animals is bad, but random acts of violence are okay.</p>
<p>Feeding birds, especially pigeons, <strong>is</strong> in fact illegal in many places. Destroying their habitats is &quot;fine&quot;. Violence against them is &quot;fine&quot;. But decide to do an objectively good thing, an act of pure kindness, helping some animal out, and suddenly you're a criminal.</p>
<p>Another time, a person walked up to us and started rambling:</p>
<p><em>&quot;Hey I live over there in that big building, and the crows that you feed here always shit on our balconies. Can you please stop feeding them here so they stop doing that.&quot;</em></p>
<p>I was baffled at first, replying only with a &quot;no?&quot;. Apparently they didn't like that answer, so they kept going on about how these disgusting animals are creating so much dirt they have to clean up and how that is <strong>our fault</strong> for feeding the crows right here, and how we should just feed them somewhere else so they stop shitting on their balcony. I tried calmly explaining to them that those crows have been here long before us or them, that the ancestors of those same crows have probably been shitting on trees where that house now stands centuries ago, and that crows are highly territorial animals that won't just leave the area they live in, but they didn't seem to care. They got angry at my oh-so-rude language (I basically said &quot;crows just shit wherever the fuck they want&quot;) and walked away at some point.</p>
<p>It's a common occurrence that I'd talk about one kind of bird on social media, and then get comments like &quot;Oh yeah I love crows too, but we should really get rid of pigeons!!!&quot; and the cognitive dissonance of these kinds of disgustingly hateful comments fills me with so much anger. Just because I was talking only about crows in one post, someone deems it appropriate to approach me and tell me about how they want to destroy the lives of another bird species I hold dearly?
Hell, I made a post recently being upset at exactly that behavior, and shortly after someone replied with weird conspiracy-theory-adjacent explanations of why pigeons are supposedly evil.</p>
<p>I don't think I will ever be able to understand the way people think about the animals we share this world with, and frankly, I don't want to understand such a bleak and hateful view of the world.
Most of them were here long before humans, and they will probably still be here long after them. People destroyed their natural habitats, forced them to adapt to urban architecture, unleashed sickness and violence on them, and now they literally can't even shit anymore without being shunned for it. All they want to do is live their life, have a nice time, eat and shit and breed and sleep in peace, and apparently that's already too much.</p>
<p>The parallels here are hard to miss. Many people look at wild birds, and feel the same way as when they look at other people they deem inferior. When I see someone mistreating a wild pigeon, I know they'd probably treat a disabled queer person of color like me the same way if nobody was looking.
The only difference is that mistreating wild animals is even more socially accepted than transmisia, ableism, and racism are. Cowardly fascists can play out their violent fantasies on defenseless birds because they might be too scared to target another human that might be able to fight back, or is more likely to have someone come to their defense.</p>
<p>So, I consider open hatred and mistreatment of wild birds as a gigantic red flag. If I see you talking shit about pigeons, you're just as bad as if you were talking shit about me and my queer siblings, <del>and I will unleash my army of birds on you</del>.</p>
<h2 id="a-caw-to-action">A caw to action</h2>
<p>Go out, feed some birds.</p>
<p>Make some avian dinosaur friends.</p>
<p>Break the laws prohibiting acts of kindness.</p>
<p>Do something nice for yourself and the wildlife around you.</p>
<p>And remember, All Crows Are Beautiful, All Cops Are Bastards, and if you see a Seagull stealing food from a restaurant table, no you didn't.</p>
<p>Thank you for reading through all this. As a &quot;thank you&quot;-treat, here are some photos of my beautiful bird friends :3</p>
<p><img src="/blog-assets/birds/bill.jpg" alt="Bill, a black crow, sitting on top of a railing with water in the background." /></p>
<p><img src="/blog-assets/birds/one-pidgey.jpg" alt="A pigeon sitting on top of my paw, with a peanut in its beak." /></p>
<p><img src="/blog-assets/birds/two-pidgeys.jpg" alt="Two pigeons sitting on top of my paws, held in a small cup shape, and eating." /></p>
<p><img src="/blog-assets/birds/swan.png" alt="A majestic swan in water, glistening in the sun." /></p>
</div>
<div class="pagination">
<div class="pagination__title">
<span class="pagination__title-h">More posts!</span>
<hr />
</div>
<div class="pagination__buttons">
<span class="button previous">
<a href="https://cherrykitten.dev/blog/being-queer-and-otherkin/">
<span class="button__icon"></span>&nbsp;
<span class="button__text">Being Queer and Otherkin</span>
</a>
</span>
</div>
</div>
</div>
</div>
<footer class="footer">
<div class="footer__inner">
<div class="copyright copyright--user">
 
<span>&copy;
2024
- CherryKitten</span><br>
 
<span onclick="alert('Nya!')">🐱</span></div>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<span><a href="/impressum">Impressum</a></span>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<a href="/rss.xml">RSS</a>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<img src="/buttons/antinft.gif" alt="Anti NFT">
<img src="/buttons/acab.gif" alt="ACAB">
<img src="/buttons/transnow2.gif" alt="Trans rights now">
</div>
</footer>
</div>
</body>
</html>

View file

@ -1,174 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>The Fediverse is more than just Mastodon | CherryKitten</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
<meta name="robots" content="noodp"/>
<link rel="stylesheet" href="https://cherrykitten.dev/style.css">
<link rel="stylesheet" href="https://cherrykitten.dev/color.css">
<link rel="alternate" type="application/rss+xml" title="RSS" href="https://cherrykitten.dev/ rss.xml
">
</head>
<body class="">
<div class="container">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="https://cherrykitten.dev" style="text-decoration: none;">
<div class="logo">
CherryKitten
</div>
</a>
</div>
</div>
<nav class="menu">
<ul class="menu__inner">
<li><a href="https://cherrykitten.dev">Home</a></li>
<li><a href="https://cherrykitten.dev/about">About me</a></li>
<li class="active"><a href="https://cherrykitten.dev/blog">Blog</a></li>
<li><a href="https://cherrykitten.dev/cv">CV</a></li>
<li><a href="https://cherrykitten.dev/contact">Contact</a></li>
</ul>
</nav>
</header>
<div class="content">
<div class="post">
<h1 class="post-title"><a href="https://cherrykitten.dev/blog/fediverse-isnt-just-mastodon/">The Fediverse is more than just Mastodon</a></h1>
<div class="post-meta-inline">
<span class="post-date">
2022-11-26
</span>
</div>
<span class="post-tags-inline">
:: tags:&nbsp;
<a class="post-tag" href="https://cherrykitten.dev/tags/fediverse/">#Fediverse</a>&nbsp;
<a class="post-tag" href="https://cherrykitten.dev/tags/mastodon/">#Mastodon</a>&nbsp;
<a class="post-tag" href="https://cherrykitten.dev/tags/misskey/">#Misskey</a>&nbsp;
<a class="post-tag" href="https://cherrykitten.dev/tags/calckey/">#Calckey</a>&nbsp;
<a class="post-tag" href="https://cherrykitten.dev/tags/activitypub/">#ActivityPub</a></span>
<div class="post-content">
<p>With Twitter in a downwards spiral thanks to some rich guy whose name escapes me breaking everything, the Fediverse has been getting the biggest influx of new users in a very long time.
People have been recommending &quot;Mastodon&quot; as a Twitter alternative for a while now, causing #Mastodon to be the top trending Hashtag on many days.</p>
<p>Browsing that hashtag one can find a lot of misconceptions about what Mastodon is, how it works, and what its limitations are. These misconceptions are not just spread by people who dislike Mastodon and try to convince others not to use it, though. They are also perpetuated by people who seem to want to increase the userbase at all cost, regardless of whom it attracts to the Fediverse.</p>
<span id="continue-reading"></span><h3 id="mastodon-the-twitter-alternative">Mastodon, the &quot;Twitter Alternative&quot;</h3>
<p>The biggest misconception already starts with the recommendation itself. &quot;You should switch to Mastodon&quot;, &quot;Mastodon is a great Twitter alternative&quot;, &quot;on Mastodon you can do x and y and z&quot;.
&quot;Mastodon&quot; is just one small piece of a bigger puzzle. When you sign up on a Mastodon instance, you're not joining just Mastodon.
You are using Mastodon to join the so-called &quot;Fediverse&quot;, a network of all kinds of different services that can all communicate with each other using a Protocol called <a href="https://www.w3.org/TR/activitypub/">ActivityPub</a>.</p>
<p>Now, because so many people on sites like Twitter frame Mastodon as its own separate thing, new users who try out a big Mastodon instance and can't deal with its flaws, don't know better than to just write it off as bad and never look back.
Nobody told them that all their friends on Mastodon would also be reachable from a plethora of different platforms that they might be more comfortable with using.
That's the beauty of a federated web, there are always alternatives, always different ways of interacting with the same people over the same protocols and on the same network.</p>
<p>I'm imagining a world where the Top Trending Hashtag on Twitter is #Fediverse, with everyone talking about their favourite features of different platforms and explaining why it is <strong>not</strong> a Twitter alternative.</p>
<h3 id="wait-so-it-s-not-a-twitter-alternative">Wait, so it's not a Twitter Alternative?</h3>
<p>No. It isn't. And anyone who is telling you that it is, is either doing so in bad faith, or has no idea what they're talking about.
Twitter is corporate social media, that's why it's full of ads and corporate accounts. It is designed to get its users addicted to the platform, to maximize engagement, drive up ad impressions and profit. To twitter you are just a collection of numbers, costs and profits. Nothing else.</p>
<p>The Fediverse exists to build communities. It is created by people, for people. Most contributors and server admins don't make any money from it. They work on everything in their free time, fund it out of their own pockets or through donations, and don't expect much in return.</p>
<h3 id="most">'Most'?</h3>
<p>Of course, like with every rule, there are exceptions. The above framing of Mastodon as the one special ActivityPub implementation that everyone constantly talks about, brought in lots of financial support for &quot;Mastodon gGmbH&quot;, the &quot;non-profit organization&quot; founded by Mastodon maintainer Eugen Rochko. As of writing of this post, the organization earns about 30.000€ a month through patreon and has 52 corporate sponsors, including sketchy gambling sites and cryptocurrency firms.
None of this money is of any use for the wider Fediverse community. It goes towards the hosting of the &quot;flagship instances&quot; and the development of the version of the Mastodon code that very often gets changed in ways the wider community disapproves of, or refuses to implement features that would be useful or even neccessary for the process of building safe, inclusive communities.</p>
<p>The thousands of instance admins and developers of other Fediverse software, be it forks of Mastodon or completely different platforms, don't see a single cent of that money.
Instead, they have to deal with the increase in moderation effort due to millions of users suddenly flooding the Fediverse with demands of a second Twitter.</p>
<h3 id="how-moderation-works">How moderation works</h3>
<p>Moderation on the Fediverse is done manually by individuals. This is a feature, not a bug. Automated content moderation leads to many errors and intransparent policy enforcement. It is also very prone to abuse.
Every report is read by an actual person. Most platforms implement reports in a way that the moderators of the reporter's instance can see it, with an optional possibility to forward it to the instance of the reported user.</p>
<p>There are different tools moderators/admins can use to deal with problematic content/users.
Remote users can be individually silenced, meaning they don't show up in the federated timeline, but can still be followed, or they can be fully blocked from interacting with the instance at all.
The same actions can also be applied to whole instances. This is called &quot;defederating&quot;, because the instances are no longer federating with each other. Some people are framing this as a bad thing, claiming it would be wrong for instance admins to decide who their users can follow and interact with. This is where the importance of instance choice comes in.</p>
<h3 id="it-doesn-t-matter-what-instance-you-re-on-just-pick-one">&quot;It doesn't matter what instance you're on, just pick one!!!&quot;</h3>
<p>Ugh. If I had a penny for every time I saw someone make this claim, I'd have to never work a day in my life again.</p>
<p>It's wrong. It's so damn wrong that I honestly can't believe anyone has ever made this claim in good faith.</p>
<p>The instance you choose is probably <strong>the most important factor</strong> to determine how much you will enjoy your time on the Fediverse.
Your instance choice decides what cool features you have access to (because different instances can use different software), it decides who can interact with you, who you can follow, who you see on the different timelines, and how safe you are from seeing things you definitely do not want to see.</p>
<p>Instances all have their own moderation team, rules, and code of conduct. Before you sign up for an instance, you should read their about page and rules, to determine if their views align with yours. That's right, instances have explicit values! If you want to be on an instance that doesn't moderate at all, you're free to choose one. You'll just have to deal with the fact that a lot of people will block you instead.
If you care about community and friendly, respectful interactions, a well-moderated instance that has a code of conduct you agree with is the right place for you. There your reports will actually be read and acted upon.
Please remember that the moderators are just people doing it in their free-time though. They can't react to everything instantly, and they might be overwhelmed sometimes. Be nice to them and don't abuse the report systems, work together to build a nice and friendly community.</p>
<h3 id="but-the-official-instance-is-probably-a-good-place-to-start-right-right">&quot;But the official instance is probably a good place to start, right? ...right?&quot;</h3>
<p>First of all, there is no &quot;official&quot; instance. The Fediverse is an open-source community project. There is no authority to claim anything as official.
There are two big instances run by Eugen Rochko, which often are falsely described as official Mastodon instances, mastodon.social and mastodon.online.
Those instances have 250.000 and 87.000 users respectively, and until recently were &quot;moderated&quot; by a single person, Eugen himself.
I'm putting &quot;moderated&quot; in quotes for a reason. There is barely any moderation going on there. Lots of harassment originates from there. But unfortunately, since so many new users get tricked into signing up for them it's not as easy to just block them the way you would smaller instances that become problematic.
Recently a lot of instances have started to block .social and .online anyways, because they just can not deal with the huge increase in moderation effort. There have been PSAs going around for people to please switch to smaller instances if they want to continue to interact with their friends, but it's sadly impossible to reach everyone.</p>
<h3 id="some-more-resources">Some more resources</h3>
<p>Now you're probably asking yourself &quot;okay, but <strong>how</strong> do I find a good instance? It's all so overwhelming and complicated!!&quot; and like with most problems, the community has already created the resources you need.</p>
<ul>
<li><a href="https://fedi.tips/">Fedi.tips</a> has a lot of explanations and information for newer users.</li>
<li><a href="https://fediverse.party/">Fediverse.party</a> shows off all of the different software that exists to interact with the Fediverse and makes it easy to find instances running on those different platforms. I would really strongly suggest trying out something different from Mastodon. It'll be worth it.</li>
<li><a href="https://fediverse.info/explore/people">Fediverse.info</a> has a tool to dicsover users to follow. It is opt-in, meaning everyone on the list consented to be findable through it.</li>
<li><a href="https://kind.social/@f00fc7c8/109407989829565640">f00fc7c8@kind.social</a> wrote a thread about the history of federated social media and the Fediverse.</li>
</ul>
<h3 id="welcome-to-the-fediverse">Welcome to the Fediverse!</h3>
<p>There are still a lot of things I haven't directly adressed in this post. It would be impossible for one on its own to think of everything.
So once you've signed up on a small cozy Fediverse instance, look through the Hashtag #FediTips, write and #Introduction post, ask whatever questions you might still have and start making lots of new friends.
Welcome to the Fediverse 💜.</p>
</div>
</div>
</div>
<footer class="footer">
<div class="footer__inner">
<div class="copyright copyright--user">
 
<span>&copy;
2024
- CherryKitten</span><br>
 
<span onclick="alert('Nya!')">🐱</span></div>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<span><a href="/impressum">Impressum</a></span>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<a href="/rss.xml">RSS</a>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<img src="/buttons/antinft.gif" alt="Anti NFT">
<img src="/buttons/acab.gif" alt="ACAB">
<img src="/buttons/transnow2.gif" alt="Trans rights now">
</div>
</footer>
</div>
</body>
</html>

View file

@ -1,275 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>CherryKitten</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
<meta name="robots" content="noodp"/>
<link rel="stylesheet" href="https://cherrykitten.dev/style.css">
<link rel="stylesheet" href="https://cherrykitten.dev/color.css">
<link rel="alternate" type="application/rss+xml" title="RSS" href="https://cherrykitten.dev/ rss.xml
">
</head>
<body class="">
<div class="container">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="https://cherrykitten.dev" style="text-decoration: none;">
<div class="logo">
CherryKitten
</div>
</a>
</div>
</div>
<nav class="menu">
<ul class="menu__inner">
<li><a href="https://cherrykitten.dev">Home</a></li>
<li><a href="https://cherrykitten.dev/about">About me</a></li>
<li class="active"><a href="https://cherrykitten.dev/blog">Blog</a></li>
<li><a href="https://cherrykitten.dev/cv">CV</a></li>
<li><a href="https://cherrykitten.dev/contact">Contact</a></li>
</ul>
</nav>
</header>
<div class="content">
<div class="posts">
<div class="post on-list">
<h1 class="post-title"><a href="https://cherrykitten.dev/blog/birds/">Birds.</a></h1>
<div class="post-meta-inline">
<span class="post-date">
2024-03-26
</span>
</div>
<span class="post-tags-inline">
:: tags:&nbsp;
<a class="post-tag" href="https://cherrykitten.dev/tags/animals/">#animals</a>&nbsp;
<a class="post-tag" href="https://cherrykitten.dev/tags/birds/">#birds</a>&nbsp;
<a class="post-tag" href="https://cherrykitten.dev/tags/nature/">#nature</a>&nbsp;
<a class="post-tag" href="https://cherrykitten.dev/tags/society/">#society</a>&nbsp;
<a class="post-tag" href="https://cherrykitten.dev/tags/politics/">#politics</a></span>
<div class="post-content">
<p>Birds. They're all around us. They are wonderful beings of pure bliss. I love them all.</p>
<p>I've wanted to write about &quot;birds&quot; as a general topic for a long time now. There's a lot to say, I have so many bits and pieces of drafts, ideas, thoughts. On birds themselves, on my personal relationship with them, on their cultural significance and how humanity treats them. This is my attempt at actually putting all of that into a semi-coherent text for you to read, or just to have actually written it all out. I don't know if anyone will get that much out of reading this, but I care about this topic deeply and I need to get these words out.</p>
</div>
<div>
<!-- &#xFE0E; -- force text style - some devices render this as emoji -->
<a class="read-more button" href="https://cherrykitten.dev/blog/birds/">
<span class="button__text">Read more</span>&nbsp;
<span class="button__icon">&#8617;&#xFE0E;</span>
</a>
</div>
</div>
<div class="post on-list">
<h1 class="post-title"><a href="https://cherrykitten.dev/blog/being-queer-and-otherkin/">Being Queer and Otherkin</a></h1>
<div class="post-meta-inline">
<span class="post-date">
2023-06-09
</span>
</div>
<span class="post-tags-inline">
:: tags:&nbsp;
<a class="post-tag" href="https://cherrykitten.dev/tags/personal/">#personal</a>&nbsp;
<a class="post-tag" href="https://cherrykitten.dev/tags/queerness/">#queerness</a>&nbsp;
<a class="post-tag" href="https://cherrykitten.dev/tags/otherkin/">#otherkin</a>&nbsp;
<a class="post-tag" href="https://cherrykitten.dev/tags/neurodivergency/">#neurodivergency</a>&nbsp;
<a class="post-tag" href="https://cherrykitten.dev/tags/autism/">#autism</a>&nbsp;
<a class="post-tag" href="https://cherrykitten.dev/tags/cat/">#cat</a>&nbsp;
<a class="post-tag" href="https://cherrykitten.dev/tags/nya/">#nya</a>&nbsp;
<a class="post-tag" href="https://cherrykitten.dev/tags/meow/">#meow</a>&nbsp;
<a class="post-tag" href="https://cherrykitten.dev/tags/gender/">#gender</a></span>
<div class="post-content">
<p>This is a bit more of a personal one, some background on me personally and on my identity.</p>
<p>As you might have noticed, I am a catgirl. But what does that actually mean?
For some, it might just be a weird cute thing they know from anime, others might think &quot;a girl who likes cats&quot;.
For me, it means I am a cat and a girl (<a href="https://nonbinary.wiki/wiki/Demigender#Demigirl">kinda</a>). Both are equally important parts of my identity.</p>
<p>I am trans, I am nonbinary, and I am otherkin. I am also autistic. All of these are properties of me as a whole. They
add up to create this entity that's writing this post right now. Remove any single one of these properties, and you end
up with a completely different being.</p>
</div>
<div>
<!-- &#xFE0E; -- force text style - some devices render this as emoji -->
<a class="read-more button" href="https://cherrykitten.dev/blog/being-queer-and-otherkin/">
<span class="button__text">Read more</span>&nbsp;
<span class="button__icon">&#8617;&#xFE0E;</span>
</a>
</div>
</div>
<div class="post on-list">
<h1 class="post-title"><a href="https://cherrykitten.dev/blog/rust-options-results/">Learning Rust: A kitten&#x27;s guide to Options and Results</a></h1>
<div class="post-meta-inline">
<span class="post-date">
2023-02-25
</span>
</div>
<span class="post-tags-inline">
:: tags:&nbsp;
<a class="post-tag" href="https://cherrykitten.dev/tags/rust/">#Rust</a>&nbsp;
<a class="post-tag" href="https://cherrykitten.dev/tags/programming/">#programming</a>&nbsp;
<a class="post-tag" href="https://cherrykitten.dev/tags/code/">#code</a>&nbsp;
<a class="post-tag" href="https://cherrykitten.dev/tags/learning/">#learning</a></span>
<div class="post-content">
<h3 id="to-unwrap-or-not-to-unwrap-that-is-the-question">To unwrap() or not to unwrap(), that is the question:</h3>
<p>So I've finally given in and started to learn Rust last month. It's a really cool programming language,
with some interesting differences to what I've used before. (JavaScript and Python, mostly)</p>
<p>There are some really pawesome guides out there, <a href="https://doc.rust-lang.org/book/">&quot;The Rust programming language&quot;</a> is
definitely a <strong>must-read</strong> in my opinion, and <a href="https://github.com/rust-lang/rustlings">Rustlings</a> is nyamazing for
anyone who likes to learn by actively working through interactive problems.</p>
<p>After reading through a lot of those big thorough guides by experienced Rust developers, I've started working on
my first actual Project. I approached the development of this project by just trying to get small parts of it
working in any way I can manage, and then build upon this. In that process, I learned a lot of small subtilties that
guides like the ones named above just can't really cover. This post is for sharing those things, those cool little
tips to make your first Rust project just a little cleaner and more Rust-y. Originally I wanted to make this about a lot
of different topics, but then I've realized that my notes already contain so many things about just one part of Rust:
The Enums <code>Option</code> and <code>Result</code>. So this post will be about those, and hopefully will mark the start of a series on this blog.</p>
<p>While reading through this, you might think that the things I'm mentioning are obvious. That's okay, and that's the point.
Nothing is ever completely obvious to everyone, and this is for those like me, who often don't immediately recognize
the &quot;obvious&quot;. And, to be honest, I am writing this just as much for myself, writing all of that stuff down to aid me in my
own ongoing learning process.</p>
<p>So, let's start!</p>
</div>
<div>
<!-- &#xFE0E; -- force text style - some devices render this as emoji -->
<a class="read-more button" href="https://cherrykitten.dev/blog/rust-options-results/">
<span class="button__text">Read more</span>&nbsp;
<span class="button__icon">&#8617;&#xFE0E;</span>
</a>
</div>
</div>
<div class="post on-list">
<h1 class="post-title"><a href="https://cherrykitten.dev/blog/fediverse-isnt-just-mastodon/">The Fediverse is more than just Mastodon</a></h1>
<div class="post-meta-inline">
<span class="post-date">
2022-11-26
</span>
</div>
<span class="post-tags-inline">
:: tags:&nbsp;
<a class="post-tag" href="https://cherrykitten.dev/tags/fediverse/">#Fediverse</a>&nbsp;
<a class="post-tag" href="https://cherrykitten.dev/tags/mastodon/">#Mastodon</a>&nbsp;
<a class="post-tag" href="https://cherrykitten.dev/tags/misskey/">#Misskey</a>&nbsp;
<a class="post-tag" href="https://cherrykitten.dev/tags/calckey/">#Calckey</a>&nbsp;
<a class="post-tag" href="https://cherrykitten.dev/tags/activitypub/">#ActivityPub</a></span>
<div class="post-content">
<p>With Twitter in a downwards spiral thanks to some rich guy whose name escapes me breaking everything, the Fediverse has been getting the biggest influx of new users in a very long time.
People have been recommending &quot;Mastodon&quot; as a Twitter alternative for a while now, causing #Mastodon to be the top trending Hashtag on many days.</p>
<p>Browsing that hashtag one can find a lot of misconceptions about what Mastodon is, how it works, and what its limitations are. These misconceptions are not just spread by people who dislike Mastodon and try to convince others not to use it, though. They are also perpetuated by people who seem to want to increase the userbase at all cost, regardless of whom it attracts to the Fediverse.</p>
</div>
<div>
<!-- &#xFE0E; -- force text style - some devices render this as emoji -->
<a class="read-more button" href="https://cherrykitten.dev/blog/fediverse-isnt-just-mastodon/">
<span class="button__text">Read more</span>&nbsp;
<span class="button__icon">&#8617;&#xFE0E;</span>
</a>
</div>
</div>
<div class="pagination">
<div class="pagination__buttons"></div>
</div>
</div>
</div>
<footer class="footer">
<div class="footer__inner">
<div class="copyright copyright--user">
 
<span>&copy;
2024
- CherryKitten</span><br>
 
<span onclick="alert('Nya!')">🐱</span></div>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<span><a href="/impressum">Impressum</a></span>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<a href="/rss.xml">RSS</a>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<img src="/buttons/antinft.gif" alt="Anti NFT">
<img src="/buttons/acab.gif" alt="ACAB">
<img src="/buttons/transnow2.gif" alt="Trans rights now">
</div>
</footer>
</div>
</body>
</html>

View file

@ -1,6 +0,0 @@
<!doctype html>
<meta charset="utf-8">
<link rel="canonical" href="https://cherrykitten.dev/blog/">
<meta http-equiv="refresh" content="0; url=https://cherrykitten.dev/blog/">
<title>Redirect</title>
<p><a href="https://cherrykitten.dev/blog/">Click here</a> to be redirected.</p>

View file

@ -1,348 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Learning Rust: A kitten&#x27;s guide to Options and Results | CherryKitten</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
<meta name="robots" content="noodp"/>
<link rel="stylesheet" href="https://cherrykitten.dev/style.css">
<link rel="stylesheet" href="https://cherrykitten.dev/color.css">
<link rel="alternate" type="application/rss+xml" title="RSS" href="https://cherrykitten.dev/ rss.xml
">
</head>
<body class="">
<div class="container">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="https://cherrykitten.dev" style="text-decoration: none;">
<div class="logo">
CherryKitten
</div>
</a>
</div>
</div>
<nav class="menu">
<ul class="menu__inner">
<li><a href="https://cherrykitten.dev">Home</a></li>
<li><a href="https://cherrykitten.dev/about">About me</a></li>
<li class="active"><a href="https://cherrykitten.dev/blog">Blog</a></li>
<li><a href="https://cherrykitten.dev/cv">CV</a></li>
<li><a href="https://cherrykitten.dev/contact">Contact</a></li>
</ul>
</nav>
</header>
<div class="content">
<div class="post">
<h1 class="post-title"><a href="https://cherrykitten.dev/blog/rust-options-results/">Learning Rust: A kitten&#x27;s guide to Options and Results</a></h1>
<div class="post-meta-inline">
<span class="post-date">
2023-02-25
</span>
</div>
<span class="post-tags-inline">
:: tags:&nbsp;
<a class="post-tag" href="https://cherrykitten.dev/tags/rust/">#Rust</a>&nbsp;
<a class="post-tag" href="https://cherrykitten.dev/tags/programming/">#programming</a>&nbsp;
<a class="post-tag" href="https://cherrykitten.dev/tags/code/">#code</a>&nbsp;
<a class="post-tag" href="https://cherrykitten.dev/tags/learning/">#learning</a></span>
<div class="post-content">
<h3 id="to-unwrap-or-not-to-unwrap-that-is-the-question">To unwrap() or not to unwrap(), that is the question:</h3>
<p>So I've finally given in and started to learn Rust last month. It's a really cool programming language,
with some interesting differences to what I've used before. (JavaScript and Python, mostly)</p>
<p>There are some really pawesome guides out there, <a href="https://doc.rust-lang.org/book/">&quot;The Rust programming language&quot;</a> is
definitely a <strong>must-read</strong> in my opinion, and <a href="https://github.com/rust-lang/rustlings">Rustlings</a> is nyamazing for
anyone who likes to learn by actively working through interactive problems.</p>
<p>After reading through a lot of those big thorough guides by experienced Rust developers, I've started working on
my first actual Project. I approached the development of this project by just trying to get small parts of it
working in any way I can manage, and then build upon this. In that process, I learned a lot of small subtilties that
guides like the ones named above just can't really cover. This post is for sharing those things, those cool little
tips to make your first Rust project just a little cleaner and more Rust-y. Originally I wanted to make this about a lot
of different topics, but then I've realized that my notes already contain so many things about just one part of Rust:
The Enums <code>Option</code> and <code>Result</code>. So this post will be about those, and hopefully will mark the start of a series on this blog.</p>
<p>While reading through this, you might think that the things I'm mentioning are obvious. That's okay, and that's the point.
Nothing is ever completely obvious to everyone, and this is for those like me, who often don't immediately recognize
the &quot;obvious&quot;. And, to be honest, I am writing this just as much for myself, writing all of that stuff down to aid me in my
own ongoing learning process.</p>
<p>So, let's start!</p>
<span id="continue-reading"></span>
<p>Firstly, a very quick introduction. <code>Option</code> and <code>Result</code> are part of the Rust standard library. Quoting the official documentation
is probably the easiest way to summarize their purpose:</p>
<blockquote>
<p>Type <code>Option</code> represents an optional value: every Option is either <code>Some</code> and contains a value, or <code>None</code>, and does not. <code>Option</code> types are very common in Rust code, as they have a number of uses:</p>
<ul>
<li>Initial values</li>
<li>Return values for functions that are not defined over their entire input range (partial functions)</li>
<li>Return value for otherwise reporting simple errors, where <code>None</code> is returned on error</li>
<li>Optional struct fields</li>
<li>Struct fields that can be loaned or “taken”</li>
<li>Optional function arguments</li>
<li>Nullable pointers</li>
<li>Swapping things out of difficult situations</li>
</ul>
</blockquote>
<p>and</p>
<blockquote>
<p><code>Result&lt;T, E&gt;</code> is the type used for returning and propagating errors. It is an enum with the variants, <code>Ok(T)</code>, representing success and containing a value, and <code>Err(E)</code>, representing error and containing an error value.</p>
</blockquote>
<p>At first, it seems so easy to just add a quick <code>.unwrap()</code> after every <code>Option</code> or <code>Result</code>, but this comes with
the disadvantage of your code <a href="https://doc.rust-lang.org/std/macro.panic.html">panicking</a> if it fails to unwrap.
Sometimes, this can be useful during development, to discover potential error cases you might not have thought about, but
is usually not what you want to happen.</p>
<p>So, what can you do instead?</p>
<p>First of all, don't use <code>unwrap()</code> unless you are completely sure that the value will never panic. Sometimes that is the
case, because an earlier part of your code already made sure that it is <code>Ok</code> or <code>Some</code>.</p>
<p>In some cases, you actually want the program to panic. But even then, there is a slightly better way. You can use <code>expect(&quot;foo&quot;)</code>
to add a message to the panic, so the user actually knows what went wrong. That message should be worded in a specific way,
basically telling the user what you <em>expected</em> to happen.</p>
<pre data-lang="rust" style="background-color:#1f1d29;color:#ffffff;" class="language-rust "><code class="language-rust" data-lang="rust"><span style="font-style:italic;color:#9bced7;">fn </span><span style="color:#34738e;">main</span><span>() {
</span><span> </span><span style="font-style:italic;color:#9bced7;">let</span><span> x </span><span style="color:#ea6f91;">= </span><span style="font-style:italic;color:#66d9ef;">Some</span><span>(</span><span style="color:#f1ca93;">&quot;Hello, World&quot;</span><span>);
</span><span> </span><span style="color:#403c58;">// There is no actual &quot;None&quot; type/value in Rust,
</span><span> </span><span style="color:#403c58;">// this &quot;None&quot; is more specifically Option::None
</span><span> </span><span style="font-style:italic;color:#9bced7;">let</span><span> y: </span><span style="font-style:italic;color:#66d9ef;">Option</span><span>&lt;</span><span style="font-style:italic;color:#66d9ef;">String</span><span>&gt; </span><span style="color:#ea6f91;">= </span><span style="font-style:italic;color:#66d9ef;">None</span><span>;
</span><span>
</span><span> </span><span style="font-style:italic;color:#9bced7;">let</span><span> z </span><span style="color:#ea6f91;">=</span><span> x.</span><span style="color:#66d9ef;">unwrap</span><span>(); </span><span style="color:#403c58;">// We explicitly set this to Some, so we can safely unwrap it
</span><span> </span><span style="font-style:italic;color:#9bced7;">let</span><span> rip </span><span style="color:#ea6f91;">=</span><span> y.</span><span style="color:#66d9ef;">expect</span><span>(</span><span style="color:#f1ca93;">&quot;expected y to not be None&quot;</span><span>);
</span><span>
</span><span> println!(</span><span style="color:#f1ca93;">&quot;</span><span style="color:#c3a5e6;">{}</span><span style="color:#f1ca93;">, </span><span style="color:#c3a5e6;">{}</span><span style="color:#f1ca93;"> will never print because it panics above&quot;</span><span>, z, rip);
</span><span>}
</span></code></pre>
<p>There are also the non-panicking siblings of <code>unwrap()</code>, like <code>unwrap_or()</code>, <code>unwrap_or_else()</code> and <code>unwrap_or_default()</code>.</p>
<pre data-lang="rust" style="background-color:#1f1d29;color:#ffffff;" class="language-rust "><code class="language-rust" data-lang="rust"><span style="font-style:italic;color:#9bced7;">fn </span><span style="color:#34738e;">main</span><span>() {
</span><span> </span><span style="font-style:italic;color:#9bced7;">let</span><span> a: </span><span style="font-style:italic;color:#66d9ef;">Option</span><span>&lt;</span><span style="font-style:italic;color:#66d9ef;">String</span><span>&gt; </span><span style="color:#ea6f91;">= </span><span style="font-style:italic;color:#66d9ef;">None</span><span>;
</span><span> </span><span style="font-style:italic;color:#9bced7;">let</span><span> b: </span><span style="font-style:italic;color:#66d9ef;">Option</span><span>&lt;</span><span style="font-style:italic;color:#9bced7;">i32</span><span>&gt; </span><span style="color:#ea6f91;">= </span><span style="font-style:italic;color:#66d9ef;">None</span><span>;
</span><span> </span><span style="font-style:italic;color:#9bced7;">let</span><span> c: </span><span style="font-style:italic;color:#66d9ef;">Option</span><span>&lt;</span><span style="font-style:italic;color:#9bced7;">bool</span><span>&gt; </span><span style="color:#ea6f91;">= </span><span style="font-style:italic;color:#66d9ef;">None</span><span>;
</span><span>
</span><span> </span><span style="color:#403c58;">// unwrap_or() lets you supply a specific value to use if the Option is None
</span><span> </span><span style="font-style:italic;color:#9bced7;">let</span><span> x </span><span style="color:#ea6f91;">=</span><span> a.</span><span style="color:#66d9ef;">unwrap_or</span><span>(</span><span style="color:#f1ca93;">&quot;Hello there&quot;</span><span>.</span><span style="color:#66d9ef;">to_owned</span><span>());
</span><span>
</span><span> </span><span style="color:#403c58;">// unwrap_or_default() uses the types default value if the Option is None
</span><span> </span><span style="font-style:italic;color:#9bced7;">let</span><span> y </span><span style="color:#ea6f91;">=</span><span> b.</span><span style="color:#66d9ef;">unwrap_or_default</span><span>();
</span><span>
</span><span> </span><span style="color:#403c58;">// unwrap_or_else() lets you specify a closure to run if the Option is None
</span><span> </span><span style="font-style:italic;color:#9bced7;">let</span><span> z </span><span style="color:#ea6f91;">=</span><span> c.</span><span style="color:#66d9ef;">unwrap_or_else</span><span>(|| </span><span style="color:#ea6f91;">if </span><span style="color:#c3a5e6;">1 </span><span style="color:#ea6f91;">+ </span><span style="color:#c3a5e6;">1 </span><span style="color:#ea6f91;">== </span><span style="color:#c3a5e6;">2 </span><span>{ </span><span style="color:#c3a5e6;">true</span><span>} </span><span style="color:#ea6f91;">else </span><span>{ </span><span style="color:#c3a5e6;">false </span><span>});
</span><span>
</span><span> assert_eq!(x, </span><span style="color:#f1ca93;">&quot;Hello there&quot;</span><span>.</span><span style="color:#66d9ef;">to_owned</span><span>());
</span><span> assert_eq!(y, </span><span style="color:#c3a5e6;">0</span><span>);
</span><span> assert_eq!(z, </span><span style="color:#c3a5e6;">true</span><span>);
</span><span>}
</span></code></pre>
<p>And then there is this really cool question-mark operator, which comes in very handy once you go multiple functions deep
and keep having to work with more and more <code>Result</code>s and <code>Option</code>s. The way it works is that, if you have a <code>None</code> or an <code>Error</code>,
it passes up the handling of this one level higher, by returning out of the function early with a <code>None</code> or <code>Error</code> value itself.</p>
<p>Of course, since return types of functions have to be known at compile time, the question-mark operator only works inside
functions that already return <code>Result</code> or <code>Option</code>.</p>
<pre data-lang="rust" style="background-color:#1f1d29;color:#ffffff;" class="language-rust "><code class="language-rust" data-lang="rust"><span style="font-style:italic;color:#9bced7;">fn </span><span style="color:#34738e;">main</span><span>() {
</span><span> </span><span style="font-style:italic;color:#9bced7;">let</span><span> x </span><span style="color:#ea6f91;">= </span><span style="color:#c3a5e6;">5</span><span>;
</span><span> </span><span style="font-style:italic;color:#9bced7;">let</span><span> y </span><span style="color:#ea6f91;">= </span><span style="color:#c3a5e6;">10</span><span>;
</span><span> </span><span style="font-style:italic;color:#9bced7;">let</span><span> z </span><span style="color:#ea6f91;">= </span><span style="color:#c3a5e6;">20</span><span>;
</span><span>
</span><span> </span><span style="color:#ea6f91;">match </span><span style="color:#66d9ef;">do_something</span><span>(x, y, z) {
</span><span> </span><span style="font-style:italic;color:#66d9ef;">Some</span><span>(result) </span><span style="color:#ea6f91;">=&gt; </span><span>println!(</span><span style="color:#f1ca93;">&quot;Happy noises, </span><span style="color:#c3a5e6;">{}</span><span style="color:#f1ca93;">&quot;</span><span>, result),
</span><span> </span><span style="font-style:italic;color:#66d9ef;">None </span><span style="color:#ea6f91;">=&gt; </span><span>println!(</span><span style="color:#f1ca93;">&quot;Sad noises&quot;</span><span>),
</span><span> }
</span><span>}
</span><span>
</span><span style="font-style:italic;color:#9bced7;">fn </span><span style="color:#34738e;">do_something</span><span>(</span><span style="font-style:italic;color:#f1ca93;">x</span><span>: </span><span style="font-style:italic;color:#9bced7;">i32</span><span>, </span><span style="font-style:italic;color:#f1ca93;">y</span><span>: </span><span style="font-style:italic;color:#9bced7;">i32</span><span>, </span><span style="font-style:italic;color:#f1ca93;">z</span><span>: </span><span style="font-style:italic;color:#9bced7;">i32</span><span>) -&gt; </span><span style="font-style:italic;color:#66d9ef;">Option</span><span>&lt;</span><span style="font-style:italic;color:#9bced7;">i32</span><span>&gt; {
</span><span> </span><span style="font-style:italic;color:#9bced7;">let</span><span> first_result </span><span style="color:#ea6f91;">= </span><span style="color:#66d9ef;">do_something_more</span><span>(x, y)</span><span style="color:#ea6f91;">?</span><span>;
</span><span> </span><span style="font-style:italic;color:#9bced7;">let</span><span> second_result </span><span style="color:#ea6f91;">= </span><span style="color:#66d9ef;">do_something_more</span><span>(first_result, z)</span><span style="color:#ea6f91;">?</span><span>;
</span><span>
</span><span> </span><span style="font-style:italic;color:#66d9ef;">Some</span><span>(second_result)
</span><span>}
</span><span>
</span><span style="font-style:italic;color:#9bced7;">fn </span><span style="color:#34738e;">do_something_more</span><span>(</span><span style="font-style:italic;color:#f1ca93;">x</span><span>: </span><span style="font-style:italic;color:#9bced7;">i32</span><span>, </span><span style="font-style:italic;color:#f1ca93;">y</span><span>: </span><span style="font-style:italic;color:#9bced7;">i32</span><span>) -&gt; </span><span style="font-style:italic;color:#66d9ef;">Option</span><span>&lt;</span><span style="font-style:italic;color:#9bced7;">i32</span><span>&gt; {
</span><span> </span><span style="font-style:italic;color:#66d9ef;">Some</span><span>(x </span><span style="color:#ea6f91;">+</span><span> y)
</span><span>}
</span></code></pre>
<p>The advantage of this is that you only have to handle your <code>None</code> case exactly once. You don't have to add pattern matching, or
conditionals, or <code>unwrap()</code>s all over the place, just a cute little question mark that delegates the handling to some logic
higher up.</p>
<p><em>&quot;But sammy!&quot;</em> you say, <em>&quot;the compiler keeps shouting at me when I use the question mark on Options when my function
returns Result `&lt;-._.-&gt;´&quot;</em></p>
<p>Don't worry my frien! Even this has been considered!</p>
<p>First of all, why does the compiler get upset? It's because the question-mark operator returns the same type that it's used on,
and <code>Result</code> and <code>Option</code> are different types. Because of that, I thought I'd have to manually handle <code>None</code> cases in all
of my <code>Result</code>-returning functions. Until one day, I was reading through some documentation (I know, I know, I'm a nerd who reads
through documentation for fun and not just to find specific things) and discovered <a href="https://doc.rust-lang.org/std/option/enum.Option.html#method.ok_or">Option::Ok_or()</a>.</p>
<blockquote>
<p>Transforms the <code>Option&lt;T&gt;</code> into a <code>Result&lt;T, E&gt;</code>, mapping <code>Some(v)</code> to <code>Ok(v)</code> and <code>None</code> to <code>Err(err)</code>.</p>
</blockquote>
<p>This was a life-changer to me, and it was just hiding right there in plain sight. Now I can easily turn a <code>None</code> where there shouldn't
be a <code>None</code> into an <code>Error</code> to pass up with my pawesome question-mark operator!</p>
<pre data-lang="rust" style="background-color:#1f1d29;color:#ffffff;" class="language-rust "><code class="language-rust" data-lang="rust"><span style="font-style:italic;color:#9bced7;">fn </span><span style="color:#34738e;">main</span><span>() -&gt; </span><span style="font-style:italic;color:#66d9ef;">Result</span><span>&lt;(), </span><span style="font-style:italic;color:#66d9ef;">String</span><span>&gt; {
</span><span> </span><span style="font-style:italic;color:#9bced7;">let</span><span> x </span><span style="color:#ea6f91;">= </span><span style="color:#66d9ef;">function_that_returns_option</span><span>().</span><span style="color:#66d9ef;">ok_or</span><span>(</span><span style="color:#f1ca93;">&quot;error message&quot;</span><span>.</span><span style="color:#66d9ef;">to_owned</span><span>())</span><span style="color:#ea6f91;">?</span><span>;
</span><span> </span><span style="color:#403c58;">// Instead of:
</span><span> </span><span style="color:#403c58;">// let x = function_that_returns_option().unwrap();
</span><span> </span><span style="color:#403c58;">// or any of the other ways to handle None
</span><span>
</span><span> assert_eq!(x, ());
</span><span> </span><span style="font-style:italic;color:#66d9ef;">Ok</span><span>(x)
</span><span>}
</span><span>
</span><span style="font-style:italic;color:#9bced7;">fn </span><span style="color:#34738e;">function_that_returns_option</span><span>() -&gt; </span><span style="font-style:italic;color:#66d9ef;">Option</span><span>&lt;()&gt; {
</span><span> </span><span style="color:#ea6f91;">return </span><span style="font-style:italic;color:#66d9ef;">Some</span><span>(());
</span><span>}
</span></code></pre>
<p>The last thing I want to mention is both an example specific to <code>Option</code>s, and a more general tip about how I discovered this one.
There is this wonderful friend for all Rust developers, called Clippy. No, not the Paperclip from Microsoft Word, but
<a href="https://doc.rust-lang.org/stable/clippy/">A collection of lints to catch common mistakes and improve your Rust code</a>.
Clippy is automatically installed when you install Rust via <code>rustup</code>, and it runs a whole lot of checks against your code
to tell you what you can improve.</p>
<p>In my case, I had the following piece of code:</p>
<pre data-lang="rust" style="background-color:#1f1d29;color:#ffffff;" class="language-rust "><code class="language-rust" data-lang="rust"><span style="font-style:italic;color:#9bced7;">let</span><span> insert </span><span style="color:#ea6f91;">= </span><span>(
</span><span> tracks::title.</span><span style="color:#66d9ef;">eq</span><span>(</span><span style="color:#ea6f91;">match</span><span> tag.</span><span style="color:#66d9ef;">title</span><span>() {
</span><span> </span><span style="font-style:italic;color:#66d9ef;">Some</span><span>(title) </span><span style="color:#ea6f91;">=&gt; </span><span style="font-style:italic;color:#66d9ef;">Some</span><span>(title.</span><span style="color:#66d9ef;">to_string</span><span>()),
</span><span> </span><span style="font-style:italic;color:#66d9ef;">None </span><span style="color:#ea6f91;">=&gt; </span><span style="font-style:italic;color:#66d9ef;">None</span><span>,
</span><span> }),
</span><span> tracks::track_number.</span><span style="color:#66d9ef;">eq</span><span>(</span><span style="color:#ea6f91;">match</span><span> tag.</span><span style="color:#66d9ef;">track</span><span>() {
</span><span> </span><span style="font-style:italic;color:#66d9ef;">Some</span><span>(track) </span><span style="color:#ea6f91;">=&gt; </span><span style="font-style:italic;color:#66d9ef;">Some</span><span>(track </span><span style="color:#ea6f91;">as </span><span style="font-style:italic;color:#9bced7;">i32</span><span>),
</span><span> </span><span style="font-style:italic;color:#66d9ef;">None </span><span style="color:#ea6f91;">=&gt; </span><span style="font-style:italic;color:#66d9ef;">None</span><span>,
</span><span> }),
</span><span> tracks::disc_number.</span><span style="color:#66d9ef;">eq</span><span>(</span><span style="color:#ea6f91;">match</span><span> tag.</span><span style="color:#66d9ef;">disk</span><span>() {
</span><span> </span><span style="font-style:italic;color:#66d9ef;">Some</span><span>(track) </span><span style="color:#ea6f91;">=&gt; </span><span style="font-style:italic;color:#66d9ef;">Some</span><span>(track </span><span style="color:#ea6f91;">as </span><span style="font-style:italic;color:#9bced7;">i32</span><span>),
</span><span> </span><span style="font-style:italic;color:#66d9ef;">None </span><span style="color:#ea6f91;">=&gt; </span><span style="font-style:italic;color:#66d9ef;">None</span><span>,
</span><span> }),
</span><span> tracks::path.</span><span style="color:#66d9ef;">eq</span><span>(</span><span style="color:#ea6f91;">match</span><span> path.</span><span style="color:#66d9ef;">to_str</span><span>() {
</span><span> </span><span style="font-style:italic;color:#66d9ef;">None </span><span style="color:#ea6f91;">=&gt; return </span><span style="font-style:italic;color:#66d9ef;">Err</span><span>(Error::msg(</span><span style="color:#f1ca93;">&quot;Could not get path&quot;</span><span>)),
</span><span> </span><span style="font-style:italic;color:#66d9ef;">Some</span><span>(path) </span><span style="color:#ea6f91;">=&gt;</span><span> path.</span><span style="color:#66d9ef;">to_string</span><span>(),
</span><span> }),
</span><span> tracks::year.</span><span style="color:#66d9ef;">eq</span><span>(</span><span style="color:#ea6f91;">match</span><span> tag.</span><span style="color:#66d9ef;">year</span><span>() {
</span><span> </span><span style="font-style:italic;color:#66d9ef;">Some</span><span>(year) </span><span style="color:#ea6f91;">=&gt; </span><span style="font-style:italic;color:#66d9ef;">Some</span><span>(year </span><span style="color:#ea6f91;">as </span><span style="font-style:italic;color:#9bced7;">i32</span><span>),
</span><span> </span><span style="font-style:italic;color:#66d9ef;">None </span><span style="color:#ea6f91;">=&gt; </span><span style="font-style:italic;color:#66d9ef;">None</span><span>,
</span><span> }),
</span><span> tracks::album_id.</span><span style="color:#66d9ef;">eq</span><span>(</span><span style="color:#ea6f91;">match</span><span> album {
</span><span> </span><span style="font-style:italic;color:#66d9ef;">Some</span><span>(album) </span><span style="color:#ea6f91;">=&gt; </span><span style="font-style:italic;color:#66d9ef;">Some</span><span>(album.id),
</span><span> </span><span style="font-style:italic;color:#66d9ef;">None </span><span style="color:#ea6f91;">=&gt; </span><span style="font-style:italic;color:#66d9ef;">None</span><span>,
</span><span> }),
</span><span> );
</span></code></pre>
<p>This code builds an insert statement for the database holding my music metadata, getting the values from the tags of a file.
The tag fields are all <code>Option</code>s, since the tags might be empty. The databse entries are also all <code>Option</code>s, (at least on the Rust side,
on the database they are just values marked as possibly being Null). So my intuitive idea to build this was to just go through all the entries,
match the tag, put in <code>Some(value)</code> if there is a value, and <code>None</code>if there is none.</p>
<p>It works, it's not wrong, but there is a cleaner and more readable way to do this. And clippy told me right away, I ran it
from my IDE, and it told me:</p>
<blockquote>
<p>Manual implementation of <code>Option::map</code></p>
</blockquote>
<p>Huh, okay. Let's check the <a href="https://doc.rust-lang.org/std/option/enum.Option.html#method.map">documentation</a> </p>
<blockquote>
<p>Maps an <code>Option&lt;T&gt;</code> to <code>Option&lt;U&gt;</code> by applying a function to a contained value.</p>
</blockquote>
<p>So basically exactly what I did with those <code>match</code> statements!
My IDE even had a button to just easily fix this automatically with one click:</p>
<pre data-lang="rust" style="background-color:#1f1d29;color:#ffffff;" class="language-rust "><code class="language-rust" data-lang="rust"><span style="font-style:italic;color:#9bced7;">let</span><span> insert </span><span style="color:#ea6f91;">= </span><span>(
</span><span> tracks::title.</span><span style="color:#66d9ef;">eq</span><span>(tag.</span><span style="color:#66d9ef;">title</span><span>().</span><span style="color:#66d9ef;">map</span><span>(|</span><span style="font-style:italic;color:#f1ca93;">title</span><span>| title.</span><span style="color:#66d9ef;">to_string</span><span>())),
</span><span> tracks::track_number.</span><span style="color:#66d9ef;">eq</span><span>(tag.</span><span style="color:#66d9ef;">track</span><span>().</span><span style="color:#66d9ef;">map</span><span>(|</span><span style="font-style:italic;color:#f1ca93;">track</span><span>| track </span><span style="color:#ea6f91;">as </span><span style="font-style:italic;color:#9bced7;">i32</span><span>)),
</span><span> tracks::disc_number.</span><span style="color:#66d9ef;">eq</span><span>(tag.</span><span style="color:#66d9ef;">disk</span><span>().</span><span style="color:#66d9ef;">map</span><span>(|</span><span style="font-style:italic;color:#f1ca93;">track</span><span>| track </span><span style="color:#ea6f91;">as </span><span style="font-style:italic;color:#9bced7;">i32</span><span>)),
</span><span> tracks::path.</span><span style="color:#66d9ef;">eq</span><span>(</span><span style="color:#ea6f91;">match</span><span> path.</span><span style="color:#66d9ef;">to_str</span><span>() {
</span><span> </span><span style="font-style:italic;color:#66d9ef;">None </span><span style="color:#ea6f91;">=&gt; return </span><span style="font-style:italic;color:#66d9ef;">Err</span><span>(Error::msg(</span><span style="color:#f1ca93;">&quot;Could not get path&quot;</span><span>)),
</span><span> </span><span style="font-style:italic;color:#66d9ef;">Some</span><span>(path) </span><span style="color:#ea6f91;">=&gt;</span><span> path.</span><span style="color:#66d9ef;">to_string</span><span>(),
</span><span> }),
</span><span> tracks::year.</span><span style="color:#66d9ef;">eq</span><span>(tag.</span><span style="color:#66d9ef;">year</span><span>().</span><span style="color:#66d9ef;">map</span><span>(|</span><span style="font-style:italic;color:#f1ca93;">year</span><span>| year </span><span style="color:#ea6f91;">as </span><span style="font-style:italic;color:#9bced7;">i32</span><span>)),
</span><span> tracks::album_id.</span><span style="color:#66d9ef;">eq</span><span>(album.</span><span style="color:#66d9ef;">map</span><span>(|</span><span style="font-style:italic;color:#f1ca93;">album</span><span>| album.id)),
</span><span> );
</span></code></pre>
<p>Great, that looks a lot cleaner immediately!
Note how one of the lines was not changed, that's because that one sets a DB value which is <code>NOT NULL</code>, thus if the original <code>Option</code> is
a <code>None</code> it means something went wrong, and we should abort this insert and return with an Error.</p>
<p>And with that, we're done with my first blogpost about Rust, with hopefully many more to come!
As I said, I am still learning, and writing this is part of my learning process. That being said, if you find this interesting,
learned something from it, etc., feel free to leave me some feedback! I'd love to hear what you think!
And if I made mistakes, please also tell me. I'm always happy to learn more and to fix those mistakes so others can learn from them too.</p>
<p>Thank you so much for reading 💜</p>
</div>
<div class="pagination">
<div class="pagination__title">
<span class="pagination__title-h">More posts!</span>
<hr />
</div>
<div class="pagination__buttons">
<span class="button previous">
<a href="https://cherrykitten.dev/blog/fediverse-isnt-just-mastodon/">
<span class="button__icon"></span>&nbsp;
<span class="button__text">The Fediverse is more than just Mastodon</span>
</a>
</span>
<span class="button next">
<a href="https://cherrykitten.dev/blog/being-queer-and-otherkin/">
<span class="button__text">Being Queer and Otherkin</span>&nbsp;
<span class="button__icon"></span>
</a>
</span>
</div>
</div>
</div>
</div>
<footer class="footer">
<div class="footer__inner">
<div class="copyright copyright--user">
 
<span>&copy;
2024
- CherryKitten</span><br>
 
<span onclick="alert('Nya!')">🐱</span></div>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<span><a href="/impressum">Impressum</a></span>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<a href="/rss.xml">RSS</a>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<img src="/buttons/antinft.gif" alt="Anti NFT">
<img src="/buttons/acab.gif" alt="ACAB">
<img src="/buttons/transnow2.gif" alt="Trans rights now">
</div>
</footer>
</div>
</body>
</html>

View file

@ -1 +0,0 @@
.button-container{display:table;margin-left:auto;margin-right:auto}button,.button,a.button{position:relative;display:flex;align-items:center;justify-content:center;padding:8px 18px;margin-bottom:5px;text-align:center;border-radius:8px;border:1px solid rgba(0,0,0,0);appearance:none;cursor:pointer;outline:none;}button.outline,.button.outline,a.button.outline{background:rgba(0,0,0,0);box-shadow:none;padding:8px 18px}button.outline :hover,.button.outline :hover,a.button.outline :hover{transform:none;box-shadow:none}button.primary,.button.primary,a.button.primary{box-shadow:0 4px 6px rgba(50,50,93,.11),0 1px 3px rgba(0,0,0,.08)}button.primary:hover,.button.primary:hover,a.button.primary:hover{box-shadow:0 2px 6px rgba(50,50,93,.21),0 1px 3px rgba(0,0,0,.08)}button.link,.button.link,a.button.link{background:none;font-size:1rem}button.small,.button.small,a.button.small{font-size:.8rem}button.wide,.button.wide,a.button.wide{min-width:200px;padding:14px 24px}a.read-more,a.read-more:hover,a.read-more:active{display:inline-flex;background:none;box-shadow:none;padding:0;margin:20px 0;max-width:100%}.code-toolbar{margin-bottom:20px}.code-toolbar .toolbar-item a{position:relative;display:inline-flex;align-items:center;justify-content:center;padding:3px 8px;margin-bottom:5px;text-align:center;font-size:13px;font-weight:500;border-radius:8px;border:1px solid rgba(0,0,0,0);appearance:none;cursor:pointer;outline:none}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 471 B

View file

@ -1,42 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEZWCNkhYJKwYBBAHaRw8BAQdAC699jm1epF8FAU+q3YYZEqTmxvAD6BwcRYIe
Bsilwmu0I0NoZXJyeUtpdHRlbiA8bnlhQGNoZXJyeWtpdHRlbi5kZXY+iI4EExYK
ADYWIQQmTPoaGUxYXfgi9nPAGny7phe9XwUCZWCO+AIbAQQLCQgHBBUKCQgFFgID
AQACHgUCF4AACgkQwBp8u6YXvV8pzwD+LlLMVybr6ErgfG+H9pDo3sd9UUis10OE
zT0Ma17ET9UA/ArXHSngCjGOpq+XHzrGNYIyTAmOHJ9Ggbt5fB7Lg1YPtCdDaGVy
cnlLaXR0ZW4gPGNvbnRhY3RAY2hlcnJ5a2l0dGVuLmRldj6IjgQTFgoANhYhBCZM
+hoZTFhd+CL2c8AafLumF71fBQJlYI2SAhsBBAsJCAcEFQoJCAUWAgMBAAIeBQIX
gAAKCRDAGny7phe9X9LiAPsFLg1iasafK+umRwxFQx7awO81PX9KQaTYTO7mEHdI
wwEA8ozJqIsAC7D/DFzB5qBK5ckquDYWmmBnPcc/YlEgZgS0HlNhbW15IDxzYW1t
eUBjaGVycnlraXR0ZW4uZGV2PoiRBBMWCgA5AhsBBAsJCAcEFQoJCAUWAgMBAAIe
BQIXgBYhBCZM+hoZTFhd+CL2c8AafLumF71fBQJlYI8hAhkBAAoJEMAafLumF71f
Sx0A/iqyNOTB9s/NDujTO37PAFPg0buWzbXJsSQycKfeYCRkAP4vlI7sXmHsk5Xn
Zp3svsgcbYH5gT1LUiKWVhPQKGQ8BLQqU2FtYW50aGEgWWlsbWF6IDxzeWlsbWF6
QGNoZXJyeWtpdHRlbi5kZXY+iI4EExYKADYWIQQmTPoaGUxYXfgi9nPAGny7phe9
XwUCZWCOhgIbAQQLCQgHBBUKCQgFFgIDAQACHgUCF4AACgkQwBp8u6YXvV8hJAD/
eXnqKMtRYLrA3Ef0rIBOqcM2C0qF58qesaxAOEYpHQIA/0+3Zje5rV4LQbvjHBFY
Zg8TvRr0dD6y2Z8TV7Rp5swBtBdTYW1teSA8c2FtbXlAc2FtbXkubW9lPoiOBBMW
CgA2FiEEJkz6GhlMWF34IvZzwBp8u6YXvV8FAmVgjp0CGwEECwkIBwQVCgkIBRYC
AwEAAh4FAheAAAoJEMAafLumF71fdZ8A/19wgRYgzdxzbysUvoYJFI9aw38fLAUr
7ZJkv9I9iR2oAP4zSybBNw8/HXvjNoXgXIcgAONvsRHetWViQUjX7If7D7QjQ2hl
cnJ5S2l0dGVuIDxzZWNAY2hlcnJ5a2l0dGVuLmRldj6IjgQTFgoANhYhBCZM+hoZ
TFhd+CL2c8AafLumF71fBQJlYI7IAhsBBAsJCAcEFQoJCAUWAgMBAAIeBQIXgAAK
CRDAGny7phe9X8uYAQD8EjOKuyd/bJ8ekkOspYPqgevaJseevKCO97mzISt9JwEA
1jrZKHY74HBAie+LMc350vQtVQJj1hyQCFTOVq2fbwu4MwRlYI36FgkrBgEEAdpH
DwEBB0C+HXmMasXkPy+bjp6MZKXm4nsptoSluRPNlEtPpgXYOYj1BBgWCgAmFiEE
Jkz6GhlMWF34IvZzwBp8u6YXvV8FAmVgjfoCGwIFCQPCZwAAgQkQwBp8u6YXvV92
IAQZFgoAHRYhBLklSZyBwUPH10/dPJjY91+wZYJ2BQJlYI36AAoJEJjY91+wZYJ2
Oe0BAIU+S7AUfarDkqzs71+xrux3jskTeIQty0d0D2M1yFE/APsGfmtnEyIR8mwA
7tr3ocP09XopZawORsI8S18d7kSNBvDQAP95FD+AIhd0nyIWiyRX2cXjNBuff0lV
p3vA6FDTJ0hhKAEAnK4OFIRMhqQxBr/DPSALKeudyvt96DT2nNqALtMJlgG4OARl
YI4gEgorBgEEAZdVAQUBAQdAg56+jgA6++o+vu9Bdnjf/7oGmVYL0UN2DzxYYPQH
TyEDAQgHiH4EGBYKACYWIQQmTPoaGUxYXfgi9nPAGny7phe9XwUCZWCOIAIbDAUJ
A8JnAAAKCRDAGny7phe9X/Y0AQDsgwjJtxeXJ19rpKrltH25kljWnP3UaVwpWfN4
QyYmYgEAhAvcNn6Hws2EX0ngaWGhEV9jw/lQjRWT04fGzEurKgy4MwRlYI43Fgkr
BgEEAdpHDwEBB0CWckEmcPqRMbMdkVwfssW2iRgfZrb7nW0PwT+xNcir64h+BBgW
CgAmFiEEJkz6GhlMWF34IvZzwBp8u6YXvV8FAmVgjjcCGyAFCQPCZwAACgkQwBp8
u6YXvV9idgD/a8/VFSL6o6HlhuLMWBS3EhlsMnrZJpXIrYxEFoWcHe0BAPjhnpFB
wv+ibcJ44mu+QLb9rYECbLmkkST2m4z2L1kK
=6FuB
-----END PGP PUBLIC KEY BLOCK-----

View file

@ -1 +0,0 @@
:root{--accent: rgb(235, 111, 146);--accent2: rgb(246, 193, 119);--accent3: rgb(62, 143, 176);--accent-alpha-70: rgba(235, 111, 146,.7);--accent-alpha-20: rgba(235, 111, 146,.2);--background: #232136;--color: #e0def4;--border-color: rgba(246, 193, 119, .1)}

View file

@ -1,120 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Contact | CherryKitten</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
<meta name="robots" content="noodp"/>
<link rel="stylesheet" href="https://cherrykitten.dev/style.css">
<link rel="stylesheet" href="https://cherrykitten.dev/color.css">
<link rel="alternate" type="application/rss+xml" title="RSS" href="https://cherrykitten.dev/ rss.xml
">
</head>
<body class="">
<div class="container">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="https://cherrykitten.dev" style="text-decoration: none;">
<div class="logo">
CherryKitten
</div>
</a>
</div>
</div>
<nav class="menu">
<ul class="menu__inner">
<li><a href="https://cherrykitten.dev">Home</a></li>
<li><a href="https://cherrykitten.dev/about">About me</a></li>
<li><a href="https://cherrykitten.dev/blog">Blog</a></li>
<li><a href="https://cherrykitten.dev/cv">CV</a></li>
<li class="active"><a href="https://cherrykitten.dev/contact">Contact</a></li>
</ul>
</nav>
</header>
<div class="content">
<div class="post">
<h1 class="post-title"><a href="https://cherrykitten.dev/contact/">Contact</a></h1>
<div class="post-meta-inline">
<span class="post-date"></span>
</div>
<div class="post-content">
<h2 id="you-can-find-me-in-the-following-places">You can find me in the following places:</h2>
<ul>
<li><a href="https://social.cherrykitten.dev/@sammy">@sammy@cherrykitten.gay</a> - My personal GoToSocial instance, which you can follow from anywhere on the Fediverse!</li>
<li><a href="https://matrix.to/#/@sammy:cherrykitten.dev">@sammy:cherrykitten.dev</a> - My Matrix account, also on my own personal homeserver and reachable from any other matrix server!</li>
<li><a href="mailto:contact@cherrykitten.dev">contact@cherrykitten.dev</a> - You could even e-mail me! My public key for encrypted e-mails can be found <a href="../cherrykitten.pgp">here</a>.</li>
<li><a href="https://github.com/CherryKitten">GitHub</a> - For code and stuff</li>
<li><a href="https://codeberg.org/CherryKitten">Codeberg</a> - For code and stuff but cooler than GitHub</li>
</ul>
</div>
</div>
</div>
<footer class="footer">
<div class="footer__inner">
<div class="copyright copyright--user">
 
<span>&copy;
2024
- CherryKitten</span><br>
 
<span onclick="alert('Nya!')">🐱</span></div>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<span><a href="/impressum">Impressum</a></span>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<a href="/rss.xml">RSS</a>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<img src="/buttons/antinft.gif" alt="Anti NFT">
<img src="/buttons/acab.gif" alt="ACAB">
<img src="/buttons/transnow2.gif" alt="Trans rights now">
</div>
</footer>
</div>
</body>
</html>

View file

@ -1,211 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>CV | CherryKitten</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
<meta name="robots" content="noodp"/>
<link rel="stylesheet" href="https://cherrykitten.dev/style.css">
<link rel="stylesheet" href="https://cherrykitten.dev/color.css">
<link rel="alternate" type="application/rss+xml" title="RSS" href="https://cherrykitten.dev/ rss.xml
">
</head>
<body class="">
<div class="container">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="https://cherrykitten.dev" style="text-decoration: none;">
<div class="logo">
CherryKitten
</div>
</a>
</div>
</div>
<nav class="menu">
<ul class="menu__inner">
<li><a href="https://cherrykitten.dev">Home</a></li>
<li><a href="https://cherrykitten.dev/about">About me</a></li>
<li><a href="https://cherrykitten.dev/blog">Blog</a></li>
<li class="active"><a href="https://cherrykitten.dev/cv">CV</a></li>
<li><a href="https://cherrykitten.dev/contact">Contact</a></li>
</ul>
</nav>
</header>
<div class="content">
<div class="post">
<h1 class="post-title"><a href="https://cherrykitten.dev/cv/">CV</a></h1>
<div class="post-meta-inline">
<span class="post-date"></span>
</div>
<div class="post-content">
<div class="section">
<h2 id="technical-skills">Technical Skills</h2>
<table><thead><tr><th></th><th></th></tr></thead><tbody>
<tr><td>Linux</td><td>NixOS, Arch Linux, Debian, RHEL</td></tr>
<tr><td>Monitoring</td><td>Grafana + (Prometheus, Telegraf, InfluxDB), VictoraMetrics, Zabbix</td></tr>
<tr><td>DevOps / Automation</td><td>Ansible, Terraform, Vagrant, Git, Jenkins</td></tr>
<tr><td>Networking</td><td>VPN (Wireguard, OpenVPN), Routing (RIP, OSPF, BGP)</td></tr>
<tr><td>Virtualization</td><td>KVM/QEMU, Proxmox, Docker</td></tr>
<tr><td>Security</td><td>Server-Hardening, Security Best Practices, Vulnerability Assessment, Encryption, GPG, LUKS, TLS</td></tr>
<tr><td>Scripting &amp; Programming</td><td>Rust, Python, JavaScript, Shell, HTML, CSS, Nix</td></tr>
</tbody></table>
</div>
<div class="section">
<h2 id="certifications">Certifications</h2>
<h3 id="linux-professional-institute">Linux Professional Institute</h3>
<ul>
<li>LPIC-1 (valid until 2028-02-13)</li>
</ul>
<h3 id="freecodecamp-org">FreeCodeCamp.org</h3>
<ul>
<li>Data Analysis with Python</li>
<li>Scientific Computing with Python</li>
<li>Quality Assurance</li>
<li>Data Visualization</li>
<li>Back End Development and APIs</li>
<li>Front End Development Libraries</li>
<li>JavaScript Algorithms and Data Structures</li>
<li>Responsive Web Design</li>
</ul>
</div>
<div class="section">
<h2 id="work-experience">Work Experience</h2>
<h3 id="linux-system-administrator">Linux System Administrator</h3>
<h4 id="famedly-gmbh">Famedly GmbH</h4>
<h4 id="06-2023-current">06/2023-current</h4>
<p>Management of Infrastructure for a Matrix-based messenger for providers of medical services, both cloud-based and on-premise, using Ansible.
Software-Development in Rust and Python.</p>
<ul>
<li>Ansible</li>
<li>Rust</li>
<li>Python</li>
</ul>
</div>
<div class="section">
<h3 id="linux-devops-engineer">Linux &amp; DevOps Engineer</h3>
<h4 id="netpengo-gmbh">netpengo GmbH</h4>
<h4 id="01-2023-06-2023">01/2023-06/2023</h4>
<p>Infrastructure-Management, Development of Infrastructure-as-code using Ansible and Jenkins.
Automating administration tasks.
Monitoring and Incidence Management. Administration of various Web-Applications.</p>
<ul>
<li>Ansible</li>
<li>Jenkins</li>
<li>Grafana</li>
<li>Zabbix</li>
<li>Hetzner Cloud</li>
<li>GitLab</li>
<li>Terraform</li>
</ul>
</div>
<div class="section">
<h3 id="continuing-education-open-source-work">Continuing Education / Open-Source-Work</h3>
<h4 id="11-2020-12-2022">11/2020-12/2022</h4>
<p>Work on various Open-Source-Projects, various FreeCodeCamp.org courses, and personal infrastructure.</p>
<ul>
<li>Ansible</li>
<li>JavaScript</li>
<li>Python</li>
<li>Rust</li>
</ul>
</div>
<div class="section">
<h3 id="linux-engineer">Linux Engineer</h3>
<h4 id="lacewing-tech-gbr">Lacewing Tech GbR</h4>
<h4 id="05-2020-10-2020">05/2020-10/2020</h4>
<p>Automation of server management, administrating LEMP Stack and FOSS-Software Hosting. Organisation of workshops.</p>
<ul>
<li>Ansible</li>
<li>Nginx</li>
<li>Nextcloud</li>
<li>Bitwarden</li>
<li>Jitsi</li>
</ul>
</div>
<div class="section">
<h3 id="linux-administrator">Linux Administrator</h3>
<h4 id="ucware-gmbh">UCware GmbH</h4>
<h4 id="07-2019-11-2019">07/2019-11/2019</h4>
<p>Linux-administration, Virtualization of servers and desktops; administration of GitLab, Ruby Applications, and Docker
Containers</p>
<ul>
<li>Ansible</li>
<li>Docker</li>
<li>KVM</li>
<li>Proxmox</li>
<li>GitLab</li>
<li>Redmine</li>
</ul>
</div>
</div>
</div>
</div>
<footer class="footer">
<div class="footer__inner">
<div class="copyright copyright--user">
 
<span>&copy;
2024
- CherryKitten</span><br>
 
<span onclick="alert('Nya!')">🐱</span></div>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<span><a href="/impressum">Impressum</a></span>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<a href="/rss.xml">RSS</a>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<img src="/buttons/antinft.gif" alt="Anti NFT">
<img src="/buttons/acab.gif" alt="ACAB">
<img src="/buttons/transnow2.gif" alt="Trans rights now">
</div>
</footer>
</div>
</body>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

View file

@ -1 +0,0 @@
.footer{padding:40px 0;flex-grow:0;opacity:.5}.footer__inner{display:flex;align-items:center;justify-content:space-between;margin:0;width:760px;max-width:100%}@media (max-width: 899px){.footer__inner{flex-direction:column}}.footer a{color:inherit}.footer .copyright{display:flex;flex-direction:row;align-items:center;font-size:1rem;color:var(--light-color-secondary)}.footer .copyright--user{margin:auto;text-align:center}.footer .copyright>*:first-child:not(:only-child){margin-right:10px}@media (max-width: 899px){.footer .copyright>*:first-child:not(:only-child){border:none;padding:0;margin:0}}@media (max-width: 899px){.footer .copyright{flex-direction:column;margin-top:10px}}

View file

@ -1 +0,0 @@
.header{display:flex;flex-direction:column;position:relative}.header__inner{display:flex;align-items:center;justify-content:space-between}.header__logo{display:flex;flex:1}.header__logo:after{content:"";background:repeating-linear-gradient(90deg, var(--accent) 0%, rgba(0,0,0,0) 8%, var(--accent2) 50%, var(--accent3) 100%);display:block;width:100%;right:10px;border-radius:0 20px 20px 0}.header__logo a{flex:0 0 auto;max-width:100%}.header .menu{margin:20px 0}.header .menu__inner{display:flex;flex-wrap:wrap;list-style:none;margin:0;padding:0}.header .menu__inner li{color:var(--accent3)}.header .menu__inner li.active{color:var(--accent-alpha-70)}.header .menu__inner li:not(:last-of-type){margin-right:20px;margin-bottom:10px;flex:0 0 auto}.header .menu__sub-inner{position:relative;list-style:none;padding:0;margin:0}.header .menu__sub-inner:not(:only-child){margin-left:20px}.header .menu__sub-inner-more{position:absolute;background:var(--background);box-shadow:var(--shadow);color:#fff;border:2px solid;margin:0;padding:10px;list-style:none;z-index:99;top:35px;left:0}.header .menu__sub-inner-more-trigger{color:var(--accent);user-select:none;cursor:pointer}.header .menu__sub-inner-more li{margin:0;padding:5px;white-space:nowrap}

View file

@ -1,130 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Hello there! | CherryKitten</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
<meta name="robots" content="noodp"/>
<link rel="stylesheet" href="https://cherrykitten.dev/style.css">
<link rel="stylesheet" href="https://cherrykitten.dev/color.css">
<link rel="alternate" type="application/rss+xml" title="RSS" href="https://cherrykitten.dev/ rss.xml
">
</head>
<body class="">
<div class="container">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="https://cherrykitten.dev" style="text-decoration: none;">
<div class="logo">
CherryKitten
</div>
</a>
</div>
</div>
<nav class="menu">
<ul class="menu__inner">
<li class="active"><a href="https://cherrykitten.dev">Home</a></li>
<li><a href="https://cherrykitten.dev/about">About me</a></li>
<li><a href="https://cherrykitten.dev/blog">Blog</a></li>
<li><a href="https://cherrykitten.dev/cv">CV</a></li>
<li><a href="https://cherrykitten.dev/contact">Contact</a></li>
</ul>
</nav>
</header>
<div class="content">
<div class="post">
<h1 class="post-title"><a href="https://cherrykitten.dev/home/">Hello there!</a></h1>
<div class="post-meta-inline">
<span class="post-date"></span>
</div>
<div class="post-content">
<img src="/profile.jpeg" alt="Profile picture" class="center" style="border-radius: 50%; height: 128px; width: 128px;" />
<div style="text-align: center">
<p>Hi, I'm Sammy.</p>
<p>Welcome to my little website :3</p>
</div>
<pre data-lang="Rust" style="background-color:#1f1d29;color:#ffffff;" class="language-Rust "><code class="language-Rust" data-lang="Rust"><span style="color:#403c58;">///I like to meow
</span><span style="font-style:italic;color:#9bced7;">fn </span><span style="color:#34738e;">main</span><span>() {
</span><span> </span><span style="color:#ea6f91;">loop </span><span>{
</span><span> println!(</span><span style="color:#f1ca93;">&quot;Meow!&quot;</span><span>);
</span><span> }
</span><span>}
</span><span>
</span><span>
</span><span style="color:#403c58;">// Honestly I just wanted to have some kind of code block somewhere to see how pretty the syntax highlighting is
</span></code></pre>
</div>
</div>
</div>
<footer class="footer">
<div class="footer__inner">
<div class="copyright copyright--user">
 
<span>&copy;
2024
- CherryKitten</span><br>
 
<span onclick="alert('Nya!')">🐱</span></div>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<span><a href="/impressum">Impressum</a></span>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<a href="/rss.xml">RSS</a>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<img src="/buttons/antinft.gif" alt="Anti NFT">
<img src="/buttons/acab.gif" alt="ACAB">
<img src="/buttons/transnow2.gif" alt="Trans rights now">
</div>
</footer>
</div>
</body>
</html>

View file

@ -1,123 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Impressum | CherryKitten</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
<meta name="robots" content="noodp"/>
<link rel="stylesheet" href="https://cherrykitten.dev/style.css">
<link rel="stylesheet" href="https://cherrykitten.dev/color.css">
<link rel="alternate" type="application/rss+xml" title="RSS" href="https://cherrykitten.dev/ rss.xml
">
</head>
<body class="">
<div class="container">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="https://cherrykitten.dev" style="text-decoration: none;">
<div class="logo">
CherryKitten
</div>
</a>
</div>
</div>
<nav class="menu">
<ul class="menu__inner">
<li class="active"><a href="https://cherrykitten.dev">Home</a></li>
<li><a href="https://cherrykitten.dev/about">About me</a></li>
<li><a href="https://cherrykitten.dev/blog">Blog</a></li>
<li><a href="https://cherrykitten.dev/cv">CV</a></li>
<li><a href="https://cherrykitten.dev/contact">Contact</a></li>
</ul>
</nav>
</header>
<div class="content">
<div class="post">
<h1 class="post-title"><a href="https://cherrykitten.dev/impressum/">Impressum</a></h1>
<div class="post-meta-inline">
<span class="post-date"></span>
</div>
<div class="post-content">
<p>Because I live in germany, I'm legally obligated to have this on here 🙄</p>
<p>Angaben gemäß § 5 TMG</p>
<pre style="background-color:#1f1d29;color:#ffffff;"><code><span>Samantha Yilmaz
</span><span>c/o Postflex #3050
</span><span>Emsdettener Str. 10
</span><span>48268 Greven
</span></code></pre>
<p>Vertreten durch: Samantha Yilmaz</p>
<p>E-Mail: contact[at]cherrykitten[dot]dev</p>
<p>Verantwortlich für den Inhalt nach § 55 Abs. 2 RStV: Samantha Yilmaz</p>
</div>
</div>
</div>
<footer class="footer">
<div class="footer__inner">
<div class="copyright copyright--user">
 
<span>&copy;
2024
- CherryKitten</span><br>
 
<span onclick="alert('Nya!')">🐱</span></div>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<span><a href="/impressum">Impressum</a></span>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<a href="/rss.xml">RSS</a>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<img src="/buttons/antinft.gif" alt="Anti NFT">
<img src="/buttons/acab.gif" alt="ACAB">
<img src="/buttons/transnow2.gif" alt="Trans rights now">
</div>
</footer>
</div>
</body>
</html>

View file

@ -1,134 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>CherryKitten</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
<meta name="robots" content="noodp"/>
<link rel="stylesheet" href="https://cherrykitten.dev/style.css">
<link rel="stylesheet" href="https://cherrykitten.dev/color.css">
<link rel="alternate" type="application/rss+xml" title="RSS" href="https://cherrykitten.dev/ rss.xml
">
</head>
<body class="">
<div class="container">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="https://cherrykitten.dev" style="text-decoration: none;">
<div class="logo">
CherryKitten
</div>
</a>
</div>
</div>
<nav class="menu">
<ul class="menu__inner">
<li class="active"><a href="https://cherrykitten.dev">Home</a></li>
<li><a href="https://cherrykitten.dev/about">About me</a></li>
<li><a href="https://cherrykitten.dev/blog">Blog</a></li>
<li><a href="https://cherrykitten.dev/cv">CV</a></li>
<li><a href="https://cherrykitten.dev/contact">Contact</a></li>
</ul>
</nav>
</header>
<div class="content">
<div class="posts">
<div class="post on-list">
<h1 class="post-title"><a href="https://cherrykitten.dev/home/">Hello there!</a></h1>
<div class="post-meta-inline">
<span class="post-date"></span>
</div>
<div class="post-content">
<img src="/profile.jpeg" alt="Profile picture" class="center" style="border-radius: 50%; height: 128px; width: 128px;" />
<div style="text-align: center">
<p>Hi, I'm Sammy.</p>
<p>Welcome to my little website :3</p>
</div>
<pre data-lang="Rust" style="background-color:#1f1d29;color:#ffffff;" class="language-Rust "><code class="language-Rust" data-lang="Rust"><span style="color:#403c58;">///I like to meow
</span><span style="font-style:italic;color:#9bced7;">fn </span><span style="color:#34738e;">main</span><span>() {
</span><span> </span><span style="color:#ea6f91;">loop </span><span>{
</span><span> println!(</span><span style="color:#f1ca93;">&quot;Meow!&quot;</span><span>);
</span><span> }
</span><span>}
</span><span>
</span><span>
</span><span style="color:#403c58;">// Honestly I just wanted to have some kind of code block somewhere to see how pretty the syntax highlighting is
</span></code></pre>
</div>
</div>
<div class="pagination">
<div class="pagination__buttons"></div>
</div>
</div>
</div>
<footer class="footer">
<div class="footer__inner">
<div class="copyright copyright--user">
 
<span>&copy;
2024
- CherryKitten</span><br>
 
<span onclick="alert('Nya!')">🐱</span></div>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<span><a href="/impressum">Impressum</a></span>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<a href="/rss.xml">RSS</a>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<img src="/buttons/antinft.gif" alt="Anti NFT">
<img src="/buttons/acab.gif" alt="ACAB">
<img src="/buttons/transnow2.gif" alt="Trans rights now">
</div>
</footer>
</div>
</body>
</html>

View file

@ -1 +0,0 @@
.logo{display:flex;align-items:center;text-decoration:none;background:var(--accent);color:#000;padding:5px 10px;border-radius:20px 0 0 20px}

View file

@ -1 +0,0 @@
html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit}body{margin:0;padding:0;font-family:Monaco,Consolas,Ubuntu Mono,monospace;font-size:1rem;line-height:1.54;background-color:var(--background);color:var(--color);text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-webkit-overflow-scrolling:touch;-webkit-text-size-adjust:100%}@media (max-width: 683px){body{font-size:1rem}}h1,h2{display:flex;align-items:center;font-weight:500;line-height:1.3;color:var(--accent2)}h3,h4,h5,h6{display:flex;align-items:center;font-weight:400;line-height:.8;color:var(--accent3)}h1{font-size:1.4rem}h2{font-size:1.3rem;padding-top:1rem;border-bottom:1px dashed var(--accent);padding-bottom:7px}h3{font-size:1.2rem;font-weight:bolder}h4,h5,h6{font-size:1.15rem}a{color:inherit}img{display:block;max-width:100%}img.left{margin-right:auto}img.center{margin-left:auto;margin-right:auto}img.right{margin-left:auto}p{margin-bottom:20px}figure{display:table;max-width:100%;margin:25px 0}figure.left img{margin-right:auto}figure.center img{margin-left:auto;margin-right:auto}figure.right img{margin-left:auto}figure figcaption{font-size:14px;padding:5px 10px;margin-top:5px;background:var(--accent);color:var(--background)}figure figcaption.left{text-align:left}figure figcaption.center{text-align:center}figure figcaption.right{text-align:right}code{font-family:monospace;font-feature-settings:normal;background:var(--accent-alpha-20);padding:1px 6px;margin:0 2px;font-size:.95rem}pre{font-family:monospace;padding:20px;font-size:.95rem;overflow:auto;border-top:1px solid rgba(255,255,255,.1);border-bottom:1px solid rgba(255,255,255,.1)}@media (max-width: 683px){pre{white-space:pre-wrap;word-wrap:break-word}}pre code{padding:0;margin:0;background:none}blockquote{border-top:1px solid var(--accent);border-bottom:1px solid var(--accent);margin:40px 0;padding:25px}@media (max-width: 683px){blockquote{padding-right:0}}blockquote:before{content:"”";font-family:Georgia,serif;font-size:3.875rem;position:absolute;left:-40px;top:-20px}blockquote p:first-of-type{margin-top:0}blockquote p:last-of-type{margin-bottom:0}blockquote p{position:relative}blockquote p:before{content:">";display:block;position:absolute;left:-25px;color:var(--accent)}table{table-layout:fixed;border-collapse:collapse;width:100%;margin:40px 0}table,th,td{border:none;padding:10px}th{color:var(--accent)}td{border-bottom:1px dotted var(--accent)}ul,ol{margin-left:30px;padding:0}ul li,ol li{position:relative}@media (max-width: 683px){ul,ol{margin-left:20px}}ol ol{list-style-type:lower-alpha}.container{display:flex;flex-direction:column;padding:40px;max-width:864px;min-height:100vh;margin:0 auto}@media (max-width: 683px){.container{padding:20px}}.content{display:flex}hr{width:100%;border:none;background:var(--border-color);height:1px}.hidden{display:none}@media print{.section{break-inside:avoid-page;padding-top:1rem}p,table{break-inside:avoid-page}}

View file

@ -1 +0,0 @@
.pagination{margin-top:50px}.pagination__title{display:flex;text-align:center;position:relative;margin:100px 0 20px}.pagination__title-h{text-align:center;margin:0 auto;padding:5px 10px;background:var(--background);font-size:.8rem;text-transform:uppercase;letter-spacing:.1em;z-index:1}.pagination__title hr{position:absolute;left:0;right:0;width:100%;margin-top:15px;z-index:0}.pagination__buttons{display:flex;align-items:center;justify-content:center}@media (max-width: 683px){.pagination__buttons{flex-direction:column}}.button{position:relative;display:inline-flex;align-items:center;justify-content:center;font-size:1rem;border-radius:8px;max-width:40%;padding:0;cursor:pointer;appearance:none}@media (max-width: 683px){.button{max-width:80%}}.button+.button{margin-left:10px}.button a{display:flex;padding:8px 16px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.button__text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}

View file

@ -1 +0,0 @@
.posts{width:100%;margin:0 auto}.post{width:100%;text-align:left;margin:20px auto;padding:20px 0}@media (max-width: 899px){.post{max-width:660px}}.post:not(:last-of-type){border-bottom:1px solid var(--border-color)}.post .post-meta-inline,.post .post-meta{font-size:1rem;margin-bottom:10px;color:var(--accent-alpha-70)}.post-meta-inline{display:inline}.post-title{--border: 2px dashed var(--accent);position:relative;color:var(--accent2);margin:0 0 15px;padding-bottom:15px;border-bottom:var(--border);font-weight:normal}.post-title a{text-decoration:none}.post .post-tags-inline,.post .post-tags{margin-bottom:20px;font-size:1rem;opacity:.5}.post-tags{display:block}.post-tags-inline{display:inline}@media (max-width: 683px){.post-tags-inline{display:block}}.post-content{margin-top:30px}.post-cover{border:20px solid var(--accent);background:rgba(0,0,0,0);margin:40px 0;padding:20px}@media (max-width: 683px){.post-cover{padding:10px;border-width:10px}}.post ul{list-style:none}.post ul li:before{content:"►";position:absolute;left:-20px;color:var(--accent)}.post--regulation h1{justify-content:center}.post--regulation h2{justify-content:center;margin-bottom:10px}.post--regulation h2+h2{margin-top:-10px;margin-bottom:20px}.post-list .post-date{color:var(--accent3);text-decoration:none}.post-list a{text-decoration:none}.post-list .post-list-title{text-decoration:underline}.post-list .post-tag{text-decoration:underline}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

View file

@ -1,4 +0,0 @@
User-agent: *
Disallow:
Allow: /
Sitemap: https://cherrykitten.dev/sitemap.xml

View file

@ -1,74 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
<channel>
<title>CherryKitten</title>
<link>https://cherrykitten.dev</link>
<description></description>
<generator>Zola</generator>
<language>en</language>
<atom:link href="https://cherrykitten.dev/rss.xml" rel="self" type="application/rss+xml"/>
<lastBuildDate>Tue, 26 Mar 2024 00:00:00 +0000</lastBuildDate>
<item>
<title>Birds.</title>
<pubDate>Tue, 26 Mar 2024 00:00:00 +0000</pubDate>
<author>Unknown</author>
<link>https://cherrykitten.dev/blog/birds/</link>
<guid>https://cherrykitten.dev/blog/birds/</guid>
<description xml:base="https://cherrykitten.dev/blog/birds/">&lt;p&gt;Birds. They&#x27;re all around us. They are wonderful beings of pure bliss. I love them all.&lt;&#x2F;p&gt;
&lt;p&gt;I&#x27;ve wanted to write about &amp;quot;birds&amp;quot; as a general topic for a long time now. There&#x27;s a lot to say, I have so many bits and pieces of drafts, ideas, thoughts. On birds themselves, on my personal relationship with them, on their cultural significance and how humanity treats them. This is my attempt at actually putting all of that into a semi-coherent text for you to read, or just to have actually written it all out. I don&#x27;t know if anyone will get that much out of reading this, but I care about this topic deeply and I need to get these words out.&lt;&#x2F;p&gt;
</description>
</item>
<item>
<title>Being Queer and Otherkin</title>
<pubDate>Fri, 09 Jun 2023 00:00:00 +0000</pubDate>
<author>Unknown</author>
<link>https://cherrykitten.dev/blog/being-queer-and-otherkin/</link>
<guid>https://cherrykitten.dev/blog/being-queer-and-otherkin/</guid>
<description xml:base="https://cherrykitten.dev/blog/being-queer-and-otherkin/">&lt;p&gt;This is a bit more of a personal one, some background on me personally and on my identity.&lt;&#x2F;p&gt;
&lt;p&gt;As you might have noticed, I am a catgirl. But what does that actually mean?
For some, it might just be a weird cute thing they know from anime, others might think &amp;quot;a girl who likes cats&amp;quot;.
For me, it means I am a cat and a girl (&lt;a href=&quot;https:&#x2F;&#x2F;nonbinary.wiki&#x2F;wiki&#x2F;Demigender#Demigirl&quot;&gt;kinda&lt;&#x2F;a&gt;). Both are equally important parts of my identity.&lt;&#x2F;p&gt;
&lt;p&gt;I am trans, I am nonbinary, and I am otherkin. I am also autistic. All of these are properties of me as a whole. They
add up to create this entity that&#x27;s writing this post right now. Remove any single one of these properties, and you end
up with a completely different being.&lt;&#x2F;p&gt;
</description>
</item>
<item>
<title>Learning Rust: A kitten&#x27;s guide to Options and Results</title>
<pubDate>Sat, 25 Feb 2023 00:00:00 +0000</pubDate>
<author>Unknown</author>
<link>https://cherrykitten.dev/blog/rust-options-results/</link>
<guid>https://cherrykitten.dev/blog/rust-options-results/</guid>
<description xml:base="https://cherrykitten.dev/blog/rust-options-results/">&lt;h3 id=&quot;to-unwrap-or-not-to-unwrap-that-is-the-question&quot;&gt;To unwrap() or not to unwrap(), that is the question:&lt;&#x2F;h3&gt;
&lt;p&gt;So I&#x27;ve finally given in and started to learn Rust last month. It&#x27;s a really cool programming language,
with some interesting differences to what I&#x27;ve used before. (JavaScript and Python, mostly)&lt;&#x2F;p&gt;
&lt;p&gt;There are some really pawesome guides out there, &lt;a href=&quot;https:&#x2F;&#x2F;doc.rust-lang.org&#x2F;book&#x2F;&quot;&gt;&amp;quot;The Rust programming language&amp;quot;&lt;&#x2F;a&gt; is
definitely a &lt;strong&gt;must-read&lt;&#x2F;strong&gt; in my opinion, and &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;rust-lang&#x2F;rustlings&quot;&gt;Rustlings&lt;&#x2F;a&gt; is nyamazing for
anyone who likes to learn by actively working through interactive problems.&lt;&#x2F;p&gt;
&lt;p&gt;After reading through a lot of those big thorough guides by experienced Rust developers, I&#x27;ve started working on
my first actual Project. I approached the development of this project by just trying to get small parts of it
working in any way I can manage, and then build upon this. In that process, I learned a lot of small subtilties that
guides like the ones named above just can&#x27;t really cover. This post is for sharing those things, those cool little
tips to make your first Rust project just a little cleaner and more Rust-y. Originally I wanted to make this about a lot
of different topics, but then I&#x27;ve realized that my notes already contain so many things about just one part of Rust:
The Enums &lt;code&gt;Option&lt;&#x2F;code&gt; and &lt;code&gt;Result&lt;&#x2F;code&gt;. So this post will be about those, and hopefully will mark the start of a series on this blog.&lt;&#x2F;p&gt;
&lt;p&gt;While reading through this, you might think that the things I&#x27;m mentioning are obvious. That&#x27;s okay, and that&#x27;s the point.
Nothing is ever completely obvious to everyone, and this is for those like me, who often don&#x27;t immediately recognize
the &amp;quot;obvious&amp;quot;. And, to be honest, I am writing this just as much for myself, writing all of that stuff down to aid me in my
own ongoing learning process.&lt;&#x2F;p&gt;
&lt;p&gt;So, let&#x27;s start!&lt;&#x2F;p&gt;
</description>
</item>
<item>
<title>The Fediverse is more than just Mastodon</title>
<pubDate>Sat, 26 Nov 2022 00:00:00 +0000</pubDate>
<author>Unknown</author>
<link>https://cherrykitten.dev/blog/fediverse-isnt-just-mastodon/</link>
<guid>https://cherrykitten.dev/blog/fediverse-isnt-just-mastodon/</guid>
<description xml:base="https://cherrykitten.dev/blog/fediverse-isnt-just-mastodon/">&lt;p&gt;With Twitter in a downwards spiral thanks to some rich guy whose name escapes me breaking everything, the Fediverse has been getting the biggest influx of new users in a very long time.
People have been recommending &amp;quot;Mastodon&amp;quot; as a Twitter alternative for a while now, causing #Mastodon to be the top trending Hashtag on many days.&lt;&#x2F;p&gt;
&lt;p&gt;Browsing that hashtag one can find a lot of misconceptions about what Mastodon is, how it works, and what its limitations are. These misconceptions are not just spread by people who dislike Mastodon and try to convince others not to use it, though. They are also perpetuated by people who seem to want to increase the userbase at all cost, regardless of whom it attracts to the Fediverse.&lt;&#x2F;p&gt;
</description>
</item>
</channel>
</rss>

View file

@ -1,115 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://cherrykitten.dev/</loc>
</url>
<url>
<loc>https://cherrykitten.dev/about/</loc>
</url>
<url>
<loc>https://cherrykitten.dev/blog/</loc>
</url>
<url>
<loc>https://cherrykitten.dev/blog/being-queer-and-otherkin/</loc>
<lastmod>2023-06-09</lastmod>
</url>
<url>
<loc>https://cherrykitten.dev/blog/birds/</loc>
<lastmod>2024-03-26</lastmod>
</url>
<url>
<loc>https://cherrykitten.dev/blog/fediverse-isnt-just-mastodon/</loc>
<lastmod>2022-11-26</lastmod>
</url>
<url>
<loc>https://cherrykitten.dev/blog/page/1/</loc>
</url>
<url>
<loc>https://cherrykitten.dev/blog/rust-options-results/</loc>
<lastmod>2023-02-25</lastmod>
</url>
<url>
<loc>https://cherrykitten.dev/contact/</loc>
</url>
<url>
<loc>https://cherrykitten.dev/cv/</loc>
</url>
<url>
<loc>https://cherrykitten.dev/home/</loc>
</url>
<url>
<loc>https://cherrykitten.dev/impressum/</loc>
</url>
<url>
<loc>https://cherrykitten.dev/tags/</loc>
</url>
<url>
<loc>https://cherrykitten.dev/tags/activitypub/</loc>
</url>
<url>
<loc>https://cherrykitten.dev/tags/animals/</loc>
</url>
<url>
<loc>https://cherrykitten.dev/tags/autism/</loc>
</url>
<url>
<loc>https://cherrykitten.dev/tags/birds/</loc>
</url>
<url>
<loc>https://cherrykitten.dev/tags/calckey/</loc>
</url>
<url>
<loc>https://cherrykitten.dev/tags/cat/</loc>
</url>
<url>
<loc>https://cherrykitten.dev/tags/code/</loc>
</url>
<url>
<loc>https://cherrykitten.dev/tags/fediverse/</loc>
</url>
<url>
<loc>https://cherrykitten.dev/tags/gender/</loc>
</url>
<url>
<loc>https://cherrykitten.dev/tags/learning/</loc>
</url>
<url>
<loc>https://cherrykitten.dev/tags/mastodon/</loc>
</url>
<url>
<loc>https://cherrykitten.dev/tags/meow/</loc>
</url>
<url>
<loc>https://cherrykitten.dev/tags/misskey/</loc>
</url>
<url>
<loc>https://cherrykitten.dev/tags/nature/</loc>
</url>
<url>
<loc>https://cherrykitten.dev/tags/neurodivergency/</loc>
</url>
<url>
<loc>https://cherrykitten.dev/tags/nya/</loc>
</url>
<url>
<loc>https://cherrykitten.dev/tags/otherkin/</loc>
</url>
<url>
<loc>https://cherrykitten.dev/tags/personal/</loc>
</url>
<url>
<loc>https://cherrykitten.dev/tags/politics/</loc>
</url>
<url>
<loc>https://cherrykitten.dev/tags/programming/</loc>
</url>
<url>
<loc>https://cherrykitten.dev/tags/queerness/</loc>
</url>
<url>
<loc>https://cherrykitten.dev/tags/rust/</loc>
</url>
<url>
<loc>https://cherrykitten.dev/tags/society/</loc>
</url>
</urlset>

File diff suppressed because one or more lines are too long

View file

@ -1,124 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>
Tag: ActivityPub | CherryKitten</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
<meta name="robots" content="noodp"/>
<link rel="stylesheet" href="https://cherrykitten.dev/style.css">
<link rel="stylesheet" href="https://cherrykitten.dev/color.css">
<link rel="alternate" type="application/rss+xml" title="RSS" href="https://cherrykitten.dev/ rss.xml
">
</head>
<body class="">
<div class="container">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="https://cherrykitten.dev" style="text-decoration: none;">
<div class="logo">
CherryKitten
</div>
</a>
</div>
</div>
<nav class="menu">
<ul class="menu__inner">
<li class="active"><a href="https://cherrykitten.dev">Home</a></li>
<li><a href="https://cherrykitten.dev/about">About me</a></li>
<li><a href="https://cherrykitten.dev/blog">Blog</a></li>
<li><a href="https://cherrykitten.dev/cv">CV</a></li>
<li><a href="https://cherrykitten.dev/contact">Contact</a></li>
</ul>
</nav>
</header>
<div class="content">
<div class="post">
<h1 class="post-title">
tag: #ActivityPub
(1 post)
</h1>
<a href="https://cherrykitten.dev/tags">
Show all tags
</a>
<ul><li class="post-list">
<a href="https://cherrykitten.dev/blog/fediverse-isnt-just-mastodon/">
<span class="post-date">2022-11-26</span>
:: <span class="post-list-title">The Fediverse is more than just Mastodon</span></a>
<span class="post-tags-inline">
::
<a class="post-tag" href="https://cherrykitten.dev/tags/fediverse/">#Fediverse</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/mastodon/">#Mastodon</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/misskey/">#Misskey</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/calckey/">#Calckey</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/activitypub/">#ActivityPub</a></span>
</li>
</ul>
</div>
</div>
<footer class="footer">
<div class="footer__inner">
<div class="copyright copyright--user">
 
<span>&copy;
2024
- CherryKitten</span><br>
 
<span onclick="alert('Nya!')">🐱</span></div>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<span><a href="/impressum">Impressum</a></span>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<a href="/rss.xml">RSS</a>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<img src="/buttons/antinft.gif" alt="Anti NFT">
<img src="/buttons/acab.gif" alt="ACAB">
<img src="/buttons/transnow2.gif" alt="Trans rights now">
</div>
</footer>
</div>
</body>
</html>

View file

@ -1,124 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>
Tag: animals | CherryKitten</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
<meta name="robots" content="noodp"/>
<link rel="stylesheet" href="https://cherrykitten.dev/style.css">
<link rel="stylesheet" href="https://cherrykitten.dev/color.css">
<link rel="alternate" type="application/rss+xml" title="RSS" href="https://cherrykitten.dev/ rss.xml
">
</head>
<body class="">
<div class="container">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="https://cherrykitten.dev" style="text-decoration: none;">
<div class="logo">
CherryKitten
</div>
</a>
</div>
</div>
<nav class="menu">
<ul class="menu__inner">
<li class="active"><a href="https://cherrykitten.dev">Home</a></li>
<li><a href="https://cherrykitten.dev/about">About me</a></li>
<li><a href="https://cherrykitten.dev/blog">Blog</a></li>
<li><a href="https://cherrykitten.dev/cv">CV</a></li>
<li><a href="https://cherrykitten.dev/contact">Contact</a></li>
</ul>
</nav>
</header>
<div class="content">
<div class="post">
<h1 class="post-title">
tag: #animals
(1 post)
</h1>
<a href="https://cherrykitten.dev/tags">
Show all tags
</a>
<ul><li class="post-list">
<a href="https://cherrykitten.dev/blog/birds/">
<span class="post-date">2024-03-26</span>
:: <span class="post-list-title">Birds.</span></a>
<span class="post-tags-inline">
::
<a class="post-tag" href="https://cherrykitten.dev/tags/animals/">#animals</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/birds/">#birds</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/nature/">#nature</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/society/">#society</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/politics/">#politics</a></span>
</li>
</ul>
</div>
</div>
<footer class="footer">
<div class="footer__inner">
<div class="copyright copyright--user">
 
<span>&copy;
2024
- CherryKitten</span><br>
 
<span onclick="alert('Nya!')">🐱</span></div>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<span><a href="/impressum">Impressum</a></span>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<a href="/rss.xml">RSS</a>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<img src="/buttons/antinft.gif" alt="Anti NFT">
<img src="/buttons/acab.gif" alt="ACAB">
<img src="/buttons/transnow2.gif" alt="Trans rights now">
</div>
</footer>
</div>
</body>
</html>

View file

@ -1,128 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>
Tag: autism | CherryKitten</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
<meta name="robots" content="noodp"/>
<link rel="stylesheet" href="https://cherrykitten.dev/style.css">
<link rel="stylesheet" href="https://cherrykitten.dev/color.css">
<link rel="alternate" type="application/rss+xml" title="RSS" href="https://cherrykitten.dev/ rss.xml
">
</head>
<body class="">
<div class="container">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="https://cherrykitten.dev" style="text-decoration: none;">
<div class="logo">
CherryKitten
</div>
</a>
</div>
</div>
<nav class="menu">
<ul class="menu__inner">
<li class="active"><a href="https://cherrykitten.dev">Home</a></li>
<li><a href="https://cherrykitten.dev/about">About me</a></li>
<li><a href="https://cherrykitten.dev/blog">Blog</a></li>
<li><a href="https://cherrykitten.dev/cv">CV</a></li>
<li><a href="https://cherrykitten.dev/contact">Contact</a></li>
</ul>
</nav>
</header>
<div class="content">
<div class="post">
<h1 class="post-title">
tag: #autism
(1 post)
</h1>
<a href="https://cherrykitten.dev/tags">
Show all tags
</a>
<ul><li class="post-list">
<a href="https://cherrykitten.dev/blog/being-queer-and-otherkin/">
<span class="post-date">2023-06-09</span>
:: <span class="post-list-title">Being Queer and Otherkin</span></a>
<span class="post-tags-inline">
::
<a class="post-tag" href="https://cherrykitten.dev/tags/personal/">#personal</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/queerness/">#queerness</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/otherkin/">#otherkin</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/neurodivergency/">#neurodivergency</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/autism/">#autism</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/cat/">#cat</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/nya/">#nya</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/meow/">#meow</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/gender/">#gender</a></span>
</li>
</ul>
</div>
</div>
<footer class="footer">
<div class="footer__inner">
<div class="copyright copyright--user">
 
<span>&copy;
2024
- CherryKitten</span><br>
 
<span onclick="alert('Nya!')">🐱</span></div>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<span><a href="/impressum">Impressum</a></span>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<a href="/rss.xml">RSS</a>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<img src="/buttons/antinft.gif" alt="Anti NFT">
<img src="/buttons/acab.gif" alt="ACAB">
<img src="/buttons/transnow2.gif" alt="Trans rights now">
</div>
</footer>
</div>
</body>
</html>

View file

@ -1,124 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>
Tag: birds | CherryKitten</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
<meta name="robots" content="noodp"/>
<link rel="stylesheet" href="https://cherrykitten.dev/style.css">
<link rel="stylesheet" href="https://cherrykitten.dev/color.css">
<link rel="alternate" type="application/rss+xml" title="RSS" href="https://cherrykitten.dev/ rss.xml
">
</head>
<body class="">
<div class="container">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="https://cherrykitten.dev" style="text-decoration: none;">
<div class="logo">
CherryKitten
</div>
</a>
</div>
</div>
<nav class="menu">
<ul class="menu__inner">
<li class="active"><a href="https://cherrykitten.dev">Home</a></li>
<li><a href="https://cherrykitten.dev/about">About me</a></li>
<li><a href="https://cherrykitten.dev/blog">Blog</a></li>
<li><a href="https://cherrykitten.dev/cv">CV</a></li>
<li><a href="https://cherrykitten.dev/contact">Contact</a></li>
</ul>
</nav>
</header>
<div class="content">
<div class="post">
<h1 class="post-title">
tag: #birds
(1 post)
</h1>
<a href="https://cherrykitten.dev/tags">
Show all tags
</a>
<ul><li class="post-list">
<a href="https://cherrykitten.dev/blog/birds/">
<span class="post-date">2024-03-26</span>
:: <span class="post-list-title">Birds.</span></a>
<span class="post-tags-inline">
::
<a class="post-tag" href="https://cherrykitten.dev/tags/animals/">#animals</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/birds/">#birds</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/nature/">#nature</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/society/">#society</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/politics/">#politics</a></span>
</li>
</ul>
</div>
</div>
<footer class="footer">
<div class="footer__inner">
<div class="copyright copyright--user">
 
<span>&copy;
2024
- CherryKitten</span><br>
 
<span onclick="alert('Nya!')">🐱</span></div>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<span><a href="/impressum">Impressum</a></span>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<a href="/rss.xml">RSS</a>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<img src="/buttons/antinft.gif" alt="Anti NFT">
<img src="/buttons/acab.gif" alt="ACAB">
<img src="/buttons/transnow2.gif" alt="Trans rights now">
</div>
</footer>
</div>
</body>
</html>

View file

@ -1,124 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>
Tag: Calckey | CherryKitten</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
<meta name="robots" content="noodp"/>
<link rel="stylesheet" href="https://cherrykitten.dev/style.css">
<link rel="stylesheet" href="https://cherrykitten.dev/color.css">
<link rel="alternate" type="application/rss+xml" title="RSS" href="https://cherrykitten.dev/ rss.xml
">
</head>
<body class="">
<div class="container">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="https://cherrykitten.dev" style="text-decoration: none;">
<div class="logo">
CherryKitten
</div>
</a>
</div>
</div>
<nav class="menu">
<ul class="menu__inner">
<li class="active"><a href="https://cherrykitten.dev">Home</a></li>
<li><a href="https://cherrykitten.dev/about">About me</a></li>
<li><a href="https://cherrykitten.dev/blog">Blog</a></li>
<li><a href="https://cherrykitten.dev/cv">CV</a></li>
<li><a href="https://cherrykitten.dev/contact">Contact</a></li>
</ul>
</nav>
</header>
<div class="content">
<div class="post">
<h1 class="post-title">
tag: #Calckey
(1 post)
</h1>
<a href="https://cherrykitten.dev/tags">
Show all tags
</a>
<ul><li class="post-list">
<a href="https://cherrykitten.dev/blog/fediverse-isnt-just-mastodon/">
<span class="post-date">2022-11-26</span>
:: <span class="post-list-title">The Fediverse is more than just Mastodon</span></a>
<span class="post-tags-inline">
::
<a class="post-tag" href="https://cherrykitten.dev/tags/fediverse/">#Fediverse</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/mastodon/">#Mastodon</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/misskey/">#Misskey</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/calckey/">#Calckey</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/activitypub/">#ActivityPub</a></span>
</li>
</ul>
</div>
</div>
<footer class="footer">
<div class="footer__inner">
<div class="copyright copyright--user">
 
<span>&copy;
2024
- CherryKitten</span><br>
 
<span onclick="alert('Nya!')">🐱</span></div>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<span><a href="/impressum">Impressum</a></span>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<a href="/rss.xml">RSS</a>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<img src="/buttons/antinft.gif" alt="Anti NFT">
<img src="/buttons/acab.gif" alt="ACAB">
<img src="/buttons/transnow2.gif" alt="Trans rights now">
</div>
</footer>
</div>
</body>
</html>

View file

@ -1,128 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>
Tag: cat | CherryKitten</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
<meta name="robots" content="noodp"/>
<link rel="stylesheet" href="https://cherrykitten.dev/style.css">
<link rel="stylesheet" href="https://cherrykitten.dev/color.css">
<link rel="alternate" type="application/rss+xml" title="RSS" href="https://cherrykitten.dev/ rss.xml
">
</head>
<body class="">
<div class="container">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="https://cherrykitten.dev" style="text-decoration: none;">
<div class="logo">
CherryKitten
</div>
</a>
</div>
</div>
<nav class="menu">
<ul class="menu__inner">
<li class="active"><a href="https://cherrykitten.dev">Home</a></li>
<li><a href="https://cherrykitten.dev/about">About me</a></li>
<li><a href="https://cherrykitten.dev/blog">Blog</a></li>
<li><a href="https://cherrykitten.dev/cv">CV</a></li>
<li><a href="https://cherrykitten.dev/contact">Contact</a></li>
</ul>
</nav>
</header>
<div class="content">
<div class="post">
<h1 class="post-title">
tag: #cat
(1 post)
</h1>
<a href="https://cherrykitten.dev/tags">
Show all tags
</a>
<ul><li class="post-list">
<a href="https://cherrykitten.dev/blog/being-queer-and-otherkin/">
<span class="post-date">2023-06-09</span>
:: <span class="post-list-title">Being Queer and Otherkin</span></a>
<span class="post-tags-inline">
::
<a class="post-tag" href="https://cherrykitten.dev/tags/personal/">#personal</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/queerness/">#queerness</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/otherkin/">#otherkin</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/neurodivergency/">#neurodivergency</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/autism/">#autism</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/cat/">#cat</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/nya/">#nya</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/meow/">#meow</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/gender/">#gender</a></span>
</li>
</ul>
</div>
</div>
<footer class="footer">
<div class="footer__inner">
<div class="copyright copyright--user">
 
<span>&copy;
2024
- CherryKitten</span><br>
 
<span onclick="alert('Nya!')">🐱</span></div>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<span><a href="/impressum">Impressum</a></span>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<a href="/rss.xml">RSS</a>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<img src="/buttons/antinft.gif" alt="Anti NFT">
<img src="/buttons/acab.gif" alt="ACAB">
<img src="/buttons/transnow2.gif" alt="Trans rights now">
</div>
</footer>
</div>
</body>
</html>

View file

@ -1,123 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>
Tag: code | CherryKitten</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
<meta name="robots" content="noodp"/>
<link rel="stylesheet" href="https://cherrykitten.dev/style.css">
<link rel="stylesheet" href="https://cherrykitten.dev/color.css">
<link rel="alternate" type="application/rss+xml" title="RSS" href="https://cherrykitten.dev/ rss.xml
">
</head>
<body class="">
<div class="container">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="https://cherrykitten.dev" style="text-decoration: none;">
<div class="logo">
CherryKitten
</div>
</a>
</div>
</div>
<nav class="menu">
<ul class="menu__inner">
<li class="active"><a href="https://cherrykitten.dev">Home</a></li>
<li><a href="https://cherrykitten.dev/about">About me</a></li>
<li><a href="https://cherrykitten.dev/blog">Blog</a></li>
<li><a href="https://cherrykitten.dev/cv">CV</a></li>
<li><a href="https://cherrykitten.dev/contact">Contact</a></li>
</ul>
</nav>
</header>
<div class="content">
<div class="post">
<h1 class="post-title">
tag: #code
(1 post)
</h1>
<a href="https://cherrykitten.dev/tags">
Show all tags
</a>
<ul><li class="post-list">
<a href="https://cherrykitten.dev/blog/rust-options-results/">
<span class="post-date">2023-02-25</span>
:: <span class="post-list-title">Learning Rust: A kitten&#x27;s guide to Options and Results</span></a>
<span class="post-tags-inline">
::
<a class="post-tag" href="https://cherrykitten.dev/tags/rust/">#Rust</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/programming/">#programming</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/code/">#code</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/learning/">#learning</a></span>
</li>
</ul>
</div>
</div>
<footer class="footer">
<div class="footer__inner">
<div class="copyright copyright--user">
 
<span>&copy;
2024
- CherryKitten</span><br>
 
<span onclick="alert('Nya!')">🐱</span></div>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<span><a href="/impressum">Impressum</a></span>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<a href="/rss.xml">RSS</a>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<img src="/buttons/antinft.gif" alt="Anti NFT">
<img src="/buttons/acab.gif" alt="ACAB">
<img src="/buttons/transnow2.gif" alt="Trans rights now">
</div>
</footer>
</div>
</body>
</html>

View file

@ -1,124 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>
Tag: Fediverse | CherryKitten</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
<meta name="robots" content="noodp"/>
<link rel="stylesheet" href="https://cherrykitten.dev/style.css">
<link rel="stylesheet" href="https://cherrykitten.dev/color.css">
<link rel="alternate" type="application/rss+xml" title="RSS" href="https://cherrykitten.dev/ rss.xml
">
</head>
<body class="">
<div class="container">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="https://cherrykitten.dev" style="text-decoration: none;">
<div class="logo">
CherryKitten
</div>
</a>
</div>
</div>
<nav class="menu">
<ul class="menu__inner">
<li class="active"><a href="https://cherrykitten.dev">Home</a></li>
<li><a href="https://cherrykitten.dev/about">About me</a></li>
<li><a href="https://cherrykitten.dev/blog">Blog</a></li>
<li><a href="https://cherrykitten.dev/cv">CV</a></li>
<li><a href="https://cherrykitten.dev/contact">Contact</a></li>
</ul>
</nav>
</header>
<div class="content">
<div class="post">
<h1 class="post-title">
tag: #Fediverse
(1 post)
</h1>
<a href="https://cherrykitten.dev/tags">
Show all tags
</a>
<ul><li class="post-list">
<a href="https://cherrykitten.dev/blog/fediverse-isnt-just-mastodon/">
<span class="post-date">2022-11-26</span>
:: <span class="post-list-title">The Fediverse is more than just Mastodon</span></a>
<span class="post-tags-inline">
::
<a class="post-tag" href="https://cherrykitten.dev/tags/fediverse/">#Fediverse</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/mastodon/">#Mastodon</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/misskey/">#Misskey</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/calckey/">#Calckey</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/activitypub/">#ActivityPub</a></span>
</li>
</ul>
</div>
</div>
<footer class="footer">
<div class="footer__inner">
<div class="copyright copyright--user">
 
<span>&copy;
2024
- CherryKitten</span><br>
 
<span onclick="alert('Nya!')">🐱</span></div>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<span><a href="/impressum">Impressum</a></span>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<a href="/rss.xml">RSS</a>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<img src="/buttons/antinft.gif" alt="Anti NFT">
<img src="/buttons/acab.gif" alt="ACAB">
<img src="/buttons/transnow2.gif" alt="Trans rights now">
</div>
</footer>
</div>
</body>
</html>

View file

@ -1,128 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>
Tag: gender | CherryKitten</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
<meta name="robots" content="noodp"/>
<link rel="stylesheet" href="https://cherrykitten.dev/style.css">
<link rel="stylesheet" href="https://cherrykitten.dev/color.css">
<link rel="alternate" type="application/rss+xml" title="RSS" href="https://cherrykitten.dev/ rss.xml
">
</head>
<body class="">
<div class="container">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="https://cherrykitten.dev" style="text-decoration: none;">
<div class="logo">
CherryKitten
</div>
</a>
</div>
</div>
<nav class="menu">
<ul class="menu__inner">
<li class="active"><a href="https://cherrykitten.dev">Home</a></li>
<li><a href="https://cherrykitten.dev/about">About me</a></li>
<li><a href="https://cherrykitten.dev/blog">Blog</a></li>
<li><a href="https://cherrykitten.dev/cv">CV</a></li>
<li><a href="https://cherrykitten.dev/contact">Contact</a></li>
</ul>
</nav>
</header>
<div class="content">
<div class="post">
<h1 class="post-title">
tag: #gender
(1 post)
</h1>
<a href="https://cherrykitten.dev/tags">
Show all tags
</a>
<ul><li class="post-list">
<a href="https://cherrykitten.dev/blog/being-queer-and-otherkin/">
<span class="post-date">2023-06-09</span>
:: <span class="post-list-title">Being Queer and Otherkin</span></a>
<span class="post-tags-inline">
::
<a class="post-tag" href="https://cherrykitten.dev/tags/personal/">#personal</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/queerness/">#queerness</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/otherkin/">#otherkin</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/neurodivergency/">#neurodivergency</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/autism/">#autism</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/cat/">#cat</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/nya/">#nya</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/meow/">#meow</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/gender/">#gender</a></span>
</li>
</ul>
</div>
</div>
<footer class="footer">
<div class="footer__inner">
<div class="copyright copyright--user">
 
<span>&copy;
2024
- CherryKitten</span><br>
 
<span onclick="alert('Nya!')">🐱</span></div>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<span><a href="/impressum">Impressum</a></span>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<a href="/rss.xml">RSS</a>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<img src="/buttons/antinft.gif" alt="Anti NFT">
<img src="/buttons/acab.gif" alt="ACAB">
<img src="/buttons/transnow2.gif" alt="Trans rights now">
</div>
</footer>
</div>
</body>
</html>

View file

@ -1,240 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Tags | CherryKitten</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
<meta name="robots" content="noodp"/>
<link rel="stylesheet" href="https://cherrykitten.dev/style.css">
<link rel="stylesheet" href="https://cherrykitten.dev/color.css">
<link rel="alternate" type="application/rss+xml" title="RSS" href="https://cherrykitten.dev/ rss.xml
">
</head>
<body class="">
<div class="container">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="https://cherrykitten.dev" style="text-decoration: none;">
<div class="logo">
CherryKitten
</div>
</a>
</div>
</div>
<nav class="menu">
<ul class="menu__inner">
<li class="active"><a href="https://cherrykitten.dev">Home</a></li>
<li><a href="https://cherrykitten.dev/about">About me</a></li>
<li><a href="https://cherrykitten.dev/blog">Blog</a></li>
<li><a href="https://cherrykitten.dev/cv">CV</a></li>
<li><a href="https://cherrykitten.dev/contact">Contact</a></li>
</ul>
</nav>
</header>
<div class="content">
<div class="post">
<h1 class="post-title">all tags</h1>
<ul>
<li class="tag-list">
<a href="https://cherrykitten.dev/tags/activitypub/">
ActivityPub (1 post)
</a>
</li>
<li class="tag-list">
<a href="https://cherrykitten.dev/tags/animals/">
animals (1 post)
</a>
</li>
<li class="tag-list">
<a href="https://cherrykitten.dev/tags/autism/">
autism (1 post)
</a>
</li>
<li class="tag-list">
<a href="https://cherrykitten.dev/tags/birds/">
birds (1 post)
</a>
</li>
<li class="tag-list">
<a href="https://cherrykitten.dev/tags/calckey/">
Calckey (1 post)
</a>
</li>
<li class="tag-list">
<a href="https://cherrykitten.dev/tags/cat/">
cat (1 post)
</a>
</li>
<li class="tag-list">
<a href="https://cherrykitten.dev/tags/code/">
code (1 post)
</a>
</li>
<li class="tag-list">
<a href="https://cherrykitten.dev/tags/fediverse/">
Fediverse (1 post)
</a>
</li>
<li class="tag-list">
<a href="https://cherrykitten.dev/tags/gender/">
gender (1 post)
</a>
</li>
<li class="tag-list">
<a href="https://cherrykitten.dev/tags/learning/">
learning (1 post)
</a>
</li>
<li class="tag-list">
<a href="https://cherrykitten.dev/tags/mastodon/">
Mastodon (1 post)
</a>
</li>
<li class="tag-list">
<a href="https://cherrykitten.dev/tags/meow/">
meow (1 post)
</a>
</li>
<li class="tag-list">
<a href="https://cherrykitten.dev/tags/misskey/">
Misskey (1 post)
</a>
</li>
<li class="tag-list">
<a href="https://cherrykitten.dev/tags/nature/">
nature (1 post)
</a>
</li>
<li class="tag-list">
<a href="https://cherrykitten.dev/tags/neurodivergency/">
neurodivergency (1 post)
</a>
</li>
<li class="tag-list">
<a href="https://cherrykitten.dev/tags/nya/">
nya (1 post)
</a>
</li>
<li class="tag-list">
<a href="https://cherrykitten.dev/tags/otherkin/">
otherkin (1 post)
</a>
</li>
<li class="tag-list">
<a href="https://cherrykitten.dev/tags/personal/">
personal (1 post)
</a>
</li>
<li class="tag-list">
<a href="https://cherrykitten.dev/tags/politics/">
politics (1 post)
</a>
</li>
<li class="tag-list">
<a href="https://cherrykitten.dev/tags/programming/">
programming (1 post)
</a>
</li>
<li class="tag-list">
<a href="https://cherrykitten.dev/tags/queerness/">
queerness (1 post)
</a>
</li>
<li class="tag-list">
<a href="https://cherrykitten.dev/tags/rust/">
Rust (1 post)
</a>
</li>
<li class="tag-list">
<a href="https://cherrykitten.dev/tags/society/">
society (1 post)
</a>
</li>
</ul>
</div>
</div>
<footer class="footer">
<div class="footer__inner">
<div class="copyright copyright--user">
 
<span>&copy;
2024
- CherryKitten</span><br>
 
<span onclick="alert('Nya!')">🐱</span></div>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<span><a href="/impressum">Impressum</a></span>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<a href="/rss.xml">RSS</a>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<img src="/buttons/antinft.gif" alt="Anti NFT">
<img src="/buttons/acab.gif" alt="ACAB">
<img src="/buttons/transnow2.gif" alt="Trans rights now">
</div>
</footer>
</div>
</body>
</html>

View file

@ -1,123 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>
Tag: learning | CherryKitten</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
<meta name="robots" content="noodp"/>
<link rel="stylesheet" href="https://cherrykitten.dev/style.css">
<link rel="stylesheet" href="https://cherrykitten.dev/color.css">
<link rel="alternate" type="application/rss+xml" title="RSS" href="https://cherrykitten.dev/ rss.xml
">
</head>
<body class="">
<div class="container">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="https://cherrykitten.dev" style="text-decoration: none;">
<div class="logo">
CherryKitten
</div>
</a>
</div>
</div>
<nav class="menu">
<ul class="menu__inner">
<li class="active"><a href="https://cherrykitten.dev">Home</a></li>
<li><a href="https://cherrykitten.dev/about">About me</a></li>
<li><a href="https://cherrykitten.dev/blog">Blog</a></li>
<li><a href="https://cherrykitten.dev/cv">CV</a></li>
<li><a href="https://cherrykitten.dev/contact">Contact</a></li>
</ul>
</nav>
</header>
<div class="content">
<div class="post">
<h1 class="post-title">
tag: #learning
(1 post)
</h1>
<a href="https://cherrykitten.dev/tags">
Show all tags
</a>
<ul><li class="post-list">
<a href="https://cherrykitten.dev/blog/rust-options-results/">
<span class="post-date">2023-02-25</span>
:: <span class="post-list-title">Learning Rust: A kitten&#x27;s guide to Options and Results</span></a>
<span class="post-tags-inline">
::
<a class="post-tag" href="https://cherrykitten.dev/tags/rust/">#Rust</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/programming/">#programming</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/code/">#code</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/learning/">#learning</a></span>
</li>
</ul>
</div>
</div>
<footer class="footer">
<div class="footer__inner">
<div class="copyright copyright--user">
 
<span>&copy;
2024
- CherryKitten</span><br>
 
<span onclick="alert('Nya!')">🐱</span></div>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<span><a href="/impressum">Impressum</a></span>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<a href="/rss.xml">RSS</a>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<img src="/buttons/antinft.gif" alt="Anti NFT">
<img src="/buttons/acab.gif" alt="ACAB">
<img src="/buttons/transnow2.gif" alt="Trans rights now">
</div>
</footer>
</div>
</body>
</html>

View file

@ -1,124 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>
Tag: Mastodon | CherryKitten</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
<meta name="robots" content="noodp"/>
<link rel="stylesheet" href="https://cherrykitten.dev/style.css">
<link rel="stylesheet" href="https://cherrykitten.dev/color.css">
<link rel="alternate" type="application/rss+xml" title="RSS" href="https://cherrykitten.dev/ rss.xml
">
</head>
<body class="">
<div class="container">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="https://cherrykitten.dev" style="text-decoration: none;">
<div class="logo">
CherryKitten
</div>
</a>
</div>
</div>
<nav class="menu">
<ul class="menu__inner">
<li class="active"><a href="https://cherrykitten.dev">Home</a></li>
<li><a href="https://cherrykitten.dev/about">About me</a></li>
<li><a href="https://cherrykitten.dev/blog">Blog</a></li>
<li><a href="https://cherrykitten.dev/cv">CV</a></li>
<li><a href="https://cherrykitten.dev/contact">Contact</a></li>
</ul>
</nav>
</header>
<div class="content">
<div class="post">
<h1 class="post-title">
tag: #Mastodon
(1 post)
</h1>
<a href="https://cherrykitten.dev/tags">
Show all tags
</a>
<ul><li class="post-list">
<a href="https://cherrykitten.dev/blog/fediverse-isnt-just-mastodon/">
<span class="post-date">2022-11-26</span>
:: <span class="post-list-title">The Fediverse is more than just Mastodon</span></a>
<span class="post-tags-inline">
::
<a class="post-tag" href="https://cherrykitten.dev/tags/fediverse/">#Fediverse</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/mastodon/">#Mastodon</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/misskey/">#Misskey</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/calckey/">#Calckey</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/activitypub/">#ActivityPub</a></span>
</li>
</ul>
</div>
</div>
<footer class="footer">
<div class="footer__inner">
<div class="copyright copyright--user">
 
<span>&copy;
2024
- CherryKitten</span><br>
 
<span onclick="alert('Nya!')">🐱</span></div>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<span><a href="/impressum">Impressum</a></span>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<a href="/rss.xml">RSS</a>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<img src="/buttons/antinft.gif" alt="Anti NFT">
<img src="/buttons/acab.gif" alt="ACAB">
<img src="/buttons/transnow2.gif" alt="Trans rights now">
</div>
</footer>
</div>
</body>
</html>

View file

@ -1,128 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>
Tag: meow | CherryKitten</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
<meta name="robots" content="noodp"/>
<link rel="stylesheet" href="https://cherrykitten.dev/style.css">
<link rel="stylesheet" href="https://cherrykitten.dev/color.css">
<link rel="alternate" type="application/rss+xml" title="RSS" href="https://cherrykitten.dev/ rss.xml
">
</head>
<body class="">
<div class="container">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="https://cherrykitten.dev" style="text-decoration: none;">
<div class="logo">
CherryKitten
</div>
</a>
</div>
</div>
<nav class="menu">
<ul class="menu__inner">
<li class="active"><a href="https://cherrykitten.dev">Home</a></li>
<li><a href="https://cherrykitten.dev/about">About me</a></li>
<li><a href="https://cherrykitten.dev/blog">Blog</a></li>
<li><a href="https://cherrykitten.dev/cv">CV</a></li>
<li><a href="https://cherrykitten.dev/contact">Contact</a></li>
</ul>
</nav>
</header>
<div class="content">
<div class="post">
<h1 class="post-title">
tag: #meow
(1 post)
</h1>
<a href="https://cherrykitten.dev/tags">
Show all tags
</a>
<ul><li class="post-list">
<a href="https://cherrykitten.dev/blog/being-queer-and-otherkin/">
<span class="post-date">2023-06-09</span>
:: <span class="post-list-title">Being Queer and Otherkin</span></a>
<span class="post-tags-inline">
::
<a class="post-tag" href="https://cherrykitten.dev/tags/personal/">#personal</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/queerness/">#queerness</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/otherkin/">#otherkin</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/neurodivergency/">#neurodivergency</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/autism/">#autism</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/cat/">#cat</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/nya/">#nya</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/meow/">#meow</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/gender/">#gender</a></span>
</li>
</ul>
</div>
</div>
<footer class="footer">
<div class="footer__inner">
<div class="copyright copyright--user">
 
<span>&copy;
2024
- CherryKitten</span><br>
 
<span onclick="alert('Nya!')">🐱</span></div>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<span><a href="/impressum">Impressum</a></span>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<a href="/rss.xml">RSS</a>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<img src="/buttons/antinft.gif" alt="Anti NFT">
<img src="/buttons/acab.gif" alt="ACAB">
<img src="/buttons/transnow2.gif" alt="Trans rights now">
</div>
</footer>
</div>
</body>
</html>

View file

@ -1,124 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>
Tag: Misskey | CherryKitten</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
<meta name="robots" content="noodp"/>
<link rel="stylesheet" href="https://cherrykitten.dev/style.css">
<link rel="stylesheet" href="https://cherrykitten.dev/color.css">
<link rel="alternate" type="application/rss+xml" title="RSS" href="https://cherrykitten.dev/ rss.xml
">
</head>
<body class="">
<div class="container">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="https://cherrykitten.dev" style="text-decoration: none;">
<div class="logo">
CherryKitten
</div>
</a>
</div>
</div>
<nav class="menu">
<ul class="menu__inner">
<li class="active"><a href="https://cherrykitten.dev">Home</a></li>
<li><a href="https://cherrykitten.dev/about">About me</a></li>
<li><a href="https://cherrykitten.dev/blog">Blog</a></li>
<li><a href="https://cherrykitten.dev/cv">CV</a></li>
<li><a href="https://cherrykitten.dev/contact">Contact</a></li>
</ul>
</nav>
</header>
<div class="content">
<div class="post">
<h1 class="post-title">
tag: #Misskey
(1 post)
</h1>
<a href="https://cherrykitten.dev/tags">
Show all tags
</a>
<ul><li class="post-list">
<a href="https://cherrykitten.dev/blog/fediverse-isnt-just-mastodon/">
<span class="post-date">2022-11-26</span>
:: <span class="post-list-title">The Fediverse is more than just Mastodon</span></a>
<span class="post-tags-inline">
::
<a class="post-tag" href="https://cherrykitten.dev/tags/fediverse/">#Fediverse</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/mastodon/">#Mastodon</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/misskey/">#Misskey</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/calckey/">#Calckey</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/activitypub/">#ActivityPub</a></span>
</li>
</ul>
</div>
</div>
<footer class="footer">
<div class="footer__inner">
<div class="copyright copyright--user">
 
<span>&copy;
2024
- CherryKitten</span><br>
 
<span onclick="alert('Nya!')">🐱</span></div>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<span><a href="/impressum">Impressum</a></span>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<a href="/rss.xml">RSS</a>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<img src="/buttons/antinft.gif" alt="Anti NFT">
<img src="/buttons/acab.gif" alt="ACAB">
<img src="/buttons/transnow2.gif" alt="Trans rights now">
</div>
</footer>
</div>
</body>
</html>

View file

@ -1,124 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>
Tag: nature | CherryKitten</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
<meta name="robots" content="noodp"/>
<link rel="stylesheet" href="https://cherrykitten.dev/style.css">
<link rel="stylesheet" href="https://cherrykitten.dev/color.css">
<link rel="alternate" type="application/rss+xml" title="RSS" href="https://cherrykitten.dev/ rss.xml
">
</head>
<body class="">
<div class="container">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="https://cherrykitten.dev" style="text-decoration: none;">
<div class="logo">
CherryKitten
</div>
</a>
</div>
</div>
<nav class="menu">
<ul class="menu__inner">
<li class="active"><a href="https://cherrykitten.dev">Home</a></li>
<li><a href="https://cherrykitten.dev/about">About me</a></li>
<li><a href="https://cherrykitten.dev/blog">Blog</a></li>
<li><a href="https://cherrykitten.dev/cv">CV</a></li>
<li><a href="https://cherrykitten.dev/contact">Contact</a></li>
</ul>
</nav>
</header>
<div class="content">
<div class="post">
<h1 class="post-title">
tag: #nature
(1 post)
</h1>
<a href="https://cherrykitten.dev/tags">
Show all tags
</a>
<ul><li class="post-list">
<a href="https://cherrykitten.dev/blog/birds/">
<span class="post-date">2024-03-26</span>
:: <span class="post-list-title">Birds.</span></a>
<span class="post-tags-inline">
::
<a class="post-tag" href="https://cherrykitten.dev/tags/animals/">#animals</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/birds/">#birds</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/nature/">#nature</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/society/">#society</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/politics/">#politics</a></span>
</li>
</ul>
</div>
</div>
<footer class="footer">
<div class="footer__inner">
<div class="copyright copyright--user">
 
<span>&copy;
2024
- CherryKitten</span><br>
 
<span onclick="alert('Nya!')">🐱</span></div>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<span><a href="/impressum">Impressum</a></span>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<a href="/rss.xml">RSS</a>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<img src="/buttons/antinft.gif" alt="Anti NFT">
<img src="/buttons/acab.gif" alt="ACAB">
<img src="/buttons/transnow2.gif" alt="Trans rights now">
</div>
</footer>
</div>
</body>
</html>

View file

@ -1,128 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>
Tag: neurodivergency | CherryKitten</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
<meta name="robots" content="noodp"/>
<link rel="stylesheet" href="https://cherrykitten.dev/style.css">
<link rel="stylesheet" href="https://cherrykitten.dev/color.css">
<link rel="alternate" type="application/rss+xml" title="RSS" href="https://cherrykitten.dev/ rss.xml
">
</head>
<body class="">
<div class="container">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="https://cherrykitten.dev" style="text-decoration: none;">
<div class="logo">
CherryKitten
</div>
</a>
</div>
</div>
<nav class="menu">
<ul class="menu__inner">
<li class="active"><a href="https://cherrykitten.dev">Home</a></li>
<li><a href="https://cherrykitten.dev/about">About me</a></li>
<li><a href="https://cherrykitten.dev/blog">Blog</a></li>
<li><a href="https://cherrykitten.dev/cv">CV</a></li>
<li><a href="https://cherrykitten.dev/contact">Contact</a></li>
</ul>
</nav>
</header>
<div class="content">
<div class="post">
<h1 class="post-title">
tag: #neurodivergency
(1 post)
</h1>
<a href="https://cherrykitten.dev/tags">
Show all tags
</a>
<ul><li class="post-list">
<a href="https://cherrykitten.dev/blog/being-queer-and-otherkin/">
<span class="post-date">2023-06-09</span>
:: <span class="post-list-title">Being Queer and Otherkin</span></a>
<span class="post-tags-inline">
::
<a class="post-tag" href="https://cherrykitten.dev/tags/personal/">#personal</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/queerness/">#queerness</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/otherkin/">#otherkin</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/neurodivergency/">#neurodivergency</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/autism/">#autism</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/cat/">#cat</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/nya/">#nya</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/meow/">#meow</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/gender/">#gender</a></span>
</li>
</ul>
</div>
</div>
<footer class="footer">
<div class="footer__inner">
<div class="copyright copyright--user">
 
<span>&copy;
2024
- CherryKitten</span><br>
 
<span onclick="alert('Nya!')">🐱</span></div>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<span><a href="/impressum">Impressum</a></span>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<a href="/rss.xml">RSS</a>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<img src="/buttons/antinft.gif" alt="Anti NFT">
<img src="/buttons/acab.gif" alt="ACAB">
<img src="/buttons/transnow2.gif" alt="Trans rights now">
</div>
</footer>
</div>
</body>
</html>

View file

@ -1,128 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>
Tag: nya | CherryKitten</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
<meta name="robots" content="noodp"/>
<link rel="stylesheet" href="https://cherrykitten.dev/style.css">
<link rel="stylesheet" href="https://cherrykitten.dev/color.css">
<link rel="alternate" type="application/rss+xml" title="RSS" href="https://cherrykitten.dev/ rss.xml
">
</head>
<body class="">
<div class="container">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="https://cherrykitten.dev" style="text-decoration: none;">
<div class="logo">
CherryKitten
</div>
</a>
</div>
</div>
<nav class="menu">
<ul class="menu__inner">
<li class="active"><a href="https://cherrykitten.dev">Home</a></li>
<li><a href="https://cherrykitten.dev/about">About me</a></li>
<li><a href="https://cherrykitten.dev/blog">Blog</a></li>
<li><a href="https://cherrykitten.dev/cv">CV</a></li>
<li><a href="https://cherrykitten.dev/contact">Contact</a></li>
</ul>
</nav>
</header>
<div class="content">
<div class="post">
<h1 class="post-title">
tag: #nya
(1 post)
</h1>
<a href="https://cherrykitten.dev/tags">
Show all tags
</a>
<ul><li class="post-list">
<a href="https://cherrykitten.dev/blog/being-queer-and-otherkin/">
<span class="post-date">2023-06-09</span>
:: <span class="post-list-title">Being Queer and Otherkin</span></a>
<span class="post-tags-inline">
::
<a class="post-tag" href="https://cherrykitten.dev/tags/personal/">#personal</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/queerness/">#queerness</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/otherkin/">#otherkin</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/neurodivergency/">#neurodivergency</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/autism/">#autism</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/cat/">#cat</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/nya/">#nya</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/meow/">#meow</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/gender/">#gender</a></span>
</li>
</ul>
</div>
</div>
<footer class="footer">
<div class="footer__inner">
<div class="copyright copyright--user">
 
<span>&copy;
2024
- CherryKitten</span><br>
 
<span onclick="alert('Nya!')">🐱</span></div>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<span><a href="/impressum">Impressum</a></span>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<a href="/rss.xml">RSS</a>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<img src="/buttons/antinft.gif" alt="Anti NFT">
<img src="/buttons/acab.gif" alt="ACAB">
<img src="/buttons/transnow2.gif" alt="Trans rights now">
</div>
</footer>
</div>
</body>
</html>

View file

@ -1,128 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>
Tag: otherkin | CherryKitten</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
<meta name="robots" content="noodp"/>
<link rel="stylesheet" href="https://cherrykitten.dev/style.css">
<link rel="stylesheet" href="https://cherrykitten.dev/color.css">
<link rel="alternate" type="application/rss+xml" title="RSS" href="https://cherrykitten.dev/ rss.xml
">
</head>
<body class="">
<div class="container">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="https://cherrykitten.dev" style="text-decoration: none;">
<div class="logo">
CherryKitten
</div>
</a>
</div>
</div>
<nav class="menu">
<ul class="menu__inner">
<li class="active"><a href="https://cherrykitten.dev">Home</a></li>
<li><a href="https://cherrykitten.dev/about">About me</a></li>
<li><a href="https://cherrykitten.dev/blog">Blog</a></li>
<li><a href="https://cherrykitten.dev/cv">CV</a></li>
<li><a href="https://cherrykitten.dev/contact">Contact</a></li>
</ul>
</nav>
</header>
<div class="content">
<div class="post">
<h1 class="post-title">
tag: #otherkin
(1 post)
</h1>
<a href="https://cherrykitten.dev/tags">
Show all tags
</a>
<ul><li class="post-list">
<a href="https://cherrykitten.dev/blog/being-queer-and-otherkin/">
<span class="post-date">2023-06-09</span>
:: <span class="post-list-title">Being Queer and Otherkin</span></a>
<span class="post-tags-inline">
::
<a class="post-tag" href="https://cherrykitten.dev/tags/personal/">#personal</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/queerness/">#queerness</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/otherkin/">#otherkin</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/neurodivergency/">#neurodivergency</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/autism/">#autism</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/cat/">#cat</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/nya/">#nya</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/meow/">#meow</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/gender/">#gender</a></span>
</li>
</ul>
</div>
</div>
<footer class="footer">
<div class="footer__inner">
<div class="copyright copyright--user">
 
<span>&copy;
2024
- CherryKitten</span><br>
 
<span onclick="alert('Nya!')">🐱</span></div>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<span><a href="/impressum">Impressum</a></span>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<a href="/rss.xml">RSS</a>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<img src="/buttons/antinft.gif" alt="Anti NFT">
<img src="/buttons/acab.gif" alt="ACAB">
<img src="/buttons/transnow2.gif" alt="Trans rights now">
</div>
</footer>
</div>
</body>
</html>

View file

@ -1,128 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>
Tag: personal | CherryKitten</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
<meta name="robots" content="noodp"/>
<link rel="stylesheet" href="https://cherrykitten.dev/style.css">
<link rel="stylesheet" href="https://cherrykitten.dev/color.css">
<link rel="alternate" type="application/rss+xml" title="RSS" href="https://cherrykitten.dev/ rss.xml
">
</head>
<body class="">
<div class="container">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="https://cherrykitten.dev" style="text-decoration: none;">
<div class="logo">
CherryKitten
</div>
</a>
</div>
</div>
<nav class="menu">
<ul class="menu__inner">
<li class="active"><a href="https://cherrykitten.dev">Home</a></li>
<li><a href="https://cherrykitten.dev/about">About me</a></li>
<li><a href="https://cherrykitten.dev/blog">Blog</a></li>
<li><a href="https://cherrykitten.dev/cv">CV</a></li>
<li><a href="https://cherrykitten.dev/contact">Contact</a></li>
</ul>
</nav>
</header>
<div class="content">
<div class="post">
<h1 class="post-title">
tag: #personal
(1 post)
</h1>
<a href="https://cherrykitten.dev/tags">
Show all tags
</a>
<ul><li class="post-list">
<a href="https://cherrykitten.dev/blog/being-queer-and-otherkin/">
<span class="post-date">2023-06-09</span>
:: <span class="post-list-title">Being Queer and Otherkin</span></a>
<span class="post-tags-inline">
::
<a class="post-tag" href="https://cherrykitten.dev/tags/personal/">#personal</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/queerness/">#queerness</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/otherkin/">#otherkin</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/neurodivergency/">#neurodivergency</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/autism/">#autism</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/cat/">#cat</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/nya/">#nya</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/meow/">#meow</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/gender/">#gender</a></span>
</li>
</ul>
</div>
</div>
<footer class="footer">
<div class="footer__inner">
<div class="copyright copyright--user">
 
<span>&copy;
2024
- CherryKitten</span><br>
 
<span onclick="alert('Nya!')">🐱</span></div>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<span><a href="/impressum">Impressum</a></span>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<a href="/rss.xml">RSS</a>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<img src="/buttons/antinft.gif" alt="Anti NFT">
<img src="/buttons/acab.gif" alt="ACAB">
<img src="/buttons/transnow2.gif" alt="Trans rights now">
</div>
</footer>
</div>
</body>
</html>

View file

@ -1,124 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>
Tag: politics | CherryKitten</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
<meta name="robots" content="noodp"/>
<link rel="stylesheet" href="https://cherrykitten.dev/style.css">
<link rel="stylesheet" href="https://cherrykitten.dev/color.css">
<link rel="alternate" type="application/rss+xml" title="RSS" href="https://cherrykitten.dev/ rss.xml
">
</head>
<body class="">
<div class="container">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="https://cherrykitten.dev" style="text-decoration: none;">
<div class="logo">
CherryKitten
</div>
</a>
</div>
</div>
<nav class="menu">
<ul class="menu__inner">
<li class="active"><a href="https://cherrykitten.dev">Home</a></li>
<li><a href="https://cherrykitten.dev/about">About me</a></li>
<li><a href="https://cherrykitten.dev/blog">Blog</a></li>
<li><a href="https://cherrykitten.dev/cv">CV</a></li>
<li><a href="https://cherrykitten.dev/contact">Contact</a></li>
</ul>
</nav>
</header>
<div class="content">
<div class="post">
<h1 class="post-title">
tag: #politics
(1 post)
</h1>
<a href="https://cherrykitten.dev/tags">
Show all tags
</a>
<ul><li class="post-list">
<a href="https://cherrykitten.dev/blog/birds/">
<span class="post-date">2024-03-26</span>
:: <span class="post-list-title">Birds.</span></a>
<span class="post-tags-inline">
::
<a class="post-tag" href="https://cherrykitten.dev/tags/animals/">#animals</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/birds/">#birds</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/nature/">#nature</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/society/">#society</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/politics/">#politics</a></span>
</li>
</ul>
</div>
</div>
<footer class="footer">
<div class="footer__inner">
<div class="copyright copyright--user">
 
<span>&copy;
2024
- CherryKitten</span><br>
 
<span onclick="alert('Nya!')">🐱</span></div>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<span><a href="/impressum">Impressum</a></span>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<a href="/rss.xml">RSS</a>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<img src="/buttons/antinft.gif" alt="Anti NFT">
<img src="/buttons/acab.gif" alt="ACAB">
<img src="/buttons/transnow2.gif" alt="Trans rights now">
</div>
</footer>
</div>
</body>
</html>

View file

@ -1,123 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>
Tag: programming | CherryKitten</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
<meta name="robots" content="noodp"/>
<link rel="stylesheet" href="https://cherrykitten.dev/style.css">
<link rel="stylesheet" href="https://cherrykitten.dev/color.css">
<link rel="alternate" type="application/rss+xml" title="RSS" href="https://cherrykitten.dev/ rss.xml
">
</head>
<body class="">
<div class="container">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="https://cherrykitten.dev" style="text-decoration: none;">
<div class="logo">
CherryKitten
</div>
</a>
</div>
</div>
<nav class="menu">
<ul class="menu__inner">
<li class="active"><a href="https://cherrykitten.dev">Home</a></li>
<li><a href="https://cherrykitten.dev/about">About me</a></li>
<li><a href="https://cherrykitten.dev/blog">Blog</a></li>
<li><a href="https://cherrykitten.dev/cv">CV</a></li>
<li><a href="https://cherrykitten.dev/contact">Contact</a></li>
</ul>
</nav>
</header>
<div class="content">
<div class="post">
<h1 class="post-title">
tag: #programming
(1 post)
</h1>
<a href="https://cherrykitten.dev/tags">
Show all tags
</a>
<ul><li class="post-list">
<a href="https://cherrykitten.dev/blog/rust-options-results/">
<span class="post-date">2023-02-25</span>
:: <span class="post-list-title">Learning Rust: A kitten&#x27;s guide to Options and Results</span></a>
<span class="post-tags-inline">
::
<a class="post-tag" href="https://cherrykitten.dev/tags/rust/">#Rust</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/programming/">#programming</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/code/">#code</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/learning/">#learning</a></span>
</li>
</ul>
</div>
</div>
<footer class="footer">
<div class="footer__inner">
<div class="copyright copyright--user">
 
<span>&copy;
2024
- CherryKitten</span><br>
 
<span onclick="alert('Nya!')">🐱</span></div>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<span><a href="/impressum">Impressum</a></span>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<a href="/rss.xml">RSS</a>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<img src="/buttons/antinft.gif" alt="Anti NFT">
<img src="/buttons/acab.gif" alt="ACAB">
<img src="/buttons/transnow2.gif" alt="Trans rights now">
</div>
</footer>
</div>
</body>
</html>

View file

@ -1,128 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>
Tag: queerness | CherryKitten</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
<meta name="robots" content="noodp"/>
<link rel="stylesheet" href="https://cherrykitten.dev/style.css">
<link rel="stylesheet" href="https://cherrykitten.dev/color.css">
<link rel="alternate" type="application/rss+xml" title="RSS" href="https://cherrykitten.dev/ rss.xml
">
</head>
<body class="">
<div class="container">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="https://cherrykitten.dev" style="text-decoration: none;">
<div class="logo">
CherryKitten
</div>
</a>
</div>
</div>
<nav class="menu">
<ul class="menu__inner">
<li class="active"><a href="https://cherrykitten.dev">Home</a></li>
<li><a href="https://cherrykitten.dev/about">About me</a></li>
<li><a href="https://cherrykitten.dev/blog">Blog</a></li>
<li><a href="https://cherrykitten.dev/cv">CV</a></li>
<li><a href="https://cherrykitten.dev/contact">Contact</a></li>
</ul>
</nav>
</header>
<div class="content">
<div class="post">
<h1 class="post-title">
tag: #queerness
(1 post)
</h1>
<a href="https://cherrykitten.dev/tags">
Show all tags
</a>
<ul><li class="post-list">
<a href="https://cherrykitten.dev/blog/being-queer-and-otherkin/">
<span class="post-date">2023-06-09</span>
:: <span class="post-list-title">Being Queer and Otherkin</span></a>
<span class="post-tags-inline">
::
<a class="post-tag" href="https://cherrykitten.dev/tags/personal/">#personal</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/queerness/">#queerness</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/otherkin/">#otherkin</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/neurodivergency/">#neurodivergency</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/autism/">#autism</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/cat/">#cat</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/nya/">#nya</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/meow/">#meow</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/gender/">#gender</a></span>
</li>
</ul>
</div>
</div>
<footer class="footer">
<div class="footer__inner">
<div class="copyright copyright--user">
 
<span>&copy;
2024
- CherryKitten</span><br>
 
<span onclick="alert('Nya!')">🐱</span></div>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<span><a href="/impressum">Impressum</a></span>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<a href="/rss.xml">RSS</a>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<img src="/buttons/antinft.gif" alt="Anti NFT">
<img src="/buttons/acab.gif" alt="ACAB">
<img src="/buttons/transnow2.gif" alt="Trans rights now">
</div>
</footer>
</div>
</body>
</html>

View file

@ -1,123 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>
Tag: Rust | CherryKitten</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
<meta name="robots" content="noodp"/>
<link rel="stylesheet" href="https://cherrykitten.dev/style.css">
<link rel="stylesheet" href="https://cherrykitten.dev/color.css">
<link rel="alternate" type="application/rss+xml" title="RSS" href="https://cherrykitten.dev/ rss.xml
">
</head>
<body class="">
<div class="container">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="https://cherrykitten.dev" style="text-decoration: none;">
<div class="logo">
CherryKitten
</div>
</a>
</div>
</div>
<nav class="menu">
<ul class="menu__inner">
<li class="active"><a href="https://cherrykitten.dev">Home</a></li>
<li><a href="https://cherrykitten.dev/about">About me</a></li>
<li><a href="https://cherrykitten.dev/blog">Blog</a></li>
<li><a href="https://cherrykitten.dev/cv">CV</a></li>
<li><a href="https://cherrykitten.dev/contact">Contact</a></li>
</ul>
</nav>
</header>
<div class="content">
<div class="post">
<h1 class="post-title">
tag: #Rust
(1 post)
</h1>
<a href="https://cherrykitten.dev/tags">
Show all tags
</a>
<ul><li class="post-list">
<a href="https://cherrykitten.dev/blog/rust-options-results/">
<span class="post-date">2023-02-25</span>
:: <span class="post-list-title">Learning Rust: A kitten&#x27;s guide to Options and Results</span></a>
<span class="post-tags-inline">
::
<a class="post-tag" href="https://cherrykitten.dev/tags/rust/">#Rust</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/programming/">#programming</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/code/">#code</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/learning/">#learning</a></span>
</li>
</ul>
</div>
</div>
<footer class="footer">
<div class="footer__inner">
<div class="copyright copyright--user">
 
<span>&copy;
2024
- CherryKitten</span><br>
 
<span onclick="alert('Nya!')">🐱</span></div>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<span><a href="/impressum">Impressum</a></span>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<a href="/rss.xml">RSS</a>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<img src="/buttons/antinft.gif" alt="Anti NFT">
<img src="/buttons/acab.gif" alt="ACAB">
<img src="/buttons/transnow2.gif" alt="Trans rights now">
</div>
</footer>
</div>
</body>
</html>

View file

@ -1,124 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>
Tag: society | CherryKitten</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
<meta name="robots" content="noodp"/>
<link rel="stylesheet" href="https://cherrykitten.dev/style.css">
<link rel="stylesheet" href="https://cherrykitten.dev/color.css">
<link rel="alternate" type="application/rss+xml" title="RSS" href="https://cherrykitten.dev/ rss.xml
">
</head>
<body class="">
<div class="container">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="https://cherrykitten.dev" style="text-decoration: none;">
<div class="logo">
CherryKitten
</div>
</a>
</div>
</div>
<nav class="menu">
<ul class="menu__inner">
<li class="active"><a href="https://cherrykitten.dev">Home</a></li>
<li><a href="https://cherrykitten.dev/about">About me</a></li>
<li><a href="https://cherrykitten.dev/blog">Blog</a></li>
<li><a href="https://cherrykitten.dev/cv">CV</a></li>
<li><a href="https://cherrykitten.dev/contact">Contact</a></li>
</ul>
</nav>
</header>
<div class="content">
<div class="post">
<h1 class="post-title">
tag: #society
(1 post)
</h1>
<a href="https://cherrykitten.dev/tags">
Show all tags
</a>
<ul><li class="post-list">
<a href="https://cherrykitten.dev/blog/birds/">
<span class="post-date">2024-03-26</span>
:: <span class="post-list-title">Birds.</span></a>
<span class="post-tags-inline">
::
<a class="post-tag" href="https://cherrykitten.dev/tags/animals/">#animals</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/birds/">#birds</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/nature/">#nature</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/society/">#society</a>,
<a class="post-tag" href="https://cherrykitten.dev/tags/politics/">#politics</a></span>
</li>
</ul>
</div>
</div>
<footer class="footer">
<div class="footer__inner">
<div class="copyright copyright--user">
 
<span>&copy;
2024
- CherryKitten</span><br>
 
<span onclick="alert('Nya!')">🐱</span></div>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<span><a href="/impressum">Impressum</a></span>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<a href="/rss.xml">RSS</a>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<img src="/buttons/antinft.gif" alt="Anti NFT">
<img src="/buttons/acab.gif" alt="ACAB">
<img src="/buttons/transnow2.gif" alt="Trans rights now">
</div>
</footer>
</div>
</body>
</html>

View file

92
sass/buttons.scss Normal file
View file

@ -0,0 +1,92 @@
.button-container {
display: table;
margin-left: auto;
margin-right: auto;
}
button,
.button,
a.button {
position: relative;
display: flex;
align-items: center;
justify-content: center;
padding: 8px 18px;
margin-bottom: 5px;
text-align: center;
border-radius: 8px;
border: 1px solid transparent;
appearance: none;
cursor: pointer;
outline: none;
/* variants */
&.outline {
background: transparent;
box-shadow: none;
padding: 8px 18px;
:hover {
transform: none;
box-shadow: none;
}
}
&.primary {
box-shadow: 0 4px 6px rgba(50, 50, 93, .11), 0 1px 3px rgba(0, 0, 0, .08);
&:hover {
box-shadow: 0 2px 6px rgba(50, 50, 93, .21), 0 1px 3px rgba(0, 0, 0, .08);
}
}
&.link {
background: none;
font-size: 1rem;
}
/* sizes */
&.small {
font-size: .8rem;
}
&.wide {
min-width: 200px;
padding: 14px 24px;
}
}
a.read-more,
a.read-more:hover,
a.read-more:active {
display: inline-flex;
background: none;
box-shadow: none;
padding: 0;
margin: 20px 0;
max-width: 100%;
}
.code-toolbar {
margin-bottom: 20px;
.toolbar-item a {
position: relative;
display: inline-flex;
align-items: center;
justify-content: center;
padding: 3px 8px;
margin-bottom: 5px;
text-align: center;
font-size: 13px;
font-weight: 500;
border-radius: 8px;
border: 1px solid transparent;
appearance: none;
cursor: pointer;
outline: none;
}
}

11
sass/color.scss Normal file
View file

@ -0,0 +1,11 @@
:root {
--accent: rgb(235, 111, 146);
--accent2: rgb(246, 193, 119);
--accent3: rgb(62, 143, 176);
--accent-alpha-70: rgba(235, 111, 146,.7);
--accent-alpha-20: rgba(235, 111, 146,.2);
--background: #232136;
--color: #e0def4;
--border-color: rgba(246, 193, 119, .1);
}

52
sass/footer.scss Normal file
View file

@ -0,0 +1,52 @@
@import "variables";
.footer {
padding: 40px 0;
flex-grow: 0;
opacity: .5;
&__inner {
display: flex;
align-items: center;
justify-content: space-between;
margin: 0;
width: 760px;
max-width: 100%;
@media (max-width: $tablet-max-width) {
flex-direction: column;
}
}
a {
color: inherit;
}
.copyright {
display: flex;
flex-direction: row;
align-items: center;
font-size: 1rem;
color: var(--light-color-secondary);
&--user {
margin: auto;
text-align: center;
}
& > *:first-child:not(:only-child) {
margin-right: 10px;
@media (max-width: $tablet-max-width) {
border: none;
padding: 0;
margin: 0;
}
}
@media (max-width: $tablet-max-width) {
flex-direction: column;
margin-top: 10px;
}
}
}

98
sass/header.scss Normal file
View file

@ -0,0 +1,98 @@
@import "variables";
@mixin menu {
position: absolute;
background: var(--background);
box-shadow: var(--shadow);
color: white;
border: 2px solid;
margin: 0;
padding: 10px;
list-style: none;
z-index: 99;
}
.header {
display: flex;
flex-direction: column;
position: relative;
&__inner {
display: flex;
align-items: center;
justify-content: space-between;
}
&__logo {
display: flex;
flex: 1;
&:after {
content: '';
background: repeating-linear-gradient(90deg,var(--accent) 0%, transparent 8%, var(--accent2) 50%,var(--accent3) 100% );
display: block;
width: 100%;
right: 10px;
border-radius: 0 20px 20px 0;
}
a {
flex: 0 0 auto;
max-width: 100%;
}
}
.menu {
margin: 20px 0;
&__inner {
display: flex;
flex-wrap: wrap;
list-style: none;
margin: 0;
padding: 0;
li {
color: var(--accent3);
&.active {
color: var(--accent-alpha-70);
}
&:not(:last-of-type) {
margin-right: 20px;
margin-bottom: 10px;
flex: 0 0 auto;
}
}
}
&__sub-inner {
position: relative;
list-style: none;
padding: 0;
margin: 0;
&:not(:only-child) {
margin-left: 20px;
}
&-more {
@include menu;
top: 35px;
left: 0;
&-trigger {
color: var(--accent);
user-select: none;
cursor: pointer;
}
li {
margin: 0;
padding: 5px;
white-space: nowrap;
}
}
}
}
}

9
sass/logo.scss Normal file
View file

@ -0,0 +1,9 @@
.logo {
display: flex;
align-items: center;
text-decoration: none;
background: var(--accent);
color: black;
padding: 5px 10px;
border-radius: 20px 0 0 20px;
}

283
sass/main.scss Normal file
View file

@ -0,0 +1,283 @@
@import "variables";
html {
box-sizing: border-box;
}
*,
*:before,
*:after {
box-sizing: inherit;
}
body {
margin: 0;
padding: 0;
font-family: Monaco, Consolas, Ubuntu Mono, monospace;
font-size: 1rem;
line-height: 1.54;
background-color: var(--background);
color: var(--color);
text-rendering: optimizeLegibility;
-webkit-font-smoothing: antialiased;
-webkit-overflow-scrolling: touch;
-webkit-text-size-adjust: 100%;
@media (max-width: $phone-max-width) {
font-size: 1rem;
}
}
h1, h2 {
display: flex;
align-items: center;
font-weight: 500;
line-height: 1.3;
color: var(--accent2);
}
h3, h4, h5, h6 {
display: flex;
align-items: center;
font-weight: 400;
line-height: 0.8;
color: var(--accent3);
}
h1 {
font-size: 1.4rem;
}
h2 {
font-size: 1.3rem;
padding-top: 1rem;
border-bottom: 1px dashed var(--accent);
padding-bottom: 7px;
}
h3 {
font-size: 1.2rem;
font-weight: bolder;
}
h4, h5, h6 {
font-size: 1.15rem;
}
a {
color: inherit;
}
img {
display: block;
max-width: 100%;
&.left {
margin-right: auto;
}
&.center {
margin-left: auto;
margin-right: auto;
}
&.right {
margin-left: auto;
}
}
p {
margin-bottom: 20px;
}
figure {
display: table;
max-width: 100%;
margin: 25px 0;
&.left {
img {
margin-right: auto;
}
}
&.center {
img {
margin-left: auto;
margin-right: auto;
}
}
&.right {
img {
margin-left: auto;
}
}
figcaption {
font-size: 14px;
padding: 5px 10px;
margin-top: 5px;
background: var(--accent);
color: var(--background);
&.left {
text-align: left;
}
&.center {
text-align: center;
}
&.right {
text-align: right;
}
}
}
code {
font-family: monospace;
font-feature-settings: normal;
background: var(--accent-alpha-20);
padding: 1px 6px;
margin: 0 2px;
font-size: .95rem;
}
pre {
font-family: monospace;
padding: 20px;
font-size: .95rem;
overflow: auto;
border-top: 1px solid rgba(255, 255, 255, .1);
border-bottom: 1px solid rgba(255, 255, 255, .1);
@media (max-width: $phone-max-width) {
white-space: pre-wrap;
word-wrap: break-word;
}
code {
padding: 0;
margin: 0;
background: none;
}
}
blockquote {
border-top: 1px solid var(--accent);
border-bottom: 1px solid var(--accent);
margin: 40px 0;
padding: 25px;
@media (max-width: $phone-max-width) {
padding-right: 0;
}
&:before {
content: '';
font-family: Georgia, serif;
font-size: 3.875rem;
position: absolute;
left: -40px;
top: -20px;
}
p:first-of-type {
margin-top: 0;
}
p:last-of-type {
margin-bottom: 0;
}
p {
position: relative;
}
p:before {
content: '>';
display: block;
position: absolute;
left: -25px;
color: var(--accent);
}
}
table {
table-layout: fixed;
border-collapse: collapse;
width: 100%;
margin: 40px 0;
}
table, th, td {
border: none;
padding: 10px;
}
th {
color: var(--accent);
}
td {
border-bottom: 1px dotted var(--accent);
}
ul, ol {
margin-left: 30px;
padding: 0;
li {
position: relative;
}
@media (max-width: $phone-max-width) {
margin-left: 20px;
}
}
ol ol {
list-style-type: lower-alpha;
}
.container {
display: flex;
flex-direction: column;
padding: 40px;
max-width: 864px;
min-height: 100vh;
margin: 0 auto;
@media (max-width: $phone-max-width) {
padding: 20px;
}
}
.content {
display: flex;
}
hr {
width: 100%;
border: none;
background: var(--border-color);
height: 1px;
}
.hidden {
display: none;
}
@media print {
.section {
break-inside: avoid-page;
padding-top: 1rem;
}
p, table {
break-inside: avoid-page;
}
}

77
sass/pagination.scss Normal file
View file

@ -0,0 +1,77 @@
@import 'variables';
.pagination {
margin-top: 50px;
&__title {
display: flex;
text-align: center;
position: relative;
margin: 100px 0 20px;
&-h {
text-align: center;
margin: 0 auto;
padding: 5px 10px;
background: var(--background);
font-size: .8rem;
text-transform: uppercase;
letter-spacing: .1em;
z-index: 1;
}
hr {
position: absolute;
left: 0;
right: 0;
width: 100%;
margin-top: 15px;
z-index: 0;
}
}
&__buttons {
display: flex;
align-items: center;
justify-content: center;
@media (max-width: $phone-max-width) {
flex-direction: column;
}
}
}
.button {
position: relative;
display: inline-flex;
align-items: center;
justify-content: center;
font-size: 1rem;
border-radius: 8px;
max-width: 40%;
padding: 0;
cursor: pointer;
appearance: none;
@media (max-width: $phone-max-width) {
max-width: 80%;
}
+ .button {
margin-left: 10px;
}
a {
display: flex;
padding: 8px 16px;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}
&__text {
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}
}

135
sass/post.scss Normal file
View file

@ -0,0 +1,135 @@
@import "variables";
.posts {
width: 100%;
margin: 0 auto;
}
.post {
width: 100%;
text-align: left;
margin: 20px auto;
padding: 20px 0;
@media (max-width: $tablet-max-width) {
max-width: 660px;
}
&:not(:last-of-type) {
border-bottom: 1px solid var(--border-color);
}
%meta {
font-size: 1rem;
margin-bottom: 10px;
color: var(--accent-alpha-70);
}
&-meta {
@extend %meta;
}
&-meta-inline {
@extend %meta;
display: inline;
}
&-title {
--border: 2px dashed var(--accent);
position: relative;
color: var(--accent2);
margin: 0 0 15px;
padding-bottom: 15px;
border-bottom: var(--border);
font-weight: normal;
a {
text-decoration: none;
}
}
%tags {
margin-bottom: 20px;
font-size: 1rem;
opacity: .5;
}
&-tags {
@extend %tags;
display: block;
}
&-tags-inline {
@extend %tags;
display: inline;
@media (max-width: $phone-max-width) {
display: block;
}
}
&-content {
margin-top: 30px;
}
&-cover {
border: 20px solid var(--accent);
background: transparent;
margin: 40px 0;
padding: 20px;
@media (max-width: $phone-max-width) {
padding: 10px;
border-width: 10px;
}
}
ul {
list-style: none;
li:before {
content: '';
position: absolute;
left: -20px;
color: var(--accent);
}
}
}
.post--regulation {
h1 {
justify-content: center;
}
h2 {
justify-content: center;
margin-bottom: 10px;
&+ h2 {
margin-top: -10px;
margin-bottom: 20px;
}
}
}
.post-list {
.post-date {
color: var(--accent3);
text-decoration: none;
}
a {
text-decoration: none;
}
.post-list-title {
text-decoration: underline;
}
.post-tag {
text-decoration: underline;
}
}

8
sass/style.scss Normal file
View file

@ -0,0 +1,8 @@
@import 'buttons';
@import 'header';
@import 'logo';
@import 'main';
@import 'post';
@import 'pagination';
@import 'footer';

2
sass/variables.scss Normal file
View file

@ -0,0 +1,2 @@
$phone-max-width: 683px;
$tablet-max-width: 899px;

16
templates/404.html Normal file
View file

@ -0,0 +1,16 @@
{% extends "index.html" %}
{% block title %}
404
{% endblock title %}
{% block header_menu %}
{{ menu_macros::menu_for(config=config, current_item="") }}
{% endblock header_menu %}
{% block content %}
<div class="post">
<h1 class="post-title">{% block heading %}Lost?{% endblock heading %}</h1>
<p>{% block message %}This page does not exist.{% endblock message %}</p>
</div>
{% endblock content %}

15
templates/archive.html Normal file
View file

@ -0,0 +1,15 @@
{% extends "index.html" %}
{%- block title -%}
{{ title_macros::title(page_title=page.title, main_title=config.title) }}
{%- endblock -%}
{% block content %}
<div class="post">
<h1 class="post-title">{{ page.title }}</h1>
{% set section = get_section(path="_index.md") %}
{{ post_macros::list_posts(pages=section.pages) }}
</div>
{% endblock content %}

126
templates/index.html Normal file
View file

@ -0,0 +1,126 @@
{% import "macros/date.html" as date_macros -%}
{% import "macros/head.html" as head_macros -%}
{% import "macros/menu.html" as menu_macros -%}
{% import "macros/post.html" as post_macros -%}
{% import "macros/title.html" as title_macros -%}
<!DOCTYPE html>
<html lang="en">
<head>
<title>{%- block title %}{{ config.title }}{% endblock title -%}</title>
{{ head_macros::head(config=config) }}
{%- if config.generate_feed %}
<link rel="alternate" type="application/rss+xml" title="RSS" href="{{ get_url(path=" rss.xml
") | safe }}">
{% endif -%}
{%- if config.extra.favicon %}
<link rel="shortcut icon" type="{{ config.extra.favicon_mimetype | default(value=" image
/x-icon") | safe }}" href="{{ config.extra.favicon | safe }}">
{% endif -%}
{%- block extra_head %}
{% endblock extra_head -%}
</head>
<body class="">
<div class="container">
{% block header %}
<header class="header">
<div class="header__inner">
<div class="header__logo">
{%- if config.logo_home_link %}
{% set logo_link = config.logo_home_link %}
{% else %}
{% set logo_link = config.base_url %}
{% endif -%}
<a href="{{ logo_link | safe }}" style="text-decoration: none;">
<div class="logo">
{% block logo_content %}
{{ config.extra.logo_text }}
{% endblock logo_content %}
</div>
</a>
</div>
</div>
{% block header_menu %}
{{ menu_macros::menu(config=config, current_path=current_path) }}
{% endblock header_menu %}
</header>
{% endblock header %}
<div class="content">
{% block content %}
<div class="posts">
{%- if paginator %}
{%- set show_pages = paginator.pages -%}
{% else %}
{%- set show_pages = section.pages -%}
{% endif -%}
{%- for page in show_pages %}
<div class="post on-list">
{{ post_macros::header(page=page) }}
{{ post_macros::content(page=page, summary=true) }}
</div>
{% endfor -%}
<div class="pagination">
<div class="pagination__buttons">
{%- if paginator.previous %}
<span class="button previous">
<a href="{{ paginator.previous | safe }}">
<span class="button__icon"></span>&nbsp;
<span class="button__text">Newer posts</span>
</a>
</span>
{% endif -%}
{%- if paginator.next %}
<span class="button next">
<a href="{{ paginator.next | safe }}">
<span class="button__text">Older posts</span>&nbsp;
<span class="button__icon"></span>
</a>
</span>
{% endif -%}
</div>
</div>
</div>
{% endblock content %}
</div>
{% block footer %}
<footer class="footer">
<div class="footer__inner">
<div class="copyright copyright--user">
 
<span>&copy; {{ date_macros::now_year() }} - CherryKitten</span><br>
 
<span onclick="alert('Nya!')">🐱</span></div>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<span><a href="/impressum">Impressum</a></span>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<a href="/rss.xml">RSS</a>
</div>
<div style="display: flex; margin-top: 1rem; justify-content: center;">
<img src="/buttons/antinft.gif" alt="Anti NFT">
<img src="/buttons/acab.gif" alt="ACAB">
<img src="/buttons/transnow2.gif" alt="Trans rights now">
</div>
</footer>
{% endblock footer %}
</div>
{%- block extra_body %}
{% endblock extra_body -%}
</body>
</html>

View file

@ -0,0 +1,3 @@
{% macro now_year() %}
{{ now() | date(format="%Y") }}
{% endmacro %}

View file

@ -0,0 +1,9 @@
{% macro head(config) %}
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
<meta name="robots" content="noodp"/>
<link rel="stylesheet" href="{{ get_url(path="style.css", trailing_slash=false) | safe }}">
<link rel="stylesheet" href="{{ get_url(path="color.css", trailing_slash=false) | safe }}">
{% endmacro head %}

View file

@ -0,0 +1,52 @@
{% macro menu(config, current_path) %}
{%- set current_item = false -%}
{%- if config.extra.menu_items %}
{%- set menu_items = config.extra.menu_items -%}
{%- for item in menu_items %}
{%- set abs_item_url = item.url | replace(from="$BASE_URL", to=config.base_url) -%}
{%- set is_current = current_url == abs_item_url ~ "/"
or current_url is starting_with(abs_item_url)
-%}
{%- set is_base = abs_item_url == config.base_url
or abs_item_url == config.base_url ~ "/"
-%}
{%- if is_base %}
{%- set_global base_item = item -%}
{% endif -%}
{%- if is_current and not is_base %}
{%- set_global current_item = item -%}
{% endif -%}
{% endfor -%}
{%- if not current_item and base_item %}
{# Did not match any menu URLs -- assume it's a blog post #}
{%- set current_item = base_item -%}
{% endif -%}
{{ menu_macros::menu_for(config=config, current_item=current_item) }}
{% endif -%}
{% endmacro menu %}
{% macro menu_for(config, current_item) %}
{%- if config.extra.menu_items %}
{%- set menu_items = config.extra.menu_items -%}
<nav class="menu">
<ul class="menu__inner">
{%- for item in menu_items %}
<li {%- if current_item and current_item == item %} class="active" {%- endif %}>
{%- if item.newtab -%}
<a href="{{ item.url | replace(from="$BASE_URL", to=config.base_url) | safe }}" target="_blank" rel="noopener noreferrer">{{ item.name | safe }}</a>
{%- else -%}
<a href="{{ item.url | replace(from="$BASE_URL", to=config.base_url) | safe }}">{{ item.name | safe }}</a>
{%- endif -%}
</li>
{% endfor -%}
</ul>
</nav>
{% endif -%}
{% endmacro menu %}

103
templates/macros/post.html Normal file
View file

@ -0,0 +1,103 @@
{% macro content(page, summary) %}
{%- if summary and page.summary %}
<div class="post-content">
{{ page.summary | safe }}
</div>
<div>
<!-- &#xFE0E; -- force text style - some devices render this as emoji -->
<a class="read-more button" href="{{ page.permalink | safe }}">
<span class="button__text">Read more</span>&nbsp;
<span class="button__icon">&#8617;&#xFE0E;</span>
</a>
</div>
{% else %}
<div class="post-content">
{{ page.content | safe }}
</div>
{%- endif %}
{% endmacro content %}
{% macro date(page) %}
<span class="post-date">
{%- if page.date %}
{{ page.date | date(format="%Y-%m-%d") }}
{% endif -%}
</span>
{% endmacro post_date %}
{% macro earlier_later(page) %}
{%- if config.extra.enable_post_view_navigation and page.lower or page.higher %}
<div class="pagination">
<div class="pagination__title">
<span class="pagination__title-h">{{ config.extra.post_view_navigation_prompt }}</span>
<hr />
</div>
<div class="pagination__buttons">
{%- if page.higher %}
<span class="button previous">
<a href="{{ page.higher.permalink | safe }}">
<span class="button__icon"></span>&nbsp;
<span class="button__text">{{ page.higher.title }}</span>
</a>
</span>
{% endif %}
{% if page.lower %}
<span class="button next">
<a href="{{ page.lower.permalink | safe }}">
<span class="button__text">{{ page.lower.title }}</span>&nbsp;
<span class="button__icon"></span>
</a>
</span>
{% endif -%}
</div>
</div>
{% endif -%}
{% endmacro earlier_later %}
{% macro header(page) %}
<h1 class="post-title"><a href="{{ page.permalink | safe }}">{{ page.title }}</a></h1>
<div class="post-meta-inline">
{{ post_macros::date(page=page) }}
</div>
{{ post_macros::tags(page=page) }}
{% endmacro header %}
{% macro list_posts(pages) %}
<ul>
{%- for page in pages %}
{%- if page.draft %}
{% continue %}
{% endif -%}
<li class="post-list">
<a href="{{ page.permalink | safe }}">
<span class="post-date">{{ page.date }}</span>
:: <span class="post-list-title">{{ page.title }}</span></a>
{{ post_macros::tags(page=page, short=true) }}
</li>
{% endfor -%}
</ul>
{% endmacro list_posts %}
{% macro tags(page, short=false) %}
{%- if page.taxonomies and page.taxonomies.tags %}
<span class="post-tags-inline">
{%- if short %}
::
{%- set sep = "," -%}
{% else %}
:: tags:&nbsp;
{%- set sep = "&nbsp;" -%}
{% endif -%}
{%- for tag in page.taxonomies.tags %}
<a class="post-tag" href="{{ get_taxonomy_url(kind='tags', name=tag) | safe }}">#{{ tag }}</a>
{%- if not loop.last %}{{ sep | safe }}{% endif -%}
{% endfor -%}
</span>
{% endif -%}
{% endmacro tags %}

View file

@ -0,0 +1,17 @@
{% macro title(page_title, main_title) %}
{%- if config.extra.page_titles == "combined" -%}
{%- if page_title -%}
{{ page_title }} | {{ main_title }}
{%- else -%}
{{ main_title }}
{%- endif -%}
{%- elif config.extra.page_titles == "page_only" -%}
{%- if page_title -%}
{{ page_title }}
{%- else -%}
{{ main_title }}
{%- endif -%}
{%- else -%}
{{ main_title }}
{%- endif -%}
{% endmacro title %}

13
templates/page.html Normal file
View file

@ -0,0 +1,13 @@
{% extends "index.html" %}
{%- block title -%}
{{ title_macros::title(page_title=page.title, main_title=config.title) }}
{%- endblock -%}
{% block content %}
<div class="post">
{{ post_macros::header(page=page) }}
{{ post_macros::content(page=page, summary=false) }}
{{ post_macros::earlier_later(page=page) }}
</div>
{% endblock content %}

View file

@ -0,0 +1,8 @@
{% if src %}
<figure class="{% if position %}{{ position }}{% else -%} center {%- endif %}" >
<img src="{{ src | safe }}"{% if alt %} alt="{{ alt }}"{% endif %}{% if style %} style="{{ style }}"{% endif %} />
{% if caption %}
<figcaption class="{% if caption_position %}{{ caption_position }}{% else -%} center {%- endif %}"{% if caption_style %} style="{{ caption_style | safe }}"{% endif %}>{{ caption }}</figcaption>
{% endif %}
</figure>
{% endif %}

View file

@ -0,0 +1,3 @@
{% if src %}
<img src="{{ src | safe }}"{% if alt %} alt="{{ alt }}"{% endif %} class="{% if position %}{{ position }}{% else -%} center {%- endif %}" {%- if style %} style="{{ style | safe }}" {%- endif %} />
{% endif %}

View file

@ -0,0 +1,5 @@
<div class="section">
{{ body }}
</div>

21
templates/tags/list.html Normal file
View file

@ -0,0 +1,21 @@
{% extends "index.html" %}
{%- block title -%}
{{ title_macros::title(page_title="Tags", main_title=config.title) }}
{%- endblock -%}
{% block content %}
<div class="post">
<h1 class="post-title">all tags</h1>
<ul>
{% for term in terms %}
<li class="tag-list">
<a href="{{ term.permalink | safe }}">
{{ term.name }} ({{ term.pages | length }} post{{ term.pages | length | pluralize }})
</a>
</li>
{% endfor %}
</ul>
</div>
{% endblock content %}

View file

@ -0,0 +1,21 @@
{% extends "index.html" %}
{%- block title -%}
{% set title = "Tag: " ~ term.name %}
{{ title_macros::title(page_title=title, main_title=config.title) }}
{%- endblock -%}
{% block content %}
<div class="post">
<h1 class="post-title">
tag: #{{ term.name }}
({{ term.pages | length }} post{{ term.pages | length | pluralize }})
</h1>
<a href="{{ config.base_url | safe }}/tags">
Show all tags
</a>
{{ post_macros::list_posts(pages=term.pages) }}
</div>
{% endblock content %}

@ -1 +0,0 @@
Subproject commit b5f869f21a23b265b443ecdedc056e1a339dab50