more improvements for this modified site

Signed-off-by: Soc Virnyl Estela <contact@uncomfyhalomacro.pl>
This commit is contained in:
Soc Virnyl Estela 2024-06-27 13:52:03 +08:00
parent d6256c3f86
commit ab7177f4b0
Signed by: uncomfyhalomacro
SSH key fingerprint: SHA256:9Ez84JDMZLHJvRH+Kjgvlb+eX82QYEW127e6Rj66zBY
32 changed files with 555 additions and 46 deletions

1
.gitignore vendored
View file

@ -5,6 +5,7 @@ public
prof
tsconfig.tsbuildinfo
.obsidian
.zk
.quartz-cache
private/
.replit

View file

4
content/Gists/index.md Normal file
View file

@ -0,0 +1,4 @@
---
title: A Gist of Useful Code Snippets
---

View file

@ -0,0 +1,99 @@
---
title: Nushell Script for Fuzzy Finding Lobster Posts
date: 2023-09-11
---
```nu
#!/usr/bin/nu
alias MENU = fuzzel -d
let sections = [ "active", "recent", "comments" ]
$env.CACHE_PATH = ("~/.cache/lobsters" | path expand)
$env.ACTIVE_RSS = ( $env.CACHE_PATH | path join "active.xml")
$env.COMMENTS_RSS = ( $env.CACHE_PATH | path join "comments.xml")
$env.RECENT_RSS = ( $env.CACHE_PATH | path join "recent.xml")
if ($env.CACHE_PATH | path exists) { } else { mkdir $env.CACHE_PATH }
if (ls $env.CACHE_PATH | is-empty) or (ls $env.CACHE_PATH | get -i size | any { |s| $s == 0KB }) {
for section in $sections {
http get "https://lobste.rs/rss" | save -f $env.ACTIVE_RSS
http get "https://lobste.rs/newest.rss" | save -f $env.RECENT_RSS
http get "https://lobste.rs/comments.rss" | save -f $env.COMMENTS_RSS
}
} else if (ls $env.CACHE_PATH | get -i modified | all { |i| $i < (date now) } ) {
http get "https://lobste.rs/rss" | save -f $env.ACTIVE_RSS
http get "https://lobste.rs/newest.rss" | save -f $env.RECENT_RSS
http get "https://lobste.rs/comments.rss" | save -f $env.COMMENTS_RSS
} else {}
let section = ($sections | to text | str trim | MENU -p "choose lobsters section>")
let active_list = ( open --raw $env.ACTIVE_RSS | query xml //item | get //item )
let comment_list = ( open --raw $env.COMMENTS_RSS | query xml //item | get //item )
let recent_list = ( open --raw $env.RECENT_RSS | query xml //item | get //item )
if ($section | is-empty) {
exit 1
}
# line 2 -> link to post
# line 6 -> link to comment
if ($section =~ "active") {
let TITLES = ($active_list | each {|it| $it | lines | str trim | get 1} | uniq)
let LINKS = ($active_list | each {|it| $it | lines | str trim | get 2})
let POSTS = ($active_list | each {|it| $it | lines | str trim | get 6})
let TITLE = ($TITLES | to text | MENU -p "active section list>")
if ($TITLE | is-empty) {
exit 1
}
let options = [ "link to comment" "link to title" ]
let option = ($options | to text | str trim | MENU -p "select option>" )
if ($option =~ "link to title") {
for $title in $TITLES --numbered {
if $TITLE =~ $title.item {
xdg-open $"($LINKS | get $title.index)"
}
}
} else if ($option =~ "link to comment") {
for $title in $TITLES --numbered {
if $TITLE =~ $title.item {
xdg-open $"($POSTS | get $title.index)"
}
}
}
} else if ($section =~ "comments") {
# line to title -> 1
# line to link comments -> 2
let TITLES = ($comment_list | each {|it| $it | lines | str trim | get 1} | uniq)
let TITLE = ($TITLES | to text | MENU -p "active section list>")
if ($TITLE | is-empty) {
exit 1
}
let link = ($comment_list | each {|item| $item | lines | str trim | to text } | where ($it =~ $"($TITLE)") | each {|link| $link | lines | get 2 } | to text | MENU -p "link
to comments>")
xdg-open $"($link)"
} else if ($section =~ "recent") {
let TITLES = ($recent_list | each {|it| $it | lines | str trim | get 1} | uniq)
let LINKS = ($recent_list | each {|it| $it | lines | str trim | get 2})
let POSTS = ($recent_list | each {|it| $it | lines | str trim | get 6})
let TITLE = ($TITLES | to text | MENU -p "active section list>")
if ($TITLE | is-empty) {
exit 1
}
let options = [ "link to comment" "link to title" ]
let option = ($options | to text | str trim | MENU -p "select option>" )
if ($option =~ "link to title") {
for $title in $TITLES --numbered {
if $TITLE =~ $title.item {
xdg-open $"($LINKS | get $title.index)"
}
}
} else if ($option =~ "link to comment") {
for $title in $TITLES --numbered {
if $TITLE =~ $title.item {
xdg-open $"($POSTS | get $title.index)"
}
}
}
} else {
exit 1
}
```

64
content/Gists/yt-cli.md Normal file
View file

@ -0,0 +1,64 @@
---
title: Nushell script for opening Youtube videos with MPV
date: 2024-03-05
---
```nu
#!/usr/bin/nu
alias MENU = fuzzel -d
let subbed_channels = [
chrisbiscardi
Coderized
CodeAesthetic
dreamsofcode
fasterthanlime
fireship
fknight
freecodecamp
LearnLinuxTV
LowLevelLearning
niccoloveslinux
NoBoilerplate
_noisecode
RustVideos
VideosByDefault
ThePrimeTimeagen
TraversyMedia
]
let channel = ($subbed_channels | to text | MENU -p "choose channel>" | str trim)
if ($channel | is-empty) {
exit 0
}
if $channel not-in $subbed_channels {
notify-send --icon dialog-error --app-name Error -u critical "Not in the list" $"($channel) channel is not in the list of your subs!"
exit 1
}
let titles = (http get $"(http get $"https://www.youtube.com/@($channel | to text | str trim)" | query web -q 'link' -a href | find feeds | get 0 | ansi strip)" --raw | query web -q 'title')
let channel_title = ($titles | get 0)
let video_titles = ($titles | skip 1)
let chosen_video_title = ($titles | to text | MENU -p 'open link to>' | str trim)
if ($chosen_video_title | is-empty) {
exit 0
}
let video_hashes = (http get $"(http get $"https://www.youtube.com/@($channel | str trim)" | query web -q 'link' -a href | find feeds | get 0 | ansi strip)" --raw | query web -q 'yt\:videoId')
for $video_title in $video_titles --numbered {
if $chosen_video_title == $channel_title {
notify-send --icon firefox --app-name firefox $"Opening Youtube channel - ($channel_title) - in default browser"
setsid /bin/sh -c $"xdg-open 'https://youtube.com/@($channel)'"
sleep 0.3sec
exit 0
}
if ($chosen_video_title in $video_titles) and ($chosen_video_title in $video_title.item) {
notify-send --icon mpv --app-name mpv $"Opening '($video_title.item)' in mpv"
let ytflags = "(mp4,webm)[height<?1080]+bestaudio/best"
setsid /bin/sh -c $'mpv --slang=en --ytdl-raw-options=ignore-config=,sub-lang=en,write-auto-sub= --ytdl-format="($ytflags)" --no-fs "https://youtube.com/watch?v=($video_hashes | get $video_title.index)"'
sleep 0.3sec
exit 0
}
}
```

12
content/Poems/index.md Normal file
View file

@ -0,0 +1,12 @@
---
title: Poems
---
# What's in here?
## Key Landing Pages
- [[Web Development]]
- [[Compilers and Languages]]
- [[System Administration]]
- [[Software Tools]]

12
content/Prose/index.md Normal file
View file

@ -0,0 +1,12 @@
---
title: Prose
---
# What's in here?
## Key Landing Pages
- [[Web Development]]
- [[Compilers and Languages]]
- [[System Administration]]
- [[Software Tools]]

12
content/Tech/index.md Normal file
View file

@ -0,0 +1,12 @@
---
title: Tech
---
# What's in here?
## Key Landing Pages
- [[Web Development]]
- [[Compilers and Languages]]
- [[System Administration]]
- [[Software Tools]]

54
content/index.md Normal file
View file

@ -0,0 +1,54 @@
---
title: welcome to my zettelkasten
date: 2024-06-27
---
# Introduction
I'm Soc Virnyl Estela (aka ***uncomfyhalomacro***). I like to discuss about
Linux, Wayland, and various programming languages such as Julia, and Rust.
I'm a package maintainer for the [openSUSE](https://get.opensuse.org)
community, mostly Wayland and Rust software.
My main background is biology but I also have exposure to computer science
when I was in high school.
Most of my projects are now hosted either
on [Sourcehut](https://sr.ht/~uncomfy) and
[Codeberg](https://codeberg.org/uncomfyhalomacro).
## Key Landing Pages
- [[Tech/index.md|Tech]]
- [[Prose/index.md|Prose]]
- [[Poems/index.md|Poems]]
- [[Gists/index.md|Gists]]
## Software and tools I use daily
- [Kakoune](https://github.com/mawww/kakoune)
- [Zellij](https://zellij.dev)
- [Foot](https://codeberg.org/dnkl/foot)
- [RiverWM](https://github.com/riverwm/river)
- Distrobox. A podman/docker frontend.
## Programming Languages I am really familiar with
- [Julia](https://julialang.org)
- [Rust](https://rust-lang.org)
- [Python](https://python.org)
## Software and things I want to familiarize with
- **Erlang**. I heard about it because of its impressive built-in concurrency support.
- **Go**. Learn it since it's used from various companies.
- **Ansible**. Notable for DevOps.
## Contact
Feel free to email me at
[contact@uncomfyhalomacro.pl](mailto:contact@uncomfyhalomacro.pl)([gpg](./static/public.txt)).
You can also contact me through Signal through this
[link](https://signal.me/#eu/2HXmicUGauVas7bp_wTU2Qwg08Ldza_K4uOt3emtYnAs3Av6kCpA-6WD9CytRr7N).

53
index.md Normal file
View file

@ -0,0 +1,53 @@
---
title: welcome to my zettelkasten
date: 2024-06-27
---
# Introduction
I'm Soc Virnyl Estela (aka ***uncomfyhalomacro***). I like to discuss about
Linux, Wayland, and various programming languages such as Julia, and Rust.
I'm a package maintainer for the [openSUSE](https://get.opensuse.org)
community, mostly Wayland and Rust software.
My main background is biology but I also have exposure to computer science
when I was in high school.
Most of my projects are now hosted either
on [Sourcehut](https://sr.ht/~uncomfy) and
[Codeberg](https://codeberg.org/uncomfyhalomacro).
## Key Landing Pages
- [[Tech]]
- [[Prose]]
- [[Poems]]
## Software and tools I use daily
- [Kakoune](https://github.com/mawww/kakoune)
- [Zellij](https://zellij.dev)
- [Foot](https://codeberg.org/dnkl/foot)
- [RiverWM](https://github.com/riverwm/river)
- Distrobox. A podman/docker frontend.
## Programming Languages I am really familiar with
- [Julia](https://julialang.org)
- [Rust](https://rust-lang.org)
- [Python](https://python.org)
## Software and things I want to familiarize with
- **Erlang**. I heard about it because of its impressive built-in concurrency support.
- **Go**. Learn it since it's used from various companies.
- **Ansible**. Notable for DevOps.
## Contact
Feel free to email me at
[contact@uncomfyhalomacro.pl](mailto:contact@uncomfyhalomacro.pl)([gpg](./public.txt)).
You can also contact me through Signal through this
[link](https://signal.me/#eu/2HXmicUGauVas7bp_wTU2Qwg08Ldza_K4uOt3emtYnAs3Av6kCpA-6WD9CytRr7N).

View file

@ -1,5 +1,7 @@
import { PageLayout, SharedLayout } from "./quartz/cfg"
import * as Component from "./quartz/components"
import { pathToRoot } from "../util/path"
// components shared across all pages
export const sharedPageComponents: SharedLayout = {
@ -10,9 +12,6 @@ export const sharedPageComponents: SharedLayout = {
Component.Search(),
],
footer: Component.Footer({
links: {
"About Me": "https://uncomfyhalomacro.pl",
},
}),
}
@ -24,7 +23,7 @@ export const defaultContentPageLayout: PageLayout = {
drag: true, // whether to allow panning the view around
zoom: true, // whether to allow zooming in and out
depth: 1, // how many hops of notes to display
scale: 2.1, // default view scale
scale: 1.2, // default view scale
repelForce: 0.5, // how much nodes should repel each other
centerForce: 1.0, // how much force to use when trying to center the nodes
linkDistance: 30, // how long should the links be by default?

View file

@ -1,63 +1,67 @@
import { PageLayout, SharedLayout } from "./quartz/cfg"
import * as Component from "./quartz/components"
import { pathToRoot } from "../util/path"
// components shared across all pages
export const sharedPageComponents: SharedLayout = {
head: Component.Head(),
header: [],
header: [
Component.PageTitle(),
Component.Darkmode(),
Component.Search(),
],
footer: Component.Footer({
links: {
"About Me": "https://uncomfyhalomacro.pl",
{% for article in articles %}
"{{ article.title | safe }}": "{{ article.link | safe }}",
{% endfor %}
},
}),
}
// components for pages that display a single page (e.g. a single note)
export const defaultContentPageLayout: PageLayout = {
beforeBody: [
Component.Graph({
localGraph: {
drag: true, // whether to allow panning the view around
zoom: true, // whether to allow zooming in and out
depth: 1, // how many hops of notes to display
scale: 1.2, // default view scale
repelForce: 0.5, // how much nodes should repel each other
centerForce: 1.0, // how much force to use when trying to center the nodes
linkDistance: 30, // how long should the links be by default?
fontSize: 0.6, // what size should the node labels be?
opacityScale: 1, // how quickly do we fade out the labels when zooming out?
removeTags: [], // what tags to remove from the graph
showTags: true, // whether to show tags in the graph
},
globalGraph: {
drag: true,
zoom: true,
depth: -1,
scale: 1.2,
repelForce: 0.2,
centerForce: 1.3,
linkDistance: 15,
fontSize: 0.6,
opacityScale: 1,
removeTags: [], // what tags to remove from the graph
showTags: true, // whether to show tags in the graph
},
}),
Component.Breadcrumbs(),
Component.ArticleTitle(),
Component.ContentMeta(),
Component.TagList(),
],
left: [
Component.PageTitle(),
Component.MobileOnly(Component.Spacer()),
Component.Search(),
Component.Darkmode(),
Component.DesktopOnly(Component.Explorer()),
],
right: [
Component.Graph({
localGraph: {
drag: true, // whether to allow panning the view around
zoom: true, // whether to allow zooming in and out
depth: 1, // how many hops of notes to display
scale: 2.1, // default view scale
repelForce: 0.5, // how much nodes should repel each other
centerForce: 1.0, // how much force to use when trying to center the nodes
linkDistance: 30, // how long should the links be by default?
fontSize: 0.6, // what size should the node labels be?
opacityScale: 1, // how quickly do we fade out the labels when zooming out?
removeTags: [], // what tags to remove from the graph
showTags: true, // whether to show tags in the graph
},
globalGraph: {
drag: true,
zoom: true,
depth: -1,
scale: 1.2,
repelForce: 0.5,
centerForce: 1.3,
linkDistance: 30,
fontSize: 0.6,
opacityScale: 1,
removeTags: [], // what tags to remove from the graph
showTags: true, // whether to show tags in the graph
},
Component.Webring({
links: {
{%- for article in articles -%}
"{{ article.title | safe }}": "{{ article.link | safe }}",
{%- endfor -%}
},
}),
Component.DesktopOnly(Component.TableOfContents()),
Component.Backlinks(),
@ -74,6 +78,5 @@ export const defaultListPageLayout: PageLayout = {
Component.Darkmode(),
Component.DesktopOnly(Component.Explorer()),
],
center: [],
right: [],
}

View file

@ -14,9 +14,32 @@ export default ((opts?: Options) => {
return (
<footer class={`${displayClass ?? ""}`}>
<hr />
<p> {i18n(cfg.locale).components.footer.createdWith}{" "}
<a href="https://quartz.jzhao.xyz/">Quartz v{version}</a> © {year}</p>
<p>
{i18n(cfg.locale).components.footer.createdWith}{" "}
<a href="https://quartz.jzhao.xyz/">Quartz v{version}</a> © {year}
<span>
<a class="withicon" rel="me" href="https://fosstodon.org/@uncomfyhalomacro" target="_blank">
<svg xmlns="http://www.w3.org/2000/svg" height="40" width="40" viewBox="0 0 448 512">
<path opacity="1" d="M433 179.1c0-97.2-63.7-125.7-63.7-125.7-62.5-28.7-228.6-28.4-290.5 0 0 0-63.7 28.5-63.7 125.7 0 115.7-6.6 259.4 105.6 289.1 40.5 10.7 75.3 13 103.3 11.4 50.8-2.8 79.3-18.1 79.3-18.1l-1.7-36.9s-36.3 11.4-77.1 10.1c-40.4-1.4-83-4.4-89.6-54a102.5 102.5 0 0 1 -.9-13.9c85.6 20.9 158.7 9.1 178.8 6.7 56.1-6.7 105-41.3 111.2-72.9 9.8-49.8 9-121.5 9-121.5zm-75.1 125.2h-46.6v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.3V197c0-58.5-64-56.6-64-6.9v114.2H90.2c0-122.1-5.2-147.9 18.4-175 25.9-28.9 79.8-30.8 103.8 6.1l11.6 19.5 11.6-19.5c24.1-37.1 78.1-34.8 103.8-6.1 23.7 27.3 18.4 53 18.4 175z"/>
</svg>
</a>
</span> <span>
<a class="withicon" href="https://codeberg.org/uncomfyhalomacro" target="_blank">
<svg height="40" width="40" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="#aaa" d="M12 1A11 11 0 0 0 1 12a11 11 0 0 0 1.7 6.4L12 6l9.3 12.4A11 11 0 0 0 23 12 11 11 0 0 0 12 1Z"/><path fill="#555" d="M21.3 18.4 12 6l4.4 16.8a11 11 0 0 0 4.9-4.4Z"/></svg>
</a>
</span> <span>
<a class="withicon" href="https://sr.ht/~uncomfy" target="_blank">
<svg height="38" width="40" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200z"></path></svg>
</a>
</span> <span>
<a class="withicon" href="https://github.com/uncomfyhalomacro" target="_blank">
<svg height="40" width="40" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg>
</a>
</span> <span>
<a class="withicon" href="https://www.linkedin.com/in/socvirnylestela" target="_blank">
<svg height="40" width="40" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z"/></svg>
</a>
</span>
</p>
<ul>
{Object.entries(links).map(([text, link]) => (

View file

@ -36,6 +36,7 @@ export default (() => {
<meta property="og:width" content="1200" />
<meta property="og:height" content="675" />
<link rel="icon" href={iconPath} />
<script src="/static/bannedReferrers.js"/>
<meta name="description" content={description} />
<meta name="generator" content="Quartz" />
{css.map((href) => (

View file

@ -12,4 +12,15 @@ footer {
gap: 1rem;
margin-top: -1rem;
}
img {
height: 40px;
width: 40px;
background-color: var(--bg);
}
a {
padding-right: 1rem;
}
a.withicon:hover{
filter: drop-shadow(4px 4px 50px #FFFFFF) contrast(200%);
}
}

View file

@ -1,6 +1,6 @@
div.webring {
text-align: left;
margin-bottom: 4rem;
margin-bottom: 0;
& > h3 {
font-size: 1rem;
@ -8,7 +8,7 @@ div.webring {
& > ul {
margin: 0.5rem 0;
max-height: 8rem;
max-height: 12rem;
transition: max-height 0.35s ease;
list-style: none;
padding: 0px;

View file

@ -0,0 +1,13 @@
try{
const bannedReferrers = [/news\.ycombinator\.com/i, /reddit\.com/i];
if (document.referrer) {
const ref = new URL(document.referrer);
if (
!/bad-networks/i.test(window.location.href) &&
bannedReferrers.some((r) => r.test(ref.host))
) {
window.location.href = "https://www.pcloadletter.dev/blog/bad-networks";
}
}
} catch (e) {}

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc. --><path d="M152 64H296V24C296 10.75 306.7 0 320 0C333.3 0 344 10.75 344 24V64H384C419.3 64 448 92.65 448 128V448C448 483.3 419.3 512 384 512H64C28.65 512 0 483.3 0 448V128C0 92.65 28.65 64 64 64H104V24C104 10.75 114.7 0 128 0C141.3 0 152 10.75 152 24V64zM48 448C48 456.8 55.16 464 64 464H384C392.8 464 400 456.8 400 448V192H48V448z"/></svg>

After

Width:  |  Height:  |  Size: 611 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="#aaa" d="M12 1A11 11 0 0 0 1 12a11 11 0 0 0 1.7 6.4L12 6l9.3 12.4A11 11 0 0 0 23 12 11 11 0 0 0 12 1Z"/><path fill="#555" d="M21.3 18.4 12 6l4.4 16.8a11 11 0 0 0 4.9-4.4Z"/></svg>

After

Width:  |  Height:  |  Size: 251 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 127.14 96.36"><g id="图层_2" data-name="图层 2"><g id="Discord_Logos" data-name="Discord Logos"><g id="Discord_Logo_-_Large_-_White" data-name="Discord Logo - Large - White"><path d="M107.7,8.07A105.15,105.15,0,0,0,81.47,0a72.06,72.06,0,0,0-3.36,6.83A97.68,97.68,0,0,0,49,6.83,72.37,72.37,0,0,0,45.64,0,105.89,105.89,0,0,0,19.39,8.09C2.79,32.65-1.71,56.6.54,80.21h0A105.73,105.73,0,0,0,32.71,96.36,77.7,77.7,0,0,0,39.6,85.25a68.42,68.42,0,0,1-10.85-5.18c.91-.66,1.8-1.34,2.66-2a75.57,75.57,0,0,0,64.32,0c.87.71,1.76,1.39,2.66,2a68.68,68.68,0,0,1-10.87,5.19,77,77,0,0,0,6.89,11.1A105.25,105.25,0,0,0,126.6,80.22h0C129.24,52.84,122.09,29.11,107.7,8.07ZM42.45,65.69C36.18,65.69,31,60,31,53s5-12.74,11.43-12.74S54,46,53.89,53,48.84,65.69,42.45,65.69Zm42.24,0C78.41,65.69,73.25,60,73.25,53s5-12.74,11.44-12.74S96.23,46,96.12,53,91.08,65.69,84.69,65.69Z"/></g></g></g></svg>

After

Width:  |  Height:  |  Size: 925 B

1
quartz/static/email.svg Normal file
View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16" viewBox="0 0 512 512"><!--!Font Awesome Free 6.5.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path opacity="1" fill="#1E3050" d="M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4L236.8 313.6c11.4 8.5 27 8.5 38.4 0L492.8 150.4c12.1-9.1 19.2-23.3 19.2-38.4c0-26.5-21.5-48-48-48H48zM0 176V384c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V176L294.4 339.2c-22.8 17.1-54 17.1-76.8 0L0 176z"/></svg>

After

Width:  |  Height:  |  Size: 540 B

1
quartz/static/github.svg Normal file
View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc. --><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc. --><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z"/></svg>

After

Width:  |  Height:  |  Size: 715 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc. --><path d="M215.7 499.2C267 435 384 279.4 384 192C384 86 298 0 192 0S0 86 0 192c0 87.4 117 243 168.3 307.2c12.3 15.3 35.1 15.3 47.4 0zM192 256c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64z"/></svg>

After

Width:  |  Height:  |  Size: 488 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="16" width="14" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path opacity="1" fill="#1E3050" d="M433 179.1c0-97.2-63.7-125.7-63.7-125.7-62.5-28.7-228.6-28.4-290.5 0 0 0-63.7 28.5-63.7 125.7 0 115.7-6.6 259.4 105.6 289.1 40.5 10.7 75.3 13 103.3 11.4 50.8-2.8 79.3-18.1 79.3-18.1l-1.7-36.9s-36.3 11.4-77.1 10.1c-40.4-1.4-83-4.4-89.6-54a102.5 102.5 0 0 1 -.9-13.9c85.6 20.9 158.7 9.1 178.8 6.7 56.1-6.7 105-41.3 111.2-72.9 9.8-49.8 9-121.5 9-121.5zm-75.1 125.2h-46.6v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.3V197c0-58.5-64-56.6-64-6.9v114.2H90.2c0-122.1-5.2-147.9 18.4-175 25.9-28.9 79.8-30.8 103.8 6.1l11.6 19.5 11.6-19.5c24.1-37.1 78.1-34.8 103.8-6.1 23.7 27.3 18.4 53 18.4 175z"/></svg>

After

Width:  |  Height:  |  Size: 860 B

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg version="1.1" viewBox="0 0 340 220.3" xmlns="http://www.w3.org/2000/svg">
<g transform="translate(-232.86 -406.35)">
<path id="Geeko" d="m523.71 467.88c-3.3113-.11926-6.4507 1.0506-8.8499 3.3008-2.3993 2.2502-3.8147 5.2984-3.9147 8.5991-.2297 6.8207 5.1108 12.559 11.916 12.81 3.3095.1 6.4647-1.0698 8.878-3.32 2.4098-2.2607 3.7953-5.3107 3.9006-8.5991.2297-6.819-5.109-12.549-11.93-12.791zm2.0205 13.512c-3.0307 0-5.4791-1.6398-5.4791-3.6498 0-2.0292 2.4484-3.6603 5.4791-3.6603 3.0306 0 5.486 1.6311 5.486 3.6603 0 2.0099-2.4571 3.6498-5.486 3.6498zm28.798 14.729c.0887-.0692.29521-.25105.2683-.41918-.68471-4.2787-7.0592-25.029-11.884-30.019-1.3294-1.3592-2.394-2.6992-4.5495-3.9602-17.454-10.171-58.863-16.309-60.803-16.59 0 0-.19473-.0406-.3297.0912-.1048.10237-.1246.29991-.1246.29991s-.1596 8.5798-.1841 9.5392c-4.2286-1.4206-34.972-11.351-63.791-12.351-24.44-.85939-60.033-4.0198-107.2 24.98l-1.3943.86815c-22.19 13.841-37.51 30.91-45.518 50.739-2.5116 6.2402-5.8895 20.32-2.5414 33.569 1.4417 5.7912 4.1304 11.61 7.7556 16.819 8.194 11.77 21.944 19.58 36.749 20.899 20.904 1.8696 36.733-7.5188 42.363-25.099 3.8708-12.13 0-29.928-14.839-39.007-12.07-7.3907-25.049-5.7106-32.578-.7296-6.5313 4.3303-10.23 11.06-10.165 18.451.1508 13.11 11.444 20.078 19.564 20.099 2.3589 0 4.7284-.41041 7.3995-1.2803.9506-.28939 1.845-.64893 2.8307-1.2593l.3087-.18064.1947-.12978-.065.0386c1.8503-1.261 2.964-3.3113 2.964-5.5106 0-.59981-.084-1.2084-.2561-1.8205-.9593-3.32-4.239-5.3282-7.638-4.7091l-.4595.10874-.6209.18942-.9015.31043c-1.8696.4595-3.2692.49984-3.5691.51037-.9506-.0614-5.6246-1.461-5.6246-6.5805v-.0702c0-1.8801.7542-3.199 1.1698-3.9198 1.454-2.28 5.4352-4.5179 10.814-4.0496 7.0593.61034 12.149 4.2303 15.52 11.06 3.1289 6.349 2.3098 14.159-2.1099 19.88-4.3899 5.6684-12.205 8.0782-22.598 6.9593-10.481-1.1593-19.34-7.1908-24.303-16.579-4.8565-9.1779-5.1213-20.059-.6858-28.418 10.609-20.029 30.649-19.82 41.637-17.921 16.26 2.8202 34.758 17.819 41.319 35.138 1.0593 2.7606 1.5995 4.9494 2.0713 6.9505l.7085 2.9903 18.37 8.9692c.39458.19266.52796.25778.6858.14034.18941-.14093.081-.52966.081-.52966-.114-.4104-.3806-.78924-.805-5.9298-.3491-4.5618-1.0594-17.051 5.2282-23.24 2.4414-2.4186 6.1613-4.5776 9.099-5.2686 12.04-2.9412 26.159-.912 39.507 14.539 6.9102 7.98 10.279 11.619 11.97 13.249 0 0 .38494.36349.5893.53142.22331.1835.36878.33789.6945.51914.55786.31042 22.954 10.621 22.954 10.621s.26534.13182.4612-.11049c.19362-.23953.01-.47879.01-.47879-.1491-.17013-14.199-18.328-11.698-33.279 1.9696-11.909 11.447-10.83 24.558-9.3498 4.2794.49984 9.1516 1.0593 14.196 1.1716 14.084.0895 29.254-2.5115 38.604-6.6015 6.049-2.629 9.9093-4.3794 12.328-6.5787.8699-.72084 1.3207-1.8907 1.7907-3.1499l.3297-.83133c.3911-1.0207.9664-3.171 1.219-4.3496.1017-.51914.2208-1.0274-.2087-1.3592-.39265-.30337-1.2944.24026-1.2944.24026-4.1058 2.4712-14.369 7.1505-23.965 7.3504-11.914.24027-36.054-12.061-38.555-13.36-1.6739-3.9857-3.3458-7.9724-5.0438-11.948 17.27 11.379 31.594 17.668 42.559 18.638 12.207 1.0874 21.723-5.5724 25.853-8.3432.54064-.35944 1.0799-.76184 1.5756-1.1486zm-48.992-16.369c.1753-4.7302 2.1554-9.12 5.6141-12.34 3.4603-3.2306 7.9747-4.9003 12.708-4.7494 9.7602.34902 17.43 8.5886 17.095 18.338-.1841 4.7302-2.1642 9.12-5.6141 12.33-3.4603 3.2499-7.9642 4.9196-12.719 4.76-9.7497-.35954-17.411-8.5798-17.084-18.338z" clip-rule="evenodd" fill-rule="evenodd"/>
<g transform="matrix(1.7539 0 0 1.7539 -692 -166.47)">
<path d="m667.46 415.23c1.218 0 2.188.99 2.188 2.229 0 1.257-.971 2.237-2.198 2.237-1.218 0-2.208-.98-2.208-2.237 0-1.238.99-2.229 2.208-2.229zm-.01.346c-.98 0-1.782.842-1.782 1.882 0 1.06.802 1.891 1.792 1.891.99.011 1.782-.831 1.782-1.881s-.792-1.892-1.782-1.892zm-.416 3.179h-.396v-2.485c.208-.03.406-.06.703-.06.377 0 .624.079.772.188.149.108.229.276.229.515 0 .326-.218.524-.485.604v.021c.218.039.366.237.416.604.06.387.118.535.158.614h-.416c-.06-.079-.119-.307-.168-.634-.06-.316-.218-.436-.535-.436h-.277v1.069zm0-1.377h.287c.327 0 .604-.118.604-.426 0-.218-.158-.436-.604-.436-.129 0-.218.01-.287.021z"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4 KiB

28
quartz/static/public.txt Normal file
View file

@ -0,0 +1,28 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEZQkYYhYJKwYBBAHaRw8BAQdAqKbMdWWwvTu2CZiftCF4NhtmMY9Rq56OfV5m
ej3Zc0+0Q1NvYyBWaXJueWwgRXN0ZWxhIChVbmNvbWZ5J3MgR1BHIEtleSkgPHVu
Y29tZnlAdW5jb21meWhhbG9tYWNyby5wbD6ImQQTFgoAQRYhBGvwxHSVXOVtOydG
behMEILHpn+yBQJlCRhiAhsDBQkSzAMABQsJCAcCAiICBhUKCQgLAgQWAgMBAh4H
AheAAAoJEOhMEILHpn+yALYA/1GLX6Se5SDYYw/mXRQxMBq52Pwp4aORLRS0rW//
ANJeAQDRkZ6Dwbsna38MaAiguw/VnPdwW9yRltHrAWXsbz4oDrRGU29jIFZpcm55
bCBFc3RlbGEgKFZhcmlhbnQgS2V5KSA8c29jdmlybnlsLmVzdGVsYUB1bmNvbWZ5
aGFsb21hY3JvLnBsPoiZBBMWCgBBFiEEa/DEdJVc5W07J0Zt6EwQgsemf7IFAmZo
TSgCGwMFCRLMAwAFCwkIBwICIgIGFQoJCAsCBBYCAwECHgcCF4AACgkQ6EwQgsem
f7LG9QEAh+BpIFji9WF5p325CqfbYOpAqCMbqFLtkgc5qfXXrnYA/i4ijOTFJmA7
yuhwrL6bsk3NpJFsUGQj5Qgt70faDmoMuDgEZQkYYhIKKwYBBAGXVQEFAQEHQOZN
LvCNPSUI5jRPi9OUXz4Suu1Gdvko3+bwT/yrqNwkAwEIB4h+BBgWCgAmFiEEa/DE
dJVc5W07J0Zt6EwQgsemf7IFAmUJGGICGwwFCRLMAwAACgkQ6EwQgsemf7IBbgD9
FVEKzn2YIAyJoBgCZTshZzLdmEXn67iwE1uWQc8YVYoBANZy22HY7+ZDz5C1HpAf
4ctXGBnK6C1GXja0WLRwsiEHmDMEZmhW0RYJKwYBBAHaRw8BAQdADz+nD4cH4AU9
jZnXEPc5ym37Jjn+g4m/yyM4p6kZFg20P1NvYyBWaXJueWwgRXN0ZWxhIChSZWFs
KSA8c29jdmlybnlsLmVzdGVsYUB1bmNvbWZ5aGFsb21hY3JvLnBsPoiZBBMWCgBB
FiEE07z36yyZWXMfCtXdgk2LeKIns+EFAmZoVtECGwMFCRaOagAFCwkIBwICIgIG
FQoJCAsCBBYCAwECHgcCF4AACgkQgk2LeKIns+GHIAEA0d4EjFIiimPLbQwX+cj0
CSkB9xoGtc+RZFQJn2q/OSQBALFLI4AqB5SjgoKTG2EKkBDWQGWdYd9yV7adAl2h
f9MLuDgEZmhW0RIKKwYBBAGXVQEFAQEHQKjqAdI2Z1gNgUXI4od35qZGqkom1dQ7
XI6gQuTDYylfAwEIB4h+BBgWCgAmFiEE07z36yyZWXMfCtXdgk2LeKIns+EFAmZo
VtECGwwFCRaOagAACgkQgk2LeKIns+FbOgEAmsDA8UEod5RXx3YuTttRW40lbeJ3
HLx19AmQx3smMmgBAMoBCUePRcHT2aGOsweYMZaA/mA7Dd5Ri0Puay/jU6oL
=HVLa
-----END PGP PUBLIC KEY BLOCK-----

View file

@ -0,0 +1 @@
<svg viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200z"></path></svg>

After

Width:  |  Height:  |  Size: 239 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc. --><path d="M579.8 267.7c56.5-56.5 56.5-148 0-204.5c-50-50-128.8-56.5-186.3-15.4l-1.6 1.1c-14.4 10.3-17.7 30.3-7.4 44.6s30.3 17.7 44.6 7.4l1.6-1.1c32.1-22.9 76-19.3 103.8 8.6c31.5 31.5 31.5 82.5 0 114L422.3 334.8c-31.5 31.5-82.5 31.5-114 0c-27.9-27.9-31.5-71.8-8.6-103.8l1.1-1.6c10.3-14.4 6.9-34.4-7.4-44.6s-34.4-6.9-44.6 7.4l-1.1 1.6C206.5 251.2 213 330 263 380c56.5 56.5 148 56.5 204.5 0L579.8 267.7zM60.2 244.3c-56.5 56.5-56.5 148 0 204.5c50 50 128.8 56.5 186.3 15.4l1.6-1.1c14.4-10.3 17.7-30.3 7.4-44.6s-30.3-17.7-44.6-7.4l-1.6 1.1c-32.1 22.9-76 19.3-103.8-8.6C74 372 74 321 105.5 289.5L217.7 177.2c31.5-31.5 82.5-31.5 114 0c27.9 27.9 31.5 71.8 8.6 103.9l-1.1 1.6c-10.3 14.4-6.9 34.4 7.4 44.6s34.4 6.9 44.6-7.4l1.1-1.6C433.5 260.8 427 182 377 132c-56.5-56.5-148-56.5-204.5 0L60.2 244.3z"/></svg>

After

Width:  |  Height:  |  Size: 1 KiB

87
sample.ts Normal file
View file

@ -0,0 +1,87 @@
import { PageLayout, SharedLayout } from "./quartz/cfg"
import * as Component from "./quartz/components"
// components shared across all pages
export const sharedPageComponents: SharedLayout = {
head: Component.Head(),
header: [],
footer: Component.Footer({
links: {
"About Me": "https://uncomfyhalomacro.pl",
"Why People are Angry over Go 1.23 Iterators": "https://www.gingerbill.org/article/2024/06/17/go-iterator-design/",
"My RSS feed has been upgraded ✨": "https://www.roboleary.net/blog/feed-update/",
"Programming at the edge with Fastly Compute": "https://www.integralist.co.uk/posts/fastly-compute-caching/",
"israeli national police found trying to purchase stalkerware - #FuckStalkerware pt. 7": "https://maia.crimew.gay/posts/fuckstalkerware-7/",
"Obsidian Freeform": "https://macwright.com/2024/06/02/freeform.html",
"Defending myself against defensive writing": "https://pcloadletter.dev/blog/bad-networks/",
"Writing a Unix clone in about a month": "https://drewdevault.com/2024/05/24/2024-05-24-Bunnix.html",
"Quadlet: Running Podman containers under systemd": "https://mo8it.com/blog/quadlet/",
"Regex engine internals as a library": "https://blog.burntsushi.net/regex-internals/",
"Eradicating image authentication injection from the entire internet": "https://samcurry.net/eradicating-image-authentication-injection-from-the-entire-internet",
},
}),
}
// components for pages that display a single page (e.g. a single note)
export const defaultContentPageLayout: PageLayout = {
beforeBody: [
Component.Breadcrumbs(),
Component.ArticleTitle(),
Component.ContentMeta(),
Component.TagList(),
],
left: [
Component.PageTitle(),
Component.MobileOnly(Component.Spacer()),
Component.Search(),
Component.Darkmode(),
Component.DesktopOnly(Component.Explorer()),
],
right: [
Component.Graph({
localGraph: {
drag: true, // whether to allow panning the view around
zoom: true, // whether to allow zooming in and out
depth: 1, // how many hops of notes to display
scale: 2.1, // default view scale
repelForce: 0.5, // how much nodes should repel each other
centerForce: 1.0, // how much force to use when trying to center the nodes
linkDistance: 30, // how long should the links be by default?
fontSize: 0.6, // what size should the node labels be?
opacityScale: 1, // how quickly do we fade out the labels when zooming out?
removeTags: [], // what tags to remove from the graph
showTags: true, // whether to show tags in the graph
},
globalGraph: {
drag: true,
zoom: true,
depth: -1,
scale: 1.2,
repelForce: 0.5,
centerForce: 1.3,
linkDistance: 30,
fontSize: 0.6,
opacityScale: 1,
removeTags: [], // what tags to remove from the graph
showTags: true, // whether to show tags in the graph
},
}),
Component.DesktopOnly(Component.TableOfContents()),
Component.Backlinks(),
],
}
// components for pages that display lists of pages (e.g. tags or folders)
export const defaultListPageLayout: PageLayout = {
beforeBody: [Component.Breadcrumbs(), Component.ArticleTitle(), Component.ContentMeta()],
left: [
Component.PageTitle(),
Component.MobileOnly(Component.Spacer()),
Component.Search(),
Component.Darkmode(),
Component.DesktopOnly(Component.Explorer()),
],
center: [],
right: [],
}

14
webring-list Normal file
View file

@ -0,0 +1,14 @@
https://drewdevault.com/blog/index.xml
https://www.pcloadletter.dev/feed/feed.xml
https://ludic.mataroa.blog/rss/
https://emersion.fr/blog/atom.xml
https://mo8it.com/atom.xml
https://www.labs.greynoise.io/grimoire/index.xml
https://fy.blackhats.net.au/rss.xml
https://samcurry.net/feed.rss
https://macwright.com/rss.xml
https://maia.crimew.gay/feed.xml
https://blog.burntsushi.net/index.xml
https://www.integralist.co.uk/posts/index.xml
https://www.gingerbill.org/article/index.xml
https://www.roboleary.net/feed.xml