This commit is contained in:
Tukain 2024-10-31 21:21:06 -03:00
parent 25e2919ad4
commit f3ec7ffb79
32 changed files with 1421 additions and 1250 deletions

3
Makefile Normal file
View file

@ -0,0 +1,3 @@
all:
# ./blog.sh create
./blog.sh build

View file

@ -1,355 +1,228 @@
:root {
--level-1-bg: #230631;
--level-1-fg: #b6a0ff;
--level-2-bg: #2c0614;
--level-2-fg: #f78fe7;
--level-3-bg: #0f0e39;
--level-3-fg: #2fafff;
--level-1-bg: #230631;
--level-1-fg: #b6a0ff;
--level-2-bg: #2c0614;
--level-2-fg: #f78fe7;
--level-3-bg: #0f0e39;
--level-3-fg: #2fafff;
--background: #000000;
--foreground: #ffffff;
--background-alt: #181732;
--accent: #f5aa80;
--link: #00bcff;
--mode-bar: #2a2a66;
--mode-bar-accent: #00808f;
--yellow: #d0bc00;
--border: solid 1px var(--background-alt);
}
@media (prefers-color-scheme: light) {
:root {
--level-1-bg: #fdf0ff;
--level-1-fg: #5317ac;
--level-2-bg: #fff1f0;
--level-2-fg: #8f0075;
--level-3-bg: #f3f3ff;
--level-3-fg: #0031a9;
--background: #ffffff;
--foreground: #000000;
--background-alt: #f3f3ff;
--accent: #702f00;
--link: #0000c0;
--mode-bar: #d0d6ff;
--mode-bar-accent: #c4ede0;
--yellow: #813e00;
--border: solid 1px var(--foreground);
}
--background: #000000;
--foreground: #ffffff;
--background-alt: #181732;
--accent: #f5aa80;
--link: #00bcff;
--mode-bar: #2a2a66;
--mode-bar-accent: #00808f;
--yellow: #d0bc00;
--border: solid 1px var(--background-alt);
}
@media only screen and (orientation: portrait) {
.hide-on-mobile {
display: none;
}
.link {
display: none;
}
}
@media print {
#table-of-contents {
display: none;
}
#postamble {
display: none;
}
header {
display: none;
}
}
*::-webkit-scrollbar {
display: none;
display: none;
}
* {
margin: 0;
padding: 0;
margin: 0;
padding: 0;
}
html {
position: relative;
font-family: system-ui;
scroll-behavior: smooth;
position: relative;
font-family: system-ui;
scroll-behavior: smooth;
}
body {
background-color: var(--background);
color: var(--foreground);
background-color: var(--background);
color: var(--foreground);
}
#postamble {
position: sticky;
bottom: 0px;
nav {
background-color: var(--mode-bar);
display: flex;
padding: 5px;
justify-content: space-between;
overflow-x: scroll;
margin: 0;
font-family: monospace;
font-size: medium;
border-bottom: solid 15px var(--background);
}
#postamble > header > nav {
background-color: var(--mode-bar);
display: flex;
padding: 5px 20px;
justify-content: space-between;
overflow-x: scroll;
margin: 0;
font-family: monospace;
border-bottom: solid 15px var(--background);
nav > ul {
display: flex;
list-style: none;
}
#postamble > header > nav > ul {
display: flex;
list-style: none;
nav > ul > li {
padding-left: 10px;
padding-right: 10px;
list-style: none;
}
#postamble > header > nav > ul > li {
padding-left: 10px;
padding-right: 10px;
list-style: none;
nav > ul > li > span {
color: var(--yellow);
}
#postamble > header > nav > ul > li > span {
color: var(--yellow);
nav > ul > li > a {
color: var(--foreground);
}
#postamble > header > nav > ul > li > a {
color: var(--foreground);
nav > ul > li > a:hover {
background-color: var(--mode-bar-accent);
}
#postamble > header > nav > ul > li > a:hover {
background-color: var(--mode-bar-accent);
article {
max-width: 80ch;
display: block;
margin: 1em auto;
padding: 10px;
min-height: 100vh;
}
a {
text-decoration: none;
color: var(--link);
text-decoration: none;
color: var(--link);
}
a:hover {
opacity: 80%;
opacity: 80%;
}
hr {
border: var(--border);
border-bottom: none;
border: var(--border);
border-bottom: none;
}
p > code {
color: var(--foreground);
background-color: var(--background-alt);
color: var(--foreground);
background-color: var(--background-alt);
}
pre, code {
background-color: var(--background-alt);
padding: 3px;
overflow-x: scroll;
margin: 10px auto;
background-color: var(--background-alt);
padding: 3px;
overflow-x: scroll;
margin: 10px auto;
}
pre {
margin-left: 1em;
margin-left: 1em;
}
blockquote {
background-color: var(--background-alt);
color: var(--accent);
border-left: solid 5px var(--accent);
padding: 10px 20px;
margin: 10px auto;
background-color: var(--background-alt);
color: var(--accent);
border-left: solid 5px var(--accent);
padding: 10px 20px;
margin: 10px auto;
}
blockquote > p > code {
background-color: var(--link);
color: var(--background);
background-color: var(--link);
color: var(--background);
}
blockquote > pre {
margin-top: 10px;
margin-bottom: 10px;
margin-top: 10px;
margin-bottom: 10px;
}
p, hr {
margin-top: 0.5em;
margin-bottom: 0.5em;
margin-top: 0.5em;
margin-bottom: 0.5em;
}
p {
padding-inline-start: 1em;
padding-inline-start: 1em;
}
ul,
ol {
list-style-position: inside;
padding-inline-start: 2em;
ul, ol {
list-style-position: inside;
padding-inline-start: 2em;
}
ul > li {
list-style: "- ";
list-style: "- ";
}
h1 {
padding: 10px;
border-bottom: var(--border);
font-size: xx-large;
padding: 10px;
border-bottom: var(--border);
font-size: xx-large;
margin-top: 0.5em;
margin-bottom: 0.5em;
text-align: center;
}
h1 {
margin-top: 0.5em;
margin-bottom: 0.5em;
text-align: center;
h2, h3, h4 {
margin: 1em 0;
}
h2,
h3,
h4 {
margin: 1em 0;
h2, h2::before {
content: "* ";
background-color: var(--level-1-bg);
color: var(--level-1-fg);
}
h2,
h2::before {
content: "* ";
background-color: var(--level-1-bg);
color: var(--level-1-fg);
h3, h3::before {
content: "** ";
background-color: var(--level-2-bg);
color: var(--level-2-fg);
}
h3,
h3::before {
content: "** ";
background-color: var(--level-2-bg);
color: var(--level-2-fg);
}
h4,
h4::before {
content: "*** ";
background-color: var(--level-3-bg);
color: var(--level-3-fg);
h4, h4::before {
content: "*** ";
background-color: var(--level-3-bg);
color: var(--level-3-fg);
}
img {
max-height: 300px;
max-width: 100%;
object-fit: cover;
display: block;
margin: 1em auto;
max-height: 300px;
max-width: 100%;
object-fit: cover;
display: block;
margin: 1em auto;
}
table,
th,
td {
border: var(--border);
padding: 5px;
border-collapse: collapse;
table, th, td {
border: var(--border);
padding: 5px;
border-collapse: collapse;
}
table {
border: none;
overflow: scroll;
margin: 1em;
margin-left: auto;
margin-right: auto;
border: none;
overflow: scroll;
margin: 1em;
margin-left: auto;
margin-right: auto;
}
colgroup {
display: block;
margin-left: auto;
margin-right: auto;
}
th,
td {
padding-left: 1em;
padding-right: 1em;
margin: 0;
th, td {
padding-left: 1em;
padding-right: 1em;
margin: 0;
}
th {
font-weight: bold;
background-color: var(--background-alt);
font-weight: bold;
background-color: var(--background-alt);
}
tr:nth-of-type(even) {
background-color: var(--background-alt);
background-color: var(--background-alt);
}
.content {
max-width: 80ch;
display: block;
margin: 1em auto;
padding: 10px;
min-height: 100vh;
}
#table-of-contents {
background-color: var(--background-alt);
padding: 10px;
}
#table-of-contents > h2 {
background-color: var(--background-alt);
color: var(--foreground);
border: none;
margin: 0;
}
#table-of-contents > h2::before {
content: ""
}
.org-center {
text-align: center;
}
.verse {
font-style: italic;
color: var(--accent);
border-top: solid 3px var(--accent);
border-bottom: solid 3px var(--accent);
padding: 10px;
background-color: var(--background-alt);
}
.src:hover::before {
float: right;
border: solid 2px var(--accent);
background-color: var(--accent);
color: var(--background);
min-width: 32px;
text-align: center;
}
.src-C:hover::before {
content: "C"
}
.src-hare:hover::before {
content: "Hare"
}
.src-bash:hover::before {
content: "Bash"
}
.src-html:hover::before {
content: "HTML"
}
.src-javascript:hover::before {
content: "Javascript"
}
.src-css:hover::before {
content: "CSS"
}
.src-lua:hover::before {
content: "Lua"
}
.src-emacs-lisp:hover::before {
content: "Elisp"
}
.src-cpp:hover::before {
content: "C++"
}
.src-python:hover::before {
content: "Python"
}

237
blog.sh Executable file
View file

@ -0,0 +1,237 @@
#!/usr/bin/env bash
# DON'T CHANGE THIS
INPUT=$1
SITE_NAME=$(cat ./config.json | jq -r .name)
SITE_LANG="$(cat ./config.json | jq -r .lang)"
SITE_AUTHOR="$(cat ./config.json | jq -r .author)"
SITE_DESCRIPTION="$(cat ./config.json | jq -r .description)"
SITE_NOTE="$(cat ./config.json | jq -r .note)"
SITE_FAVICON_NAME="$(cat ./config.json | jq -r .favicon.filename)"
SITE_FAVICON_TYPE="$(cat ./config.json | jq -r .favicon.extension)"
SITE_LINK_1_NAME="$(cat ./config.json | jq -r .links[0])"
SITE_LINK_1_URL="$(cat ./config.json | jq -r .links[1])"
SITE_LINK_2_NAME="$(cat ./config.json | jq -r .links[2])"
SITE_LINK_2_URL="$(cat ./config.json | jq -r .links[3])"
SITE_LINK_3_NAME="$(cat ./config.json | jq -r .links[4])"
SITE_LINK_3_URL="$(cat ./config.json | jq -r .links[5])"
SITE_LINK_4_NAME="$(cat ./config.json | jq -r .links[6])"
SITE_LINK_4_URL="$(cat ./config.json | jq -r .links[7])"
SITE_LINK_5_NAME="$(cat ./config.json | jq -r .links[8])"
SITE_LINK_5_URL="$(cat ./config.json | jq -r .links[9])"
create_site() {
[[ -z "$(which smu)" ]] && echo "smu is not installed! Please install it from https://git.codemadness.org/smu/" && exit 1
[[ -z "$(which jq)" ]] && echo "jq is not installed! Please install it from your package repo!" && exit 1
[[ ! -f "config.json" ]] && echo "You don't have a config.json file!" && exit 1
mkdir -p "content"
mkdir -p "assets"
mkdir -p "pages"
mkdir -p "public"
touch ".site"
cat << EOF > "pages/head.html"
<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Language" content="${SITE_LANG}" />
<meta name="generator" content="blog.sh" />
<meta name="author" content="${SITE_AUTHOR}" />
<meta name="description" content="${SITE_DESCRIPTION}" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" href="/assets/${SITE_FAVICON_NAME}.${SITE_FAVICON_TYPE}" type="image/${SITE_FAVICON_TYPE}" />
<link href="/assets/styles.css" rel="stylesheet">
<title>${SITE_NAME}</title>
</head>
<body>
EOF
echo "<header><nav><ul><li><a href=\"/\">Home</a></li></ul><ul class=\"link\">" > "pages/navbar.html"
[[ ! "$SITE_LINK_1_URL" == "null" ]] && echo "<li><a href=\"$SITE_LINK_1_URL\">[$SITE_LINK_1_NAME]</a> </li>" >> "pages/navbar.html"
[[ ! "$SITE_LINK_2_URL" == "null" ]] && echo "<li><a href=\"$SITE_LINK_2_URL\">[$SITE_LINK_2_NAME]</a> </li>" >> "pages/navbar.html"
[[ ! "$SITE_LINK_3_URL" == "null" ]] && echo "<li><a href=\"$SITE_LINK_3_URL\">[$SITE_LINK_3_NAME]</a> </li>" >> "pages/navbar.html"
[[ ! "$SITE_LINK_4_URL" == "null" ]] && echo "<li><a href=\"$SITE_LINK_4_URL\">[$SITE_LINK_4_NAME]</a> </li>" >> "pages/navbar.html"
[[ ! "$SITE_LINK_5_URL" == "null" ]] && echo "<li><a href=\"$SITE_LINK_5_URL\">[$SITE_LINK_5_NAME]</a> </li>" >> "pages/navbar.html"
echo "</ul><ul><li><a href=\"/blog.html\">Blog</a></li></ul></nav></header><article>" >> "pages/navbar.html"
cat << EOF > "pages/footer.html"
</article>
<footer><p>Made with <a href="https://codeberg.org/tukain/blog.sh">blog.sh</a></p></footer>
</body>
EOF
cat << EOF > "content/deleteme"
# blog.sh
<center>A <s>simple</s> shitty Static Site Generator writen in bash.</center>
> Before you proceed on reading all of this yappanese
>
> - All variables are defined inside a \`config.json\` file.
> - You **NEED** to have \`smu\` installed. it is a simple program that converts a Markdown-like file to HTML, and it is used by this script. You can clone it from git://git.codemadness.org/smu
## How to use
To create a site, first, modify the \`name\` key inside the \`config.json\` file, and then, just type
blog.sh create
This will create a directory with the name specified on the \`name\`
key with the directory structure used by \`blog.sh\`.
The posts are located in the \`content\` directory, the names of each files
needs to be like the following:
1970-01-01
1991-07-03
1996-10-01
2003-11-06
2004-10-20
They are organized in ascending order, that is, \`1991-07-04\` will be placed
above \`1991-07-03\`.
> You don't need to worry about the numbers, they are just for organization
> purposes and don't show on the index page.
> Oh, and you don't _need_ to care about it either, that is, if you just want to
> see the circus taking fire.
You may have already noticed that there are no file extensions present on the
filename. The reason for it is that it was easier for my smooth brain to write
something that parsed the filenames without any issues.
The title of each post will be taken from a \`<h1>\` tag present on the post. So
yes, do not use \`<h1>\` tags (one \`#\`) on the post's apart for the title of it.
## The config.json file
Yeah... I'm using json to configure this thing, idk, it's easier to just use \`jq\`
and don't think much about it.
The config looks like this:
{
"name": "foo",
"author": "bar",
"lang": "en-us",
"description": "lorem ipsum",
"note": "You could've just used jekyll or Hugo, you know that, right?",
"favicon": {
"filename": "fav",
"extension": "webp"
},
"links": [
"Neocities", "https://neocities.org/site/tukainpng",
"Codeberg", "https://codeberg.org/tukain"
]
}
If you don't have a \`config.json\` file on the directory that you're currently,
then you won't be able to use the \`create\` command.
## smu syntax
Wellll..... If you have already used Markdown, then you are at home... But not quite.
Things like headings
# Works
## Exactly
### The
#### Same
##### Way
And the same goes to \`_Italic_\`, \`**Bold**\` and \`***Bold Italic***\`.
Oh, and
\`inline code\`
too.
### Things that are diferent from Markdown
smu doesn't have a syntax for
- Tables
- Images
But, you can use regular ol' HTML on smu without any problems.
Code Blocks are made by indenting something with about 4 spaces before any text,
anything indented like that will be enclosed inside a \`<code>\` tag.
## Why have you brought this upon this cursed land?
First of all: because I can, and I'm a idiot.
<img src="/assets/img/monkey.webp">
Second, I really liked my experience of using [Org-mode's](https://orgmode.org/)
\`export to HTML\` feature. It's basically a SSG, a basic one, but still one.
So I wanted to create my own, one that is just focused on blog creation (so
it's easier to write) and that was as much portable as it could get.
And here it is, a shitty SSG that takes whatever the hell is on the config file
and on the content directory and throws a bunch of HTML out of it.
EOF
}
build_site() {
[[ ! -f ".site" ]] && echo "You're not inside the site directory!" && exit 1
rm -rf ./public
mkdir -p public/posts
for FILE in $(/bin/ls ./content)
do
cat ./pages/head.html > public/posts/$FILE.html
cat ./pages/navbar.html >> public/posts/$FILE.html
smu ./content/$FILE >> public/posts/$FILE.html
cat ./pages/footer.html >> public/posts/$FILE.html
done
cat ./pages/head.html > index.html
cat ./pages/navbar.html >> index.html
echo "<h1>$SITE_NAME</h1>" >> index.html
echo "<h4><i>${SITE_NOTE}</i></h4>" >> index.html
[[ ! -z "$SITE_DESCRIPTION" ]] && echo "<p>${SITE_DESCRIPTION}</p>" >> index.html
cat ./pages/footer.html >> index.html
cat ./pages/head.html > blog.html
cat ./pages/navbar.html >> blog.html
echo "<h2>Posts</h2>" >> blog.html
echo "<ul>" >> blog.html
for PAGE in $(/bin/ls -1 ./public/posts | sort -r | tr '\n' ' ')
do
echo "<li><a href=\"/posts/${PAGE}\">$(grep '<h1>' ./public/posts/$PAGE | tr '<>/' '\n' | head -n3 | tail -n1 )</a></li>" >> blog.html
done
echo "</ul>" >> blog.html
cat ./pages/footer.html >> blog.html
mv *.html public
cp -r ./assets ./public
}
version() {
printf "\e[32mblog.sh \e[34m(v0.0.1)\e[0m\n"
}
case $INPUT in
"build") build_site;;
"create") create_site;;
"version") version;;
*) cat << EOF
Usage: blog.sh <command>
version - shows blog.sh version
create - create the website structure
build - build the website
EOF
;;
esac

View file

@ -1,49 +0,0 @@
(require 'ox-publish)
(require 'htmlize)
(delete-directory "./public" t)
(setq org-html-postamble
(concat
"<header>"
"<nav>"
"<ul>"
"<li class=\"hide-on-mobile\">U:---</li>"
"<li>%t.org</li>"
"<li class=\"hide-on-mobile\">-</li>"
"<li class=\"hide-on-mobile\">%C</li>"
"<li class=\"hide-on-mobile\">(Elisp<span>/d</span> ARev WK company)</li>"
"</ul>"
"<ul>"
"<li><a href=\"/\">Início</a></li>"
"<li><a href=\"/sitemap.html\">Sitemap</a></li>"
"</ul>"
"</nav>"
"</footer>"))
(setq org-html-head "<link rel=icon type=\"image/webp\" href=\"/assets/fav.webp\"> <link rel=stylesheet href=\"/assets/styles.css\" />"
org-html-head-include-default-style nil
org-html-head-include-scripts nil
org-html-preamble nil
org-html-use-infojs nil
org-html-doctype "html5"
org-html-html5-fancy t)
(setq org-publish-project-alist
(list
(list "Tukain's Blog"
:base-directory "./content"
:auto-sitemap t
:sitemap-title "Sitemap"
:recursive t
:htmlized-source t
:publishing-directory "./public"
:section-numbers nil
:language "pt-br"
:publishing-function 'org-html-publish-to-html)))
(org-publish-all t)
(copy-directory "./assets" "./public/assets")

19
config.json Normal file
View file

@ -0,0 +1,19 @@
{
"name": "Tukain's Blog",
"author": "Tukain",
"lang": "pt-br",
"note": "Não espere o mínimo de consistência aqui.",
"description": "Aqui é um lugar onde eu gosto de comentar sobre assuntos envolvendo o meu cotidiano nesse vasto mundo chamado internet. E também sobre alguns assuntos que eu achar interessante o suficiente para comentar.",
"favicon": {
"filename": "fav",
"extension": "webp"
},
"links": [
"Neocities",
"https://neocities.org/site/tukainpng",
"Codeberg",
"https://codeberg.org/tukain",
"Disroot",
"https://git.disroot.org/tukain"
]
}

View file

@ -0,0 +1,51 @@
# Hare
## Praticamente C, mas com diversas melhorias
A Hare é uma linguagem da família das linguagens C-like, e a sua sintaxe
deixa isso bem explícito, porém, ela tem algumas das inovações das
últimas décadas consigo e também se inspira na sintaxe de outras
linguagens, como a Rust.
Porém, diferente de Rust, você não vai ter que esperar por minutos ou
horas para o compilador terminar o serviço, nem quebrar a cabeça com o
seu código para que ele seja "memory safe", ela não tem garbage
collectors nem nada desse tipo, é como eu disse, ela é praticamente C.
Contudo, ela não é uma linguagem com as mesmas limitações ou problemas
que C possui, e além disso ela tem uma sintaxe que, para mim, não só é
mais clara, como mais fácil de entender o que está acontecendo.
Claramente isso é apenas algo que depende da minha experiência, mas até
mesmo a minha namorada conseguiu entender como um Struct estava sendo
usado em um dos exemplos que eu escrevi em Hare, enquanto isso, o mesmo
exemplo em C foi... Confuso para dizer no mínimo.
## QBE como backend
O compilador da Hare usa o QBE Backend, o que torna o compilador dela
extremamente rápido e leve, e também facilita o processo de criar ports
do compilador para outras arquiteturas. Eu não irei entrar muito em
detalhes sobre o que é um Compiler Backend, mas devo parafrasear algo
vindo do próprio site do QBE:
> QBE é um backend para compiladores, com o foco de providenciar 70% da
> performance de compiladores otimizados da indústria com 10% do código.
De certa forma, o QBE se encaixa até mesmo na filosofia suckless, o que
para mim pelo menos, é um grande ponto possitivo.
## O que eu planejo fazer aprendendo a programar?
Atualmente, eu vejo a programação como um hobbie para mim, um hobbie que
eu gosto e muito, mas isso não me impede de colocar essa habilidade no
meu currículo, um dia isso pode vir a ser extremamente útil.
Por enquanto eu estou aprendendo o básico, recém fiz o meu primeiro
Struct, ainda falta muito para eu dizer que eu sei fazer alguma coisa,
quanto mais dizer que eu sei programar. Mas isso só depende do meu
esforço, então irei correr atrás.
## *Fin*
Enfim, é isso, até o próximo post!

View file

@ -0,0 +1,104 @@
# A simplicidade de C e Hare
Recentemente eu fiz um post sobre os meus estudos com a linguagem de
programação Hare, falei sobre o que eu planejo fazer com esse
conhecimento entre outras coisas. Mas algo que eu não comentei sobre foi
o fato de eu estar estudando Hare em conjunto com C (só mencionei que a
sintaxe da Hare é semelhante a C).
## Por quê estou fazendo isso?
Bom, isso é algo que eu simplesmente esqueci de comentar no meu último
post, estou fazendo isso por 2 motivos principais:
As sintaxes são semelhantes, então posso pegar um conhecimento novo de
uma e levar para outra; Ambas são linguagens low-level, com foco em alto
desempenho e possuem manipulação manual de memória, então posso aprender
esse conceito de forma prática. Claro que existem outros motivos para eu
fazer algo nesse estilo, mas eu não vejo a necessidade de listar todos
eles aqui. Afinal, já é algo "estranho" para um jovem da minha idade ter
interesse em uma "linguagem defasada e insegura" como a C, ao invés de
querer aprender algo como Python, Ruby ou Javascript.
## Existe algum outro motivo?
Óbviamente que sim. Aprender C/Hare é algo como um sonho que quero, e
posso, tornar realidade. É algo que chega perto de uma romantização, um
sentimento que dá vontade de correr atrás, de se esforçar para
alcança-lo.
Quase como você sonha em ter seu próprio carro, viver sozinho, ou viajar
o mundo. Não é um sentimento fácil de por em palavras.
## Como está meu progresso até agora?
Bom, eu iniciei meus estudos a pouquíssimo tempo, então ainda estou em
meus estágios iniciais. Porém já aprendi alguns conceitos básicos como
if statements, which loop, for loop, switch-case, structs e alguns types
também (tanto em C quanto em Hare).
Também comecei a fazer alguns programas extremamente simples só para
fixar esses conceitos na minha cabeça, um exemplo desses programas é um
programa que cria um arquivo vazio usando um nome que o usuário fornece.
/* Escrito em C */
int main()
{
FILE *arq;
char nome[100];
printf("Digite o nome do arquivo: ");
scanf("%s", &nome[0]);
if (fopen(nome, "r"))
{
printf("O arquivo já existe.\n");
}
else
{
arq = fopen(nome, "w");
}
}
/* Escrito em Hare */
use os;
use bufio;
use strings;
export fn main() void = {
let arquivo = nomeDoArquivo();
if (os::exists(arquivo)) {
fmt::println("Arquivo já existe.\n")!;
} else {
os::create(arquivo, 384)!;
};
};
fn nomeDoArquivo() str = {
fmt::printf("Escreva o nome do arquivo.\n:")!;
const inputUser = bufio::read_line(os::stdin)! as []u8;
return strings::fromutf8(inputUser)!;
};
## As diferenças
Algo que já para notar nesses exemplos é que o código em Hare é um pouco
maior que o código em C, o motivo disso é que a Hare tem um foco na
manipulação de erros. O que faz com que você tenha não só ter plena
noção do que deve ser feito em caso de algum erro, mas também dizer ao
programa o que ele vai fazer em caso de erro.
A consequência disso é ter um pouco mais de linhas de código necessárias
e também mais símbolos para serem utilizados durante a escrita do
programa.
Apesar disso, eu acho a sintaxe da Hare mais legível que a C em alguns
casos, como por exemplo na criação e utilização de structs.
## *Fin*
Bem, isso é tudo o que eu tenho a dizer por agora.
Até o próximo post!

View file

@ -0,0 +1,82 @@
# Tô usando os serviços da Proton
Depois de aproximadamente 1 ano, eu criei uma nova conta no
[Proton](https://proton.me). Um serviço de e-mail/calendário
online/VPN/cloud storage/gerenciador de senhas/carteira de bitcoin,
enfim, um serviço que foca em prover basicamente as ferramentas que
comumemte utilizamos com mais frequência do Google (Gmail, Google
Calendar, Google Drive, Google Passwords) com aquela pitada de
privacidade que só a mão do Shaquille O'Neal consegue fazer.
## Por que?
Nas últimas semanas eu comecei a voltar ao meu antigo estilo de vida sem
o Google, o fato de eu ter conseguido um emprego foi um facilitador
nesse aspecto. No dia do aniversário do meu irmão, eu troquei de celular
com ele, dando o meu Poco M4 Pro para ele e ficando com o Moto G52 dele.
Essa não foi a primeira vez que a gente fez isso, na verdade na primeira
vez que fiz isso com ele foi porque o Moto G52 possui uma ROM oficial da
LineageOS disponível, e digamos que quando eu descobri isso eu tive uma
[ativação
neural](https://i.pinimg.com/736x/87/07/97/8707972a759975b07d188308c948cc27.jpg)
e no mesmo dia a gente fez essa troca. E claro, eu coloquei a Lineage no
G52.
Enfim, vou cortar um pouco da história e pular para o presente. Depois
que eu fiquei com o G52 com a Lineage instalada novamente, eu comecei a
fazer uma especie de "detox digital", mas eu não estava deletando
contas, eu estava desvinculando o Google delas. Porém, uma coisa que
estava sendo uma pedra no meu caminho era o Gmail, e bem, eu tenho
e-mails alternativos, mas os servidores deles são lentos o suficiente
para que eu basicamente só leia um e-mail 1 hora depois que eu
"recebi" ele.
Tendo isso em mente, eu criei uma nova conta no Proton, que dentre
várias coisas, também me dá acesso a 10 e-mail aliases. O que me permite
remover o Gmail da jogada, e mesmo as coisas que não estão (ainda)
usando aliases não ficam presas no limbo, já que o Proton me permite
receber os e-mails do Gmail, no Proton, ou seja, eu não preciso nem
mesmo abrir o Gmail para ler os e-mails que chegam por lá.
## Mudanças no armazenamento
Ano passado, quando eu tinha uma conta no Proton, o armazenamento era
bem limitado, somente 1Gb (depois de fazer uma configuração na conta, o
padrão era 512Mb) era disponível. Esses 1Gb eram compartilhado entre o
serviço de e-mail/calendário e o de cloud storage. Não sei se já ficou
claro, mas 1Gb não é lá muita coisa para um serviço de cloud storage,
muito menos quando isso é compartilhado com outros serviços.
Mas, com a nova conta que criei ainda hoje, eu reparei que no serviço de
e-mail o armazenamento continua sendo de 1Gb, porém o serviço de cloud
storage se inicia com 3Gb! Podendo ser aumentado para 5Gb depois de
seguir um passo a passo de configuração!
Isso é algo que eu simplesmente não tava esperando, mas é uma mudança
mais que bem vinda, porque eu posso mover os arquivos que eu tinha no
Google Drive para cá com muito mais folga.
## Uma senha praticamente impossível de digitar para a minha conta do Google
Eu também estou dificultando ao máximo o meu login do Google,
praticamente tornando impossível que eu faça login sem utilizar o
KeePass, o que por sua vez, faz com que eu deixe de utilizar um sistema
que não seja uma distro linux, no caso do meu pc, ou a LinageOS, no meu
celular.
O KeePassXC havia lançado a +/- 2 meses atrás uma função que te permite
criar passkeys utilizando o próprio KeePassXC, o que elimina a
necessidade de um celular com a Google impregnada ou um iPhone.
Óbviamente eu já passei a limpa em todas as contas que eu usava uma
passkey da Google e gerei novas usando o KeePassXC.
Tudo isso me deixa cada vez menos dependente do Google, o que é algo que
sinceramente qualquer pessoa deveria tentar fazer. Não só com o Google,
mas com basicamente qualquer uma dessas empresas que até um idoso de 90
anos reconhece de tão popular.
## *Fin*
Enfim, acho que já tagarelei demais.
Até o próximo post!

View file

@ -0,0 +1,72 @@
# Fiz meu próprio SSG
Dos produtores de "Ovorefazermeusaite", vêm aí "E se eu fizer meu
próprio gerador de sites?"!
Agora falando sério, eu realmente fiz o meu próprio SSG (Static Site
Generator).
Ele não é nada demais, na realidade ele não é muito diferente dos
scripts que eu fazia para conseguir criar um post novo de forma mais
rápida, a diferença fica só na sofisticação do script e um pouco da
forma em que ele opera.
## Geração de site rápida pra k7
Uma coisa que é extremamente notável é a diferença na hora de fazer a
geração do site. É simplesmente absurdo. É como comparar a velocidade de
um jogo feito em C, para um feito em JavaScript.
No Emacs, a geração do site feito em org-mode leva uma coisa de 2 a 4
segundos, o que é relativamente rápido, porém, o meu script leva
aproximadamente 0.071 segundos para fazer a mesma coisa.
Tudo bem, eu não tenho uma tabela de conteúdo e nem o syntax
highlighting, porém, essas são coisas que eu estou disposto a descartar
se significar que eu vou ter uma geração de páginas dezenas de vezes
mais rápida.
## Por debaixo dos panos
O script possui um comando que cuida da criação da estrutura de arquivos
e um que "compila" o site com base nessa estrutura. Como você faz para
usar essa estrutura de arquivos e quais as regras impostas pelo script
podem ser achadas no readme que é gerado junto do website
Todos os arquivos dentro do diretório content são lidos pelo smu,
programa que é utilizado para converter um texto no estilo Markdown para
HTML.
O smu não tem suporte para tudo o que o Markdown tem a oferecer, porém
ele aceita o uso de tags HTML, então tudo o que o smu não tiver suporte
pode ser substituído por uma tag.
## Por que?
Eu fiz isso puramente para ver se eu conseguiria fazer um SSG, e, se
tratando de funcionalidade básica, eu consegui sem nenhum problema.
Mas um outro ponto que me fez fazer isso foi o Neovim... Olha, eu não
sei se isso é algum tipo de apego ou algo do gênero, mas eu simplesmente
fiquei com saudades de usar o meu Neovim.
A configuração que eu tenho é
equivalente à minha configuração do Emacs, não em todos os aspectos, mas
quando se trata de edição de texto/código, ambos são quase os mesmos,
porém o Neovim ainda leva a vantagem, porque o Neovim tem suporte ao LSP
(Language Server Protocol), o que faz com que o auto-complete do Neovim
seja muito mais versátil e preciso do que usar o company-mode no Emacs.
Outra coisa que eu consigo fazer agora que eu fiz o meu próprio SSG é
usar ele em conjunto com o Neovim ou qualquer outro editor de texto que
eu queira, basta eu salvar o arquivo e digitar o comando:
blog.sh build
Tudo o que eu preciso fazer agora é ficar de olho em qualquer bug que
possa aparecer.
## *Fin*
Enfim, é isso o que eu tinha para falar por agora.
Te vejo no próximo post!

135
content/2024-10-12_emacs.md Normal file
View file

@ -0,0 +1,135 @@
# Emacs
Olha só quem voltou! E mais uma vez com o site completamente mudado!
Pois é, estou de volta, e dessa vez trago comigo algumas novidades em
relação ao site e ao meu setup atual (spoiler: tá tudo no Emacs).
## Emacs, que saudades que estava de você!
A um tempo eu vim tendo essa vontade de voltar a usar o Emacs, mas a
preguiça de ter que refazer a minha config do 0 era muito grande, até
que bem, vamos dizer que o hiperfoco atacou e eu refiz a minha
configuração de qualquer jeito.
A maior diferença é que eu já tenho alguma experiência no assunto, então
não tive muita dificuldade em fazer essa nova config. Posso inclusive
dizer que esta é, até o momento, a melhor configuração que eu já fiz até
agora.
## Org-mode, o criador de sites mais prático que conheço
Apesar de ter usado diversos SSGg's nos últimos tempos, nenhum deles
possui a praticidade de simplesmente gerar uma página HTML a partir de
um buffer que esteja aberto no seu editor com a mesma facilidade que o
Emacs junto do Org-mode conseguem ter.
Esse site inteiro foi refeito utilizando essa ferramenta de gereção de
sites nativa do Emacs.
## Zero JavaScript
Mais uma vez, estou com 0 JS presente neste site, o que por si só já é
uma conquista e tanto, afinal, quanto menos JS, melhor.
E não é porque eu não tenho JS que eu perco coisas como
*Table-of-contents* ou *Syntax-highlighting*, nada disso, ambos são
coisas nativas do org-mode, feitos para serem utilizados e abusados.
Ele também é o melhor highlighter que eu já usei, porque literalmente
qualquer coisa que eu tenha um syntax highlight no Emacs fica com o
mesmo syntax-highlight no site gerado.
## Quase um SSG... Quase.
Apesar de tudo, o org-mode não vem com um SSG, essa função na realidade
é uma ferramenta de publicação de artigos, tanto que o nome do pacote é
ox-**publish**. Ainda assim, com um script simples e um pouco de elisp,
você consegue ter um pouco do que um SSG consegue te oferecer.
E quando eu falo um pouco, eu não tô de sacanagem, isso é tudo o que eu
preciso para ter meu site na forma em que eu quero:
*Configurando o ox-publish e automatizando o processo de criação de
HTML.*
(require 'ox-publish)
(require 'package)
(add-to-list 'package-archives '("melpa" . "http://melpa.org/packages/"))
(package-initialize)
(unless (package-installed-p 'use-package)
(package-refresh-contents)
(package-install 'use-package))
(eval-when-compile
(require 'use-package))
(use-package htmlize
:ensure t)
(use-package kanagawa-themes
:ensure t
:init (load-theme 'kanagawa-wave t))
(require 'htmlize)
(setq org-html-head "<link rel=stylesheet href=\"/assets/css/styles.css\" />"
org-html-head-include-default-style nil
org-html-head-include-scripts nil
org-html-preamble nil
org-html-postamble nil
org-html-use-infojs nil)
(setq org-publish-project-alist
(list
(list "Tukain's Blog"
:base-directory "./content"
:recursive t
:htmlized-source t
:publishing-directory "./public"
:section-numbers nil
:publishing-function 'org-html-publish-to-html)))
(org-publish-all t)
(message "Site gerado!")
*Um script para executar os comandos necessários para gerar o site*
#!/bin/sh
mkdir -p public && emacs -x build.el && cp -r assets/ public/
Depois disso, o único trabalho que eu tenho é de fazer um artigo e
listá-lo na minha homepage, e pronto!
## Outras coisas que estão no meu Emacs
É mais que claro que o Emacs é conhecido por seus usuários que, em boa
parte dos casos, transformam o Emacs em um sistema operacional
praticamente. E eu não sou muito diferente deles 🤓.
Atualmente eu já configurei o Emacs o suficiente para substituir a minha
configuração do Neovim, e também configurei coisas como:
- Um servidor HTTP (para visualizar o meu site localmente)
- Um agente PGP (EasyPG).
- Um cliente de email (Gnus)
- Uma interface para o Git (Magit)
- Um leitor de feeds RSS (Elfeed)
Também estou vendo como configurar um cliente Jabber (XMPP) e vou
configurar o Erc (o cliente IRC nativo do Emacs). Há também outras
coisas que eu quero fazer, mas não acho que seja necessário falar sobre
elas, afinal já estou tagarelando demais.
## Aos poucos, estou deixando o meu setup ser apenas um ambiente onde eu possa usar o Emacs
Eu ainda não iniciei o meu arco Uchirra da vida e saí eliminando meus
programas, ainda.
Eu já tenho em mente o que eu quero fazer e como eu vou fazer para
conseguir transformar o meu setup atual em algo que serve apenas para
acomodar o Emacs. Alguns programas que eu posso remover, por exemplo,
são o Lazygit (Porque eu já tenho o Magit) e o lf (Porque o Emacs vem
com o Dired).
Mas vou deixar para fazer isso outra hora, afinal de contas isso vai
tomar um pouco do meu tempo para poder concluir.
## *Fin*
Enfim, acho que já é hora de eu para de ficar tagarelando.
Te vejo no próximo post!

View file

@ -0,0 +1,113 @@
# Emacs - Parte 2
Hmmm... Parte 2? Hmmm...
Bem, eu não acho que isso vá ser um post longo ou que vá adicionar muito
ao [post original](./emacs.html), então você pode ignorar ele a vontade.
## Sobre o "ambiente onde eu possa usar o Emacs"
Então, eu já consegui fazer um. É meio que feito na gambiarra, mas
funciona.
Eu estou utilizando o compositor wayland Cage, um compositor que tem o
objetivo de ser uma ferramenta para criação de kioskg's. Tipo um kiosk
onde tem um menu de restaurante e etc.
Porém, como eu posso rodar qualquer programa que eu quiser nele, então
nada melhor do que fazer um "kiosk" com o Emacs!
O resultado dessa monstruosidade é um Emacs rodando em tela cheia com um
teclado inteiro a disposição para ser usado sem ter algum outro elemento
que possa ter teclas de atalho conflitantes com as do Emacs.
Simplificando, eu posso usar até mesmo a tecla super (Windows) se eu
quiser e eu vou estar de boa.
## O que mais adicionei à minha configuração do Emacs?
Teclas de atalho novas, como por exemplo, teclas para:
- Aumentar/diminuir o brilho da tela do meu notebook;
- Aumentar/diminuir o volume do meu notebook;
- Capturar a tela do Emacs ([usando o próprio
emacs](https://gitlab.com/marcowahl/emacsshot)).
- Gravar a tela
Também deixei habilitados por padrão 2 minor-modes do Emacs que são
pré-instalados (por alguma razão), eles são o `display-battery-mode`, e
`display-time-mode`. Ambos são minor-modes que poem seu output na barra
do Emacs (eu não faço ideia de qual é o nome oficial dessa bagaça), o
que significa que a barra do Emacs se tornou o equivalente à barra do
Sway, o meu compositor wayland favorito.
## Org-publish é praticamente um SSG
Eu sei que eu já comentei algo parecido com isso no meu [outro
post](./emacs.html):
> Apesar de ter usado diversos SSGg's nos últimos tempos, nenhum deles
> possui a praticidade de simplesmente gerar uma página HTML a partir de
> um buffer que esteja aberto no seu editor com a mesma facilidade que o
> Emacs junto do Org-mode conseguem ter.
>
> Esse site inteiro foi refeito utilizando essa ferramenta de gereção de
> sites nativa do Emacs.
Mas acho que eu não consegui transparecer o quão prático e simples é o
processo de escrever e "publicar" o que foi escrito.
Se você já usou um SSG como por exemplo o Jekyll, você pode interpretar
o org-publish como uma template do Jekyll em que você pode fazer algumas
modificações e que não tem muitas automações por parte dela.
Todas as páginas seguem um padrão pré-definido, todas.
Ou seja, você pode usar o seu CSS pensando somente em 1 página, porque
todas as outras vão ser clones dessa página em que você está se
inspirando.
Um bom exemplo disso é esse próprio site. Se você observar bem, não
existe muito uma grande diferença entre a página de um post e a página
de index. Na verdade a única diferença é a falta de uma tabela de
conteúdo na página index.
Outra coisa também que eu encontrei, depois de xeretar um pouco na
inter-webs, eu encontrei algumas características interessantes sobre o
ox-publish. Uma delas é que as variáveis que criam o preâmbulo e o
pós-âmbulo da página (são uns bagulho de autor e de validação da página)
podem ser modificadas para qualquer string que o usuário prefira. Ou
seja, eu posso colocar meu próprio HTML nelas!
O que em termos práticos, faz com que o ox-publish faça o que eu achava
que era a maior utilidade de um SSG: re-utilizar um elemento de uma
página em todas as outras.
Por enquanto eu só adicionei uma footer com o nome do author do artigo e
com a data de última modificação do arquivo (sim, esse bagulho tem até
variáveis que você pode usar).
## A site é praticamente um espelho da minha config
O meu site e o meu Emacs possuem uma aparência muito similar, o que é
proposital, já que dessa forma eu consigo ter uma certa noção de como
meu site vai ficar, tirando a necessidade de usar um navegador para
visualizar a página do meu site.
Não é que eu não veja como a página fica, mas eu não tenho a necessidade
de ver como ele fica.
Melhor do que só mencionar é mostrar, então aqui está uma screenshot do
meu Emacs:
![](../assets/img/emacs-parte-2.webp)
Não é um completo clone 1 por 1, mas pelo menos eles tem certa
semelhança, dessa maneira eu consigo me concentrar apenas em escrever
com tranquilidade, afinal de contas o site final é extremamente
semelhante ao o que eu já estou vendo no editor.
## *Fin*
Bem, é isso. Eu falei que esse posts seria algo rápido.
Enfim, até o próximo post!

View file

@ -0,0 +1,76 @@
# Viper mode
Esse mostro de um programa é tão cheio de coisa para se falar que já
garantiu até uma trilogia nesse blog.
## Viper
A um pouco mais de 3 horas atrás, enquanto eu ainda estava no meu
trabalho, eu fiquei pesquisando um pouco sobre o Emacs, e eu acabei
achando o diretório de manuais de referência dele. Dois deles me
chamaram (e muito) a minha atenção, os manuais de referência do vip-mode
e do `viper-mode`.
Obviamente que quando eu vi esses manuais eu cliquei neles para ver do
que eles se tratavam, e bom, eles são modos que emulam os controles do
VI, o editor de texto modal que vem com qualquer sistema Unix e que foi
dele que surgiu o Vim (VI iMproved).
Eu decidi usar o `viper` no lugar do vip só porque ele
aparenta ser uma opção mais completa em comparação. Ele chega no nível
de até mesmo ter um mini-tutorial e um wizard perguntando qual o seu
nível de expertise com ele.
## Bem, e como é usar ele?
Como já disse, o `viper` emula o VI e não o Vim (isso é o que
o evil-mode faz), sendo assim ele não tem as mesmas teclas/comandos que
o Vim possui. Porém, você ainda pode usar as teclas do Emacs em conjunto
com as teclas do VI, o que mais que compensa, **na minha opinião**, a
falta das teclas do Vim.
Só de ter uma parte das teclas que são usadas no Vim já torna a minha
experiência muito melhor. Afinal, apesar do Emacs ser um programa que é
ótimo em diversos aspectos, as teclas de atalho dele não são
particularmente um ponto positivo dele.
E é claro que como tudo no Emacs, eu posso customizar o
`viper` e adicionar os comandos que eu acho extremamente
úteis do Vim, no `viper`, criando assim um Frankenstein que
nunca deveria ter nascido.
A minha configuração dele, inclusive, está bem modesta, com poucas
linhas de código, mas já são o suficiente para deixar o meu uso do Emacs
10 vezes mais aconchegante.
(setq viper-mode t)
(require 'viper)
(setq viper-inhibit-startup-message 't)
(setq viper-expert-level '5)
(setq viper-want-ctl-h-help t)
(setq viper-ex-style-editing nil)
(setq viper-no-multiple-ESC nil)
(setq viper-syntax-preference 'extended)
(setq viper-vi-style-in-minibuffer nil)
(define-key viper-vi-basic-map (kbd "v") 'set-mark-command)
(define-key viper-vi-basic-map (kbd "f") 'find-file)
(define-key viper-vi-basic-map (kbd "R") 'replace-rectangle)
(define-key viper-vi-basic-map (kbd "C-v") 'rectangle-mark-mode)
(define-key viper-vi-basic-map (kbd "x") 'kill-region)
(viper-mode)
Como eu disse, ainda está bem modesta. Apesar de que só tacar um bloco
de código do nada não explica direito o que está acontecendo, Elisp é
uma linguagem bem simples de entender, então eu acho que não vai ser tão
problemático assim.
Mas, basicamente eu só ativei o `viper-mode` e configurei 5
teclas de atalho que "emulam" algumas teclas que eu uso no Neovim. Não
são completamente idênticas, mas já dão conta do recado.
## *Fin*
Bom, é isso, acho que por agora eu não tenho mais o que falar sobre esse
lindo programa chamado Emacs.
Até o próximo post!

View file

@ -0,0 +1,71 @@
# God mode
Pois é, depois de ter feito um SSG próprio e ter dedicado um post para
ele, cá estou aqui novamente, usando o Emacs, porém dessa vez não estou
usando o `viper-mode`, não não, dessa vez eu estou usando
algo mais... *abençoado?*
## God mode
O nome é um pouco exagerado, mas isso não significa que ele não é algo
que melhora **E MUITO** no uso do Emacs.
Ele basicamente faz isso aqui com o `Ctrl` e
`Alt`:
![](https://i.makeagif.com/media/5-05-2024/1KNCKC.gif)
Isso não é exagero, basicamente qualquer *key-chord* do emacs pode ser
escrita sem a necessidade de usar algum modificador como o
`Ctrl`, ou os dois ao mesmo tempo (como por
exemplo a key-chord para selecionar uma palavra abaixo do cursor:
`Ctrl Alt Espaço`).
A consequência disso é bem direta ao ponto na realidade, primeiro que
você não tem mais o risco de adquirir uma
[L.E.R](https://pt.wikipedia.org/wiki/Les%C3%A3o_por_esfor%C3%A7o_repetitivo)
da vida por ficar apertando o `Ctrl` como se não houvesse
amanhã, segundo que, caso você tenha uma memória muscular boa, é
possível ter um workflow tão eficiente quanto (senão até mais) um
Vim-like. E isso inclui o `Evil-mode`, que faz com que o
Emacs se comporte como o Vim, se tratando de teclas de atalho.
## E quanto ao [blog.sh](https://codeberg.org/tukain/blog.sh)?
Tendo em vista que eu já estou usando o `org-mode` novamente
para desenvolver o meu site, o futuro dele é incerto. Ele é algo que eu
fiz em um momento de hiperfoco extremamente aleatório e também enquanto
eu estava entediado e procurando algo para me divertir.
Mas não posso garantir nada, da mesma forma que eu já fiz e refiz o meu
site centenas de vezes, eu posso voltar a usar o `blog.sh`
novamente, mas no momento, eu prefiro continuar com o
`org-mode`.
## O estilo do site
Vira e mexe eu me pego observando como o design do site está. A minha
ideia com o estilo dele é ser o mais flexível possível, enquanto ao
mesmo tempo seja minimalista, legível, e claro, agradável aos olhos.
A consequência disso foi um site que, não importando a página, parece
algum artigo de site de notícias quando visto usando a função de leitura
de alguns navegadores.
Eu já tenho umas ideias sobre o que eu posso fazer para dar um pequeno
upgrade na aparência, sem ser algo extremamente radical (como foram as
últimas mudanças nesse site).
Em relação ao tema que eu uso (Kanagawa Wave), eu não sei dizer por
quanto tempo ele vai durar, já uso ele a +/- 3 semanas, mas não chega
perto dos meses que eu fiquei usando o Gruvbox em tudo.
Enfim, isso é uma incógnita que eu prefiro não saber quando deixará de
ser uma, afinal de contas, no momento em que eu estou escrevendo este
post, a Kanagawa Wave é a minha nova favorita.
## *Fin*
Enfim, chega de ficar tagarelando com coisas que ninguém liga.
Até o próximo post!

View file

@ -0,0 +1,303 @@
# Vale da estranheza
Esse é um assunto que volta e meia me vem à cabeça. Mas, por qual razão?
Bem, os motivos são vários na realidade. Seja no meu consumo de mídia,
pela minha navegação na internet ou então até mesmo na vida real, o tal
chamado "Vale da estranheza" sempre se mostra uma hora ou outra.
O curioso disso é como ele é retradado em várias formas de
entretenimento. Filmes, séries, animes, jogos, todos eles têm um aspecto
principal idêntico na maioria das vezes: O terror.
## Eu não sou um cara que curte terror
não, nada disso, muito pelo contrário, eu sou do tipo que prefere
assitir uma comédia romântica à ter que assitir um filme de terror. Mas,
esse sub-gênero (e outros como ele) me atrai. Isso é algo difícil de
explicar, porém tenho certeza que não sou o único a pensar assim: Apesar
de dar calafrios, eu tenho uma curiosidade que aumenta cada vez mais.
A minha primeira exposição ao vale da estranheza foi, provavelmente como
muitas outras pessoas, com o meme do senhor incrível.
![](../assets/img/sr_incrivel.png)
É óbvio que esse meme não é a **melhor** representação do Vale da
estranheza, mas ele já é uma boa demonstração do que ele pode ser. O
sentimento que imagens do Vale da estranheza proporcionam é o de...
desconforto. Pelo menos no meu caso esse é o sentimento. Algo que está
errado, de alguma forma, e você consegue perceber, porém, ele também te
lembra algo que não lhe é estranho, mundano, comum. Esse conflito gera
esse desconforto esquisito.
Esse meme ficou popular, e por consequência eu consumi muitos vídeos no
youtube contendo esse meme, fazendo assim com que o algorítimo me
recomendasse vídeos contendo temas relacionados e afins. Então, eu foi
exposto à um outro gênero similar ao Vale: Os espaços liminares. Depois
eu comento mais sobre eles.
Apesar disso, eu, por algum motivo que só Deus sabe, tenho um interesse
nesse estilo de terror, e em outros estilos similares/derivados dele.
Isso me torna alguém que gosta de terror mas só não quer admitir?
Provavelmente. Mas estamos na internet e são poucos os que querem ser
coerentes por aqui.
## A presença do Vale da estranheza na mídia que consumo
### Jogos
Uns meses atrás, eu comecei a jogar [Silent
Hill](https://en.wikipedia.org/wiki/Silent_Hill_(video_game)), um
clássico do Playstation 1. O jogo constantemente te dá calafrios por
toda a gameplay. É um ótimo exemplo do que é possível fazer mesmo tendo
diversas limitações. No caso, um exemplo de como fazer alguém infartar.
Devido às limitações da época, existe uma presença fortíssima de
compressão de alguns assets, como por exemplo, as texturas e os efeitos
sonoros. No caso das texturas, em alguns momentos é difícil até mesmo
dizer se o que tá na sua frente é uma mancha de sujeira, uma queimadura
ou então até mesmo sangue ressecado. Literalmente o seu cérebo é quem
vai decidir da hora.
![](../assets/img/SH1_rifle.jpg)
Outra coisa boa a se comentar é a visão extremamente limitada. Isso é
uma limitação do próprio hardware do Playstation, mas a equipe que fez
Silent Hill contornou isso e transformou em parte da gameplay. E olha,
se tem uma coisa que me assusta, é não saber se o que tá na minha frente
é um ser humano, ou outra coisa que provavelmente não tá afim de
conversar.
![](../assets/img/silent_hill_screenshot_03.jpg)
Infelizmente eu perdi o meu save do jogo, eu estava na seção do parque
de diversões, por conta da frustração de ter perdido o save e também por
preguiça de ter que jogar tudo de novo, eu acabei não jogando mais.
Porém, esse jogo tem o meu respeito. Ele tem pouquíssimos jumpscares, a
maior parte da gameplay ele simplesmente ataca a sua ansiedade e te
deixa apreensivo, mas ainda assim ele sabe dosar, e muito bem, quando
ele deve fazer o seu coração bater um tanto mais rápido.
### Animes
Mais recentemente foi lançado na Netflix a adaptação do mangá
[Dandadan](https://en.wikipedia.org/wiki/Dandadan), mas eu não o conheci
por trailers ou por que me foi recomendado na home da Netflix. Eu fui
apresentado à esse mangá por meio de um youtuber que acompanho, o
[Naythf](https://www.youtube.com/@CentralNaythf).
[No vídeo que ele comenta sobre
Dandadan](https://youtu.be/eUQiwNVp6MU?si=M4N2eF5DmrYD7ZFp), o Naythf
fala sobre vários aspectos do mangá, como por exemplo os temas abordados
e gêneros da obra. O curioso para mim foi a parte de terror do mangá. No
maior estilo [Junji Ito](https://en.wikipedia.org/wiki/Junji_Ito), as
partes de terror focam (e muito) na estranheza. Não sei dizer se chega a
poder ser considerado algo do Vale, mas no mínimo chega perto.
![](../assets/img/dandadan-manga-primo-capitolo-05.jpg)
Uma outra aparição de algo que me lembra o vale da estranheza foi no
anime [Chainsaw Man](https://en.wikipedia.org/wiki/Chainsaw_Man), no
caso em uma de suas finalizações de episódio. Para ser mais exato, na
[5ª finalização](https://www.youtube.com/watch?v=ymQ3wEIq84Y).
![](../assets/img/chainsaw-man-ending-5.webp)
Sei que a intenção não era exatamente o Vale, mas ainda assim não
consigo assistir essa finalização sem fazer essa comparação.
Todo o cenário e a ambientação em que os personagens estão me lembram
também os Espaços Liminares. Não seria uma surpresa para mim se essa
semelhança fosse intencional, afinal, tanto o anime quanto os Espaços
Liminares ficaram em alta +/- na mesma época.
## Espaços liminares
Os espaços liminares tomam um rumo semelhante ao Vale, porém ele se
diverge em um ponto: Na ambientação.
A ambientação dos espaços liminares é bem característica, são lugares
que você espera que vá ter algo ou alguém por lá, mas, não há nada.
Somente o que foi deixado por lá.
Sinceramente esse gênero de terror é o que mais me dá medo, por quê
diferente de um alien vestido de ser humano e um cachorro assassino sem
pele, um espaço liminar é perfeitamente possível na vida real. Na
realidade eles não são possíveis, eles **existem**.
Essa é a parte que mais pega nos meus nervos. O fato de você não só ver
ou achar, mas até mesmo de você ter alguma lembrança com o local. Como
por exemplo, um parque aquático abandonado. Apesar de nunca ter ido a um
pessoalmente, até mesmo eu fico com calafrios em ver algo como isso:
![](../assets/img/liminal.webp)
Não tem nada de errado com o local em si, nem com a imagem, porém, ainda
assim, algo parece estar errado.
Uma explicação dada por muitas pessoas na internet é a de que o motivo
desse desconforto vêm do fato de você esperar vem alguém na foto, por
ser um local público e por você sempre ver um local como esse, populado.
A verdade é que cada pessoa tem uma reação à espaços como esses, no meu
caso eu sinto calafrios, quase como se tivesse algo a mais na foto, mas
que eu não estou enxergando, para outras pessoas, é só uma foto de um
lugar vazio.
Mas sem sombra de dúvidas, uma das modas da internet relacionada a esse
tema que mais me intrigou foram as
[Backrooms](https://en.wikipedia.org/wiki/The_Backrooms).
## The Backrooms
![](../assets/img/HobbyTown_USA_Oshkosh_interior_under_construction_2002_(The_Backrooms).jpg)
Tudo começou com um post na aba paranormal do 4chan, a mensagem do
usuário em si não tinha nada de mais, porém a resposta é uma coisa
completamente a parte.
> If you're not careful and you noclip out of reality in the wrong
> areas, you'll end up in the Backrooms, where it's nothing but the
> stink of old moist carpet, the madness of mono-yellow, the endless
> background noise of fluorescent lights at maximum hum-buzz, and
> approximately six hundred million square miles of randomly segmented
> empty rooms to be trapped in
>
> God save you if you hear something wandering around nearby, because it
> sure as hell has heard you
E é com essa resposta que nasce um fenômeno na internet, um
[ARG](https://en.wikipedia.org/wiki/Alternate_reality_game), e claro,
uma fandom.
O que mais me deixou intrigado foi a semelhança dos ARG's de The
Backrooms com a [SCP
Foundation](https://en.wikipedia.org/wiki/SCP_Foundation). Cada sala em
The Backrooms tem um padrão, um método a seguir para conseguir fugir, e
claro, algum tipo de anomalia presente. Seja ela uma criatura humanoide
ou até mesmo um sorriso flutuante.
The Backrooms ficou tão popular que ultrapassou o gênero de [Analog
Horror](https://en.wikipedia.org/wiki/Analog_horror) (o meu gênero
favorito de terror). Diversos criadores de conteúdo fizeram vídeos
comentando sobre, teorizando, fazendo gameplays de alguns jogos com esse
tema.
### [Kane Pixels](https://www.youtube.com/c/KANEpixels)
Esse carinha fez as Backrooms simplesmente explodirem.
Durante a onda de vídeos sobre as Backrooms, os vídeos dele se
destacavam (e muito) entre todos os outros. Seja por qualidade técnica
ou por ambientação, os vídeos que ele produzia (e produz até hoje) são
de cair o queixo.
Ele não só conseguiu fazer uma combinação de Analog Horror com The
Backrooms, como fez isso beirando a perfeição.
![](../assets/img/The-Backrooms-Kane-Pixels-01.jpg)
Foi basicamente dos vídeos dele que surgiu a inspiração de diversos
jogos que se vê por aí na Steam ou Itch.io.
![](../assets/img/smii7y_return_to_the_backrooms.webp)
## Analog horror
Bem, já que eu mencionei ele, por quê não comentar sobre?
Assim como The Backrooms, esse gênero ficou extremamente popular uns
tempos atrás. Começando uma febre com vídeos do universo de
[FNAF](https://en.wikipedia.org/wiki/Five_Nights_at_Freddy%27s), poís é,
FNAF. A maior parte desses vídeos giravam em torno de serem fitas de uso
interno da empresa - Fitas de treinamento, relatórios gravados,
filmagens de segurança - e que não eram feitas para serem consumidas por
pessoas não-autorizadas.
Mas sempre, de alguma forma, alguém conseguia acesso às fitas e colocava
as gravações na internet.
A parte mais interessante de alguns desses vídeos era a parte técnica,
muitos deles eram quase que um "olha só o que eu sei fazer".
Pois é, esse tema ficou saturado beeeeem rápido. Mas, algumas pessoas
viram potêncial nesse estilo de terror, e decidiram criar universos
próprios, tendo como uma base o horror analógico.
Coisas como [Nephthys Media](https://www.youtube.com/@blackdrag0nfish),
que exploravam um horror cósmico, começaram a surgir. O que foi um fator
que me fez ter interesse nesse gênero.
### Nephthys Media
![](../assets/img/hqdefault.jpg)
Apesar de não lembrar de praticamente nada do Nephthys Media, uma coisa
que não tem como eu me esquecer é a atmosfera presente nele, é algo que
me lembra os Espaços Liminares. É um desconforto constante e a impressão
de que tem algo a mais que eu não estou enxergando.
Pode se dizer que esse analog horror em específico é o responsável por
eu ter um certo medo de astros.
O enredo gira em torno de entidades que habitam os astros e em seus
planos. Como disse eu não lembro de muita coisa, mas ainda assim é algo
que eu recomendo.
### The Mandela Catalogue
Outro que ficou extremamente popular, mas que o criador perdeu a mão.
Ele explora a bizarrice que são
[Doppelgängers](https://en.wikipedia.org/wiki/Doppelg%C3%A4nger), e pelo
menos no início da minisérie, consegue fazer isso muito bem até.
O maior problema do Mandela Catalogue é que o seu criador acabou
enjoando da própria obra e quis fazer dela algo "maior". Vamos dizer
que ele voou muito perto do sol e acabou estragando a minisérie, pelo
menos para mim, eu já não tenho o mínimo de interesse por ela depois do
2º capítulo.
![](../assets/img/catalogue-mondela-mandela-magazine.gif)
<center>
<a href="https://www.youtube.com/watch?v=gk4AlxnZOYc">The Mandela Magazine</a>
</center>
Uma coisa que pode ser aprendida com o caso do Mandela Catalogue é a
seguinte: Se a sua obra se tornou popular por conta da ambientação e do
mistério que gira em torno de algo quase que no estilo Lovecraft de
absurdo, não transforma ela em uma minisérie de terror adolescente.
### The Walden Files
Esse me dá arrepios só de lembrar.
The Walden Files é um ARG que tem inspirações em FNAF e em The Mandela
Catalogue. Porém, só somente inspirações, ele é uma obra que não só se
destaca como também elevou o padrão do gênero de Analog Horror.
Ele genuinamente me dá medo. Medo ao ponto de que eu só consumi ele por
intermédio de um youtuber, o [Pombo
Atômico](https://www.youtube.com/@pombatomico) e de dia na maior parte
das vezes.
![](../assets/img/walden_files.webp)
Ele também é extremamente gráfico e sonoro. Não é algo que eu
recomendaria para a minha namorada por exemplo.
Mas a história que é contada... Olha, faz valer a pena. É com um dedo de
FNAF, mas contada de uma forma coesa durante toda a obra e sem entregar
fria e sem bandeja. Do início ao fim a sua curiosidade é instigada.
É uma ótima obra para se ver no Halloween. E talvez uma ótima obra para
não assitir enquanto você está comendo alguma coisa.
## *Fin*
Bem, isso é tudo o que eu tinha a comentar por agora. O halloween está
chegando e eu quis dar os meus 5 centávos aqui.
Te vejo no próximo post!

View file

@ -1,5 +0,0 @@
#+TITLE: Erro 404
#+begin_center
A página solicitada não foi encontrada.
#+end_center

View file

@ -1,108 +0,0 @@
#+TITLE: A simplicidade da C e da Hare
Recentemente eu fiz um post sobre os meus estudos com a linguagem de
programação Hare, falei sobre o que eu planejo fazer com esse
conhecimento entre outras coisas. Mas algo que eu não comentei sobre
foi o fato de eu estar estudando Hare em conjunto com C (só mencionei
que a sintaxe da Hare é semelhante a C).
* Por quê estou fazendo isso?
Bom, isso é algo que eu simplesmente esqueci de comentar no meu último
post, estou fazendo isso por 2 motivos principais:
As sintaxes são semelhantes, então posso pegar um conhecimento novo de
uma e levar para outra; Ambas são linguagens low-level, com foco em
alto desempenho e possuem manipulação manual de memória, então posso
aprender esse conceito de forma prática. Claro que existem outros
motivos para eu fazer algo nesse estilo, mas eu não vejo a necessidade
de listar todos eles aqui. Afinal, já é algo “estranho” para um jovem
da minha idade ter interesse em uma “linguagem defasada e insegura”
como a C, ao invés de querer aprender algo como Python, Ruby ou
Javascript.
* Existe algum outro motivo?
Óbviamente que sim. Aprender C/Hare é algo como um sonho que quero, e
posso, tornar realidade. É algo que chega perto de uma romantização,
um sentimento que dá vontade de correr atrás, de se esforçar para
alcança-lo.
Quase como você sonha em ter seu próprio carro, viver sozinho, ou
viajar o mundo. Não é um sentimento fácil de por em palavras.
* Como está meu progresso até agora?
Bom, eu iniciei meus estudos a pouquíssimo tempo, então ainda estou em
meus estágios iniciais. Porém já aprendi alguns conceitos básicos como
if statements, which loop, for loop, switch-case, structs e alguns
types também (tanto em C quanto em Hare).
Também comecei a fazer alguns programas extremamente simples só para
fixar esses conceitos na minha cabeça, um exemplo desses programas é
um programa que cria um arquivo vazio usando um nome que o usuário
fornece.
#+begin_src C
int main()
{
FILE *arq;
char nome[100];
printf("Digite o nome do arquivo: ");
scanf("%s", &nome[0]);
if (fopen(nome, "r"))
{
printf("O arquivo já existe.\n");
}
else
{
arq = fopen(nome, "w");
}
}
#+end_src
#+begin_src hare
use os;
use bufio;
use strings;
export fn main() void = {
let arquivo = nomeDoArquivo();
if (os::exists(arquivo)) {
fmt::println("Arquivo já existe.\n")!;
} else {
os::create(arquivo, 384)!;
};
};
fn nomeDoArquivo() str = {
fmt::printf("Escreva o nome do arquivo.\n:")!;
const inputUser = bufio::read_line(os::stdin)! as []u8;
return strings::fromutf8(inputUser)!;
};
#+end_src
* As diferenças
Algo que já para notar nesses exemplos é que o código em Hare é um
pouco maior que o código em C, o motivo disso é que a Hare tem um foco
na manipulação de erros. O que faz com que você tenha não só ter plena
noção do que deve ser feito em caso de algum erro, mas também dizer ao
programa o que ele vai fazer em caso de erro.
A consequência disso é ter um pouco mais de linhas de código
necessárias e também mais símbolos para serem utilizados durante a
escrita do programa.
Apesar disso, eu acho a sintaxe da Hare mais legível que a C em alguns
casos, como por exemplo na criação e utilização de structs.
* /Fin/
Bem, isso é tudo o que eu tenho a dizer por agora.
Até o próximo post!

View file

@ -1,87 +0,0 @@
#+TITLE: De novo no Emacs
E lá vamos nós de novo, em mais um post que só demonstra o quanto que eu necessito me tratar.
* Eu não consigo
Mesmo depois de criar o meu próprio [[https://tukain.codeberg.page/tukain/blog.sh][SSG]], mesmo depois de ter reconfigurado o meu setup para que eu não precisasse mais do Emacs, mesmo depois de eu ter feito melhorias no meu Neovim, mesmo depois de tudo o que eu fiz nos últimos dias, cá estou eu, usando o Emacs de novo.
Eu não sei que síndrome de Stockolmo (definitivamente não é assim que se escreve) é essa que me assola, mas eu simplesmente não consigo, eu sempre volto a usar esse editor que é apenas 2 anos mais novo que o meu pai.
Eu sempre volto a usar esse trambolho lerdo e configurado com uma linguagem que é utilizada somente nele.
Eu sempre volto a refazer o meu site usando ele.
Eu sempre volto a fazer minhas anotações nele.
Eu não sei mais o que fazer para sair dele. (Não venha com papo de apertar =Ctrl x=, =Ctrl c= perto de mim não, fazendo favor).
* Sim, eu refiz (pela terceira vez) o meu site usando org-mode
Essa é a parte que genuinamente mais me assusta, porque simplesmente não tem como uma pessoa em sã consciência ficar fazendo o que eu faço comigo mesmo, se tratando de um site, é claro. Eu é que não vou querer duvidar das coisas que as pessoas fazem.
Eu sinceramente nem sei muito bem o que dizer, afinal o resultado final não difere muito do resultado final do meu SSG. O que é proposital, até porque o meu SSG foi criado com o intuíto de ser o meu escapismo de utilizar o org-mode para fazer o meu site.
Mas acabou que no final das contas, eu voltei a usar o org-mode.
* Eu não estou usando o Emacs apenas na minha máquina
Um dos motivos de eu ter voltado a usar o Emacs é bem direto ao ponto:
Eu nunca deixei de usar ele. Para ser mais exato, eu tenho uma configuração reduzida do Emacs que eu uso no computador do local onde trabalho (não tem nada haver com programação), e nos últimos dias, eu comecei a usar o Emacs como a minha "suíte office", de certa forma.
O que quero dizer com isso é que eu comecei a utilizar o Emacs como o meu meio predileto de criar documentos e planilhas. Bom, eu já tinha noção do quão bom era fazer documentos com o Emacs, afinal de contas o meu blog inteiro é feito utilizando o Emacs. Mas planilhas...
* Planilhas
Qual a diferença de uma tabela para uma planilha? Na minha visão, são fórmulas.
Você usa uma tabela quando os dados que vão estar presentes nela não mudam, ou se mudam, é feito de forma manual. Agora uma planilha precisa ter uma fórmula para funcionar.
Digamos que você tenha uma planilha contendo todas as suas compras do mês, você poderia simplesmente sair somando cada preço e no fim ter o total que você gastou, mas ninguém tem saco pra isso. Então a solução é simples: você põe uma fórmula que faz a soma de todos os itens na colona de valores.
Digamos que você esteja usando o Google Sheets, a planilha poderia ser algo +/- assim:
#+begin_src
| A | B |
| Item | Valor |
|-----------+---------------|
| Maçã | 6 |
| Ovos | 12 |
| Leite | 20 |
| Farinha | 7 |
| Margarina | 12 |
|-----------+---------------|
| total | =soma(B3:B7) |
#+end_src
Eu não lembro muito bem a sintaxe do Google Sheets, mas já serve de exemplo. Basicamente o que a fórmula =soma= está fazendo é... bom, fazendo uma soma dos valores que estão presentes na linha 4 da coluna B até a linha 7 da colona B, o que você veria no final seria apenas o valor que essa fórmula retornou.
E isso também é possível de se fazer usando o Emacs!
A sintaxe muda, claro, mas no final do dia, o que importa é o resultado. Usando o org-mode, a sintaxe para a mesma planilha seria:
#+begin_src org
| Item | Valor |
|-----------+-------|
| Maçã | 6 |
| Ovos | 12 |
| Leite | 20 |
| Farinha | 7 |
| Margarina | 12 |
|-----------+-------|
| total | 57 |
#+TBLFM: @>$2=vsum(@I..@II)
#+end_src
A maior diferença aqui é onde a fórmula é posicionada, diferentemente do convecional, as fórmulas do org-mode ficam localizadas fora da tabela. O resto é só questão de sintaxe. "=@>=" significa "última linha de", "=$2=" representa a "segunda coluna". Não sei dizer exatamente o que significa o "=@I..@II=", porém, o que eu acho que seja é que esses I's representam os delimitadores das células (os caracters "=-=").
* Quais são as vantagens?
Bom, em questão de funcionalidade básicas, ambos ótimas escolhas, dependendo do seu tipo de uso e em qual nível de usabilidade você melhor se encaixa. Porém, uma coisa que é mais que um motivo para você reconsiderar na hora de escolher fazer uma planilha usando o Google Sheets é: Todo e qualquer caractere da planilha é enviado para os servidores do Google... Bom, você já deve saber de toda essa parafernalha que é privacidade na internet.
Em contra-partida, você não precisa de internet para usar o Emacs, como também tem todo o conteúdo-fonte preservado em texto puro. Dessa forma é extremamente fácil de se fazer backups dos arquivos, sem se falar que com um /simples/ =Ctrl c=, =Ctrl e=, =h=, =h=, é possível gerar um arquivo HTML, pronto para ser impresso ou publicado.
* Se ele é bom no trabalho, então ele também é bom em casa
Só de eu conseguir utilizar ele no trabalho tranquilamente, já demonstra o quão refinado o Emacs é. Da mesma forma que eu fiz planilhas utilizando o Emacs no meu trabalho, eu também posso fazer algumas para meu uso pessoal, em casa.
A minha configuração pessoal e a configuração que eu tenho no meu trabalho tem diferenças que se resumem à minha tendo um /rice/ e a do meu trabalho tendo pouquíssimas coisas que não são nativas, afinal, eu não tenho muito o porquê de fazer um rice pro Emacs que eu uso no meu trabalho.
Ainda estou me organizando, mas quando finalizar, até mesmo a agenda do Emacs eu vou usar (sim, essa porra tem uma agenda também).
* /Fin/
Bom, é isso, até o próximo post!

View file

@ -1,107 +0,0 @@
#+TITLE: Emacs - Parte 2
Hmmm... Parte 2? Hmmm...
Bem, eu não acho que isso vá ser um post longo ou que vá adicionar
muito ao [[./emacs.html][post original]], então você pode ignorar ele a vontade.
* Sobre o "ambiente onde eu possa usar o Emacs"
Então, eu já consegui fazer um. É meio que feito na gambiarra, mas
funciona.
Eu estou utilizando o compositor wayland Cage, um compositor que tem o
objetivo de ser uma ferramenta para criação de kiosk's. Tipo um kiosk
onde tem um menu de restaurante e etc.
Porém, como eu posso rodar qualquer programa que eu quiser nele, então
nada melhor do que fazer um "kiosk" com o Emacs!
O resultado dessa monstruosidade é um Emacs rodando em tela cheia com
um teclado inteiro a disposição para ser usado sem ter algum outro
elemento que possa ter teclas de atalho conflitantes com as do Emacs.
Simplificando, eu posso usar até mesmo a tecla super (Windows) se eu
quiser e eu vou estar de boa.
* O que mais adicionei à minha configuração do Emacs?
Teclas de atalho novas, como por exemplo, teclas para:
- Aumentar/diminuir o brilho da tela do meu notebook;
- Aumentar/diminuir o volume do meu notebook;
- Capturar a tela do Emacs ([[https://gitlab.com/marcowahl/emacsshot][usando o próprio emacs]]).
- Gravar a tela
Também deixei habilitados por padrão 2 minor-modes do Emacs que são
pré-instalados (por alguma razão), eles são o ~display-battery-mode~,
e ~display-time-mode~. Ambos são minor-modes que poem seu output na
barra do Emacs (eu não faço ideia de qual é o nome oficial dessa
bagaça), o que significa que a barra do Emacs se tornou o equivalente
à barra do Sway, o meu compositor wayland favorito.
* Org-publish é praticamente um SSG
Eu sei que eu já comentei algo parecido com isso no meu [[./emacs.html][outro post]]:
#+begin_quote
Apesar de ter usado diversos SSG's nos últimos tempos, nenhum deles
possui a praticidade de simplesmente gerar uma página HTML a partir de
um buffer que esteja aberto no seu editor com a mesma facilidade que o
Emacs junto do Org-mode conseguem ter.
Esse site inteiro foi refeito utilizando essa ferramenta de gereção de
sites nativa do Emacs.
#+end_quote
Mas acho que eu não consegui transparecer o quão prático e simples é o
processo de escrever e "publicar" o que foi escrito.
Se você já usou um SSG como por exemplo o Jekyll, você pode
interpretar o org-publish como uma template do Jekyll em que você pode
fazer algumas modificações e que não tem muitas automações por parte
dela.
Todas as páginas seguem um padrão pré-definido, todas.
Ou seja, você pode usar o seu CSS pensando somente em 1 página, porque
todas as outras vão ser clones dessa página em que você está se
inspirando.
Um bom exemplo disso é esse próprio site. Se você observar bem, não
existe muito uma grande diferença entre a página de um post e a página
de index. Na verdade a única diferença é a falta de uma tabela de
conteúdo na página index.
Outra coisa também que eu encontrei, depois de xeretar um pouco na
inter-webs, eu encontrei algumas características interessantes sobre o
ox-publish. Uma delas é que as variáveis que criam o preâmbulo e o
pós-âmbulo da página (são uns bagulho de autor e de validação da
página) podem ser modificadas para qualquer string que o usuário
prefira. Ou seja, eu posso colocar meu próprio HTML nelas!
O que em termos práticos, faz com que o ox-publish faça o que eu
achava que era a maior utilidade de um SSG: re-utilizar um elemento de
uma página em todas as outras.
Por enquanto eu só adicionei uma footer com o nome do author do artigo
e com a data de última modificação do arquivo (sim, esse bagulho tem
até variáveis que você pode usar).
* A site é praticamente um espelho da minha config
O meu site e o meu Emacs possuem uma aparência muito similar, o que é proposital, já que dessa forma eu consigo ter uma certa noção de como meu site vai ficar, tirando a necessidade de usar um navegador para visualizar a página do meu site.
Não é que eu não veja como a página fica, mas eu não tenho a necessidade de ver como ele fica.
Melhor do que só mencionar é mostrar, então aqui está uma screenshot do meu Emacs:
[[../assets/img/emacs-parte-2.webp]]
Não é um completo clone 1 por 1, mas pelo menos eles tem certa semelhança, dessa maneira eu consigo me concentrar apenas em escrever com tranquilidade, afinal de contas o site final é extremamente semelhante ao o que eu já estou vendo no editor.
* /Fin/
Bem, é isso. Eu falei que esse posts seria algo rápido.
Enfim, até o próximo post!

View file

@ -1,137 +0,0 @@
#+TITLE: Emacs
Olha só quem voltou! E mais uma vez com o site completamente mudado!
Pois é, estou de volta, e dessa vez trago comigo algumas novidades em
relação ao site e ao meu setup atual (spoiler: tá tudo no Emacs).
* Emacs, que saudades que estava de você!
A um tempo eu vim tendo essa vontade de voltar a usar o Emacs, mas a
preguiça de ter que refazer a minha config do 0 era muito grande, até
que bem, vamos dizer que o hiperfoco atacou e eu refiz a minha
configuração de qualquer jeito.
A maior diferença é que eu já tenho alguma experiência no assunto,
então não tive muita dificuldade em fazer essa nova config. Posso
inclusive dizer que esta é, até o momento, a melhor configuração que eu
já fiz até agora.
* Org-mode, o criador de sites mais prático que conheço
Apesar de ter usado diversos SSG's nos últimos tempos, nenhum deles
possui a praticidade de simplesmente gerar uma página HTML a partir de
um buffer que esteja aberto no seu editor com a mesma facilidade que o
Emacs junto do Org-mode conseguem ter.
Esse site inteiro foi refeito utilizando essa ferramenta de gereção de
sites nativa do Emacs.
* Zero JavaScript
Mais uma vez, estou com 0 JS presente neste site, o que por si só já é
uma conquista e tanto, afinal, quanto menos JS, melhor.
E não é porque eu não tenho JS que eu perco coisas como
/Table-of-contents/ ou /Syntax-highlighting/, nada disso, ambos são
coisas nativas do org-mode, feitos para serem utilizados e abusados.
Ele também é o melhor highlighter que eu já usei, porque literalmente
qualquer coisa que eu tenha um syntax highlight no Emacs fica com o
mesmo syntax-highlight no site gerado.
* Quase um SSG... Quase.
Apesar de tudo, o org-mode não vem com um SSG, essa função na
realidade é uma ferramenta de publicação de artigos, tanto que o nome
do pacote é ox-*publish*. Ainda assim, com um script simples e um
pouco de elisp, você consegue ter um pouco do que um SSG consegue te
oferecer.
E quando eu falo um pouco, eu não tô de sacanagem, isso é tudo o que
eu preciso para ter meu site na forma em que eu quero:
/Configurando o ox-publish e automatizando o processo de criação de HTML./
#+begin_src emacs-lisp
(require 'ox-publish)
(require 'package)
(add-to-list 'package-archives '("melpa" . "http://melpa.org/packages/"))
(package-initialize)
(unless (package-installed-p 'use-package)
(package-refresh-contents)
(package-install 'use-package))
(eval-when-compile
(require 'use-package))
(use-package htmlize
:ensure t)
(use-package kanagawa-themes
:ensure t
:init (load-theme 'kanagawa-wave t))
(require 'htmlize)
(setq org-html-head "<link rel=stylesheet href=\"/assets/css/styles.css\" />"
org-html-head-include-default-style nil
org-html-head-include-scripts nil
org-html-preamble nil
org-html-postamble nil
org-html-use-infojs nil)
(setq org-publish-project-alist
(list
(list "Tukain's Blog"
:base-directory "./content"
:recursive t
:htmlized-source t
:publishing-directory "./public"
:section-numbers nil
:publishing-function 'org-html-publish-to-html)))
(org-publish-all t)
(message "Site gerado!")
#+end_src
/Um script para executar os comandos necessários para gerar o site/
#+begin_src bash
#!/bin/sh
mkdir -p public && emacs -x build.el && cp -r assets/ public/
#+end_src
Depois disso, o único trabalho que eu tenho é de fazer um artigo e
listá-lo na minha homepage, e pronto!
* Outras coisas que estão no meu Emacs
É mais que claro que o Emacs é conhecido por seus usuários que, em boa
parte dos casos, transformam o Emacs em um sistema operacional praticamente. E
eu não sou muito diferente deles 🤓.
Atualmente eu já configurei o Emacs o suficiente para substituir a minha
configuração do Neovim, e também configurei coisas como:
- Um servidor HTTP (para visualizar o meu site localmente)
- Um agente PGP (EasyPG).
- Um cliente de email (Gnus)
- Uma interface para o Git (Magit)
- Um leitor de feeds RSS (Elfeed)
Também estou vendo como configurar um cliente Jabber (XMPP) e vou configurar
o Erc (o cliente IRC nativo do Emacs). Há também outras coisas que eu quero
fazer, mas não acho que seja necessário falar sobre elas, afinal já estou
tagarelando demais.
* Aos poucos, estou deixando o meu setup ser apenas um ambiente onde eu possa usar o Emacs
Eu ainda não iniciei o meu arco Uchirra da vida e saí eliminando meus programas,
ainda.
Eu já tenho em mente o que eu quero fazer e como eu vou fazer para conseguir
transformar o meu setup atual em algo que serve apenas para acomodar o
Emacs. Alguns programas que eu posso remover, por exemplo, são o Lazygit (Porque
eu já tenho o Magit) e o lf (Porque o Emacs vem com o Dired).
Mas vou deixar para fazer isso outra hora, afinal de contas isso vai tomar um
pouco do meu tempo para poder concluir.
* /Fin/
Enfim, acho que já é hora de eu para de ficar tagarelando.
Te vejo no próximo post!

View file

@ -1,47 +0,0 @@
#+TITLE: Blog.sh, o meu próprio SSG
Dos produtores de "Ovorefazermeusaite", vêm aí "E se eu fizer meu próprio gerador de sites?"!
Agora falando sério, eu realmente fiz o meu próprio SSG (Static Site Generator).
Ele não é nada demais, na realidade ele não é muito diferente dos scripts que eu fazia para conseguir criar um post novo de forma mais rápida, a diferença fica só na sofisticação do script e um pouco da forma em que ele opera.
* Geração de site rápida pra k7
Uma coisa que é extremamente notável é a diferença na hora de fazer a geração do site. É simplesmente absurdo. É como comparar a velocidade de um jogo feito em C, para um feito em JavaScript.
No Emacs, a geração do site feito em org-mode leva uma coisa de 2 a 4 segundos, o que é relativamente rápido, porém, o meu script leva aproximadamente 0.071 segundos para fazer a mesma coisa.
Tudo bem, eu não tenho uma tabela de conteúdo e nem o syntax highlighting, porém, essas são coisas que eu estou disposto a descartar se significar que eu vou ter uma geração de páginas dezenas de vezes mais rápida.
* Por debaixo dos panos
O script possui um comando que cuida da criação da estrutura de arquivos e um que "compila" o site com base nessa estrutura. Como você faz para usar essa estrutura de arquivos e quais as regras impostas pelo script podem ser achadas no readme que é gerado junto do website
Todos os arquivos dentro do diretório content são lidos pelo smu, programa que é utilizado para converter um texto no estilo Markdown para HTML.
O smu não tem suporte para tudo o que o Markdown tem a oferecer, porém ele aceita o uso de tags HTML, então tudo o que o smu não tiver suporte pode ser substituído por uma tag.
* Por que?
Eu fiz isso puramente para ver se eu conseguiria fazer um SSG, e, se tratando de funcionalidade básica, eu consegui sem nenhum problema.
Mas um outro ponto que me fez fazer isso foi o Neovim... Olha, eu não sei se isso é algum tipo de apego ou algo do gênero, mas eu simplesmente fiquei com saudades de usar o meu Neovim. A configuração que eu tenho é equivalente à minha configuração do Emacs, não em todos os aspectos, mas quando se trata de edição de texto/código, ambos são quase os mesmos, porém o Neovim ainda leva a vantagem, porque o Neovim tem suporte ao LSP (Language Server Protocol), o que faz com que o auto-complete do Neovim seja muito mais versátil e preciso do que usar o company-mode no Emacs.
Outra coisa que eu consigo fazer agora que eu fiz o meu próprio SSG é usar ele em conjunto com o Neovim ou qualquer outro editor de texto que eu queira, basta eu salvar o arquivo e digitar o comando:
#+begin_src bash
blog.sh build
#+end_src
E na realidade eu nem vou precisar digitar esse comando, eu já fiz um outro comando que é um equivalente ao hugo serve da vida. Tudo o que eu preciso fazer é digitar
#+begin_src bash
blog.sh serve
#+end_src
E isso vai abrir um servidor HTTP usando o =python -m http.server= e também vai executar o comando =entr=, que serve para "ficar de olho em mudanças", e sempre que o =entr= notar alguma mudança em algum arquivo do diretório content ele mesmo executa o =blog.sh build= e atualiza as páginas.
Tudo o que eu preciso fazer agora é ficar de olho em qualquer bug que possa aparecer.
* /Fin/
Enfim, é isso o que eu tinha para falar por agora.
Te vejo no próximo post!

View file

@ -1,36 +0,0 @@
#+TITLE: God mode
#+DATE: 25/10/2024
Pois é, depois de ter feito um SSG próprio e ter dedicado um post para ele, cá estou aqui novamente, usando o Emacs, porém dessa vez não estou usando o =viper-mode=, não não, dessa vez eu estou usando algo mais... /abençoado?/
* God mode
O nome é um pouco exagerado, mas isso não significa que ele não é algo que melhora *E MUITO* no uso do Emacs.
Ele basicamente faz isso aqui com o =Ctrl= e =Alt=:
[[https://i.makeagif.com/media/5-05-2024/1KNCKC.gif]]
Isso não é exagero, basicamente qualquer /key-chord/ do emacs pode ser escrita sem a necessidade de usar algum modificador como o =Ctrl=, =Alt=, ou os dois ao mesmo tempo (como por exemplo a key-chord para selecionar uma palavra abaixo do cursor: =Ctrl Alt Espaço=).
A consequência disso é bem direta ao ponto na realidade, primeiro que você não tem mais o risco de adquirir uma [[https://pt.wikipedia.org/wiki/Les%C3%A3o_por_esfor%C3%A7o_repetitivo][L.E.R]] da vida por ficar apertando o =Ctrl= como se não houvesse amanhã, segundo que, caso você tenha uma memória muscular boa, é possível ter um workflow tão eficiente quanto (senão até mais) um Vim-like. E isso inclui o =Evil-mode=, que faz com que o Emacs se comporte como o Vim, se tratando de teclas de atalho.
* E quanto ao [[https://codeberg.org/tukain/blog.sh][blog.sh]]?
Tendo em vista que eu já estou usando o =org-mode= novamente para desenvolver o meu site, o futuro dele é incerto. Ele é algo que eu fiz em um momento de hiperfoco extremamente aleatório e também enquanto eu estava entediado e procurando algo para me divertir.
Mas não posso garantir nada, da mesma forma que eu já fiz e refiz o meu site centenas de vezes, eu posso voltar a usar o =blog.sh= novamente, mas no momento, eu prefiro continuar com o =org-mode=.
* O estilo do site
Vira e mexe eu me pego observando como o design do site está. A minha ideia com o estilo dele é ser o mais flexível possível, enquanto ao mesmo tempo seja minimalista, legível, e claro, agradável aos olhos.
A consequência disso foi um site que, não importando a página, parece algum artigo de site de notícias quando visto usando a função de leitura de alguns navegadores.
Eu já tenho umas ideias sobre o que eu posso fazer para dar um pequeno upgrade na aparência, sem ser algo extremamente radical (como foram as últimas mudanças nesse site).
Em relação ao tema que eu uso (Kanagawa Wave), eu não sei dizer por quanto tempo ele vai durar, já uso ele a +/- 3 semanas, mas não chega perto dos meses que eu fiquei usando o Gruvbox em tudo.
Enfim, isso é uma incógnita que eu prefiro não saber quando deixará de ser uma, afinal de contas, no momento em que eu estou escrevendo este post, a Kanagawa Wave é a minha nova favorita.
* /Fin/
Enfim, chega de ficar tagarelando com coisas que ninguém liga.
Até o próximo post!

View file

@ -1,37 +0,0 @@
#+TITLE: Hare
* Praticamente C, mas com diversas melhorias
A Hare é uma linguagem da família das linguagens C-like, e a sua sintaxe deixa isso bem explícito, porém, ela tem algumas das inovações das últimas décadas consigo e também se inspira na sintaxe de outras linguagens, como a Rust.
Porém, diferente de Rust, você não vai ter que esperar por minutos ou horas para o compilador terminar o serviço, nem quebrar a cabeça com o seu código para que ele seja "memory safe", ela não tem garbage collectors nem nada desse tipo, é como eu disse, ela é praticamente C.
Contudo, ela não é uma linguagem com as mesmas limitações ou problemas que C possui, e além disso ela tem uma sintaxe que, para mim, não só é mais clara, como mais fácil de entender o que está acontecendo.
Claramente isso é apenas algo que depende da minha experiência, mas até mesmo a minha namorada conseguiu entender como um Struct estava sendo usado em um dos exemplos que eu escrevi em Hare, enquanto isso, o mesmo exemplo em C foi... Confuso para dizer no mínimo.
* QBE como backend
O compilador da Hare usa o QBE Backend, o que torna o compilador dela
extremamente rápido e leve, e também facilita o processo de criar ports do
compilador para outras arquiteturas. Eu não irei entrar muito em detalhes sobre
o que é um Compiler Backend, mas devo parafrasear algo vindo do próprio site do
QBE:
#+begin_quote
QBE é um backend para compiladores, com o foco de providenciar 70% da
performance de compiladores otimizados da indústria com 10% do código.
#+end_quote
De certa forma, o QBE se encaixa até mesmo na filosofia suckless, o que para mim
pelo menos, é um grande ponto possitivo.
* O que eu planejo fazer aprendendo a programar?
Atualmente, eu vejo a programação como um hobbie para mim, um hobbie que eu gosto e muito, mas isso não me impede de colocar essa habilidade no meu currículo, um dia isso pode vir a ser extremamente útil.
Por enquanto eu estou aprendendo o básico, recém fiz o meu primeiro Struct, ainda falta muito para eu dizer que eu sei fazer alguma coisa, quanto mais dizer que eu sei programar. Mas isso só depende do meu esforço, então irei correr atrás.
* /Fin/
Enfim, é isso, até o próximo post!

View file

@ -1,79 +0,0 @@
#+TITLE: Tô usando o Proton
Depois de aproximadamente 1 ano, eu criei uma nova conta no [[https://proton.me][Proton]].
Um serviço de e-mail/calendário online/VPN/cloud storage/gerenciador
de senhas/carteira de bitcoin, enfim, um serviço que foca em prover
basicamente as ferramentas que comumemte utilizamos com mais frequência
do Google (Gmail, Google Calendar, Google Drive, Google Passwords) com
aquela pitada de privacidade que só a mão do Shaquille O'Neal
consegue fazer.
* Por que?
Nas últimas semanas eu comecei a voltar ao meu antigo estilo de vida
sem o Google, o fato de eu ter conseguido um emprego foi um
facilitador nesse aspecto. No dia do aniversário do meu irmão, eu
troquei de celular com ele, dando o meu Poco M4 Pro para ele e ficando
com o Moto G52 dele.
Essa não foi a primeira vez que a gente fez isso, na verdade na
primeira vez que fiz isso com ele foi porque o Moto G52 possui uma
ROM oficial da LineageOS disponível, e digamos que quando eu
descobri isso eu tive uma [[https://i.pinimg.com/736x/87/07/97/8707972a759975b07d188308c948cc27.jpg][ativação neural]] e no mesmo dia a gente fez
essa troca. E claro, eu coloquei a Lineage no G52.
Enfim, vou cortar um pouco da história e pular para o presente.
Depois que eu fiquei com o G52 com a Lineage instalada novamente,
eu comecei a fazer uma especie de "detox digital", mas eu não estava
deletando contas, eu estava desvinculando o Google delas. Porém, uma
coisa que estava sendo uma pedra no meu caminho era o Gmail, e bem, eu
tenho e-mails alternativos, mas os servidores deles são lentos o
suficiente para que eu basicamente só leia um e-mail 1 hora depois
que eu "recebi" ele.
Tendo isso em mente, eu criei uma nova conta no Proton, que dentre
várias coisas, também me dá acesso a 10 e-mail aliases. O que me
permite remover o Gmail da jogada, e mesmo as coisas que não estão
(ainda) usando aliases não ficam presas no limbo, já que o Proton me
permite receber os e-mails do Gmail, no Proton, ou seja, eu não
preciso nem mesmo abrir o Gmail para ler os e-mails que chegam por lá.
* Mudanças no armazenamento
Ano passado, quando eu tinha uma conta no Proton, o armazenamento era
bem limitado, somente 1Gb (depois de fazer uma configuração na conta,
o padrão era 512Mb) era disponível. Esses 1Gb eram compartilhado entre
o serviço de e-mail/calendário e o de cloud storage. Não sei se já
ficou claro, mas 1Gb não é lá muita coisa para um serviço de cloud
storage, muito menos quando isso é compartilhado com outros serviços.
Mas, com a nova conta que criei ainda hoje, eu reparei que no serviço
de e-mail o armazenamento continua sendo de 1Gb, porém o serviço de
cloud storage se inicia com 3Gb! Podendo ser aumentado para 5Gb depois
de seguir um passo a passo de configuração!
Isso é algo que eu simplesmente não tava esperando, mas é uma mudança
mais que bem vinda, porque eu posso mover os arquivos que eu tinha no
Google Drive para cá com muito mais folga.
* Uma senha praticamente impossível de digitar para a minha conta do Google
Eu também estou dificultando ao máximo o meu login do Google,
praticamente tornando impossível que eu faça login sem utilizar o
KeePass, o que por sua vez, faz com que eu deixe de utilizar um
sistema que não seja uma distro linux, no caso do meu pc, ou a
LinageOS, no meu celular.
O KeePassXC havia lançado a +/- 2 meses atrás uma função que te
permite criar passkeys utilizando o próprio KeePassXC, o que elimina a
necessidade de um celular com a Google impregnada ou um iPhone. Óbviamente eu já passei a limpa em todas as contas que eu usava uma passkey da Google e gerei novas usando o KeePassXC.
Tudo isso me deixa cada vez menos dependente do Google, o que é algo
que sinceramente qualquer pessoa deveria tentar fazer. Não só com o
Google, mas com basicamente qualquer uma dessas empresas que até um
idoso de 90 anos reconhece de tão popular.
* /Fin/
Enfim, acho que já tagarelei demais.
Até o próximo post!

View file

@ -1,155 +0,0 @@
#+TITLE: Vale da estranheza
Esse é um assunto que volta e meia me vem à cabeça. Mas, por qual razão? Bem, os motivos são vários na realidade. Seja no meu consumo de mídia, pela minha navegação na internet ou então até mesmo na vida real, o tal chamado "Vale da estranheza" sempre se mostra uma hora ou outra.
O curioso disso é como ele é retradado em várias formas de entretenimento. Filmes, séries, animes, jogos, todos eles têm um aspecto principal idêntico na maioria das vezes: O terror.
* Eu não sou um cara que curte terror
não, nada disso, muito pelo contrário, eu sou do tipo que prefere assitir uma comédia romântica à ter que assitir um filme de terror. Mas, esse sub-gênero (e outros como ele) me atrai. Isso é algo difícil de explicar, porém tenho certeza que não sou o único a pensar assim: Apesar de dar calafrios, eu tenho uma curiosidade que aumenta cada vez mais.
A minha primeira exposição ao vale da estranheza foi, provavelmente como muitas outras pessoas, com o meme do senhor incrível.
[[../assets/img/sr_incrivel.png]]
É óbvio que esse meme não é a *melhor* representação do Vale da estranheza, mas ele já é uma boa demonstração do que ele pode ser. O sentimento que imagens do Vale da estranheza proporcionam é o de... desconforto. Pelo menos no meu caso esse é o sentimento. Algo que está errado, de alguma forma, e você consegue perceber, porém, ele também te lembra algo que não lhe é estranho, mundano, comum. Esse conflito gera esse desconforto esquisito.
Esse meme ficou popular, e por consequência eu consumi muitos vídeos no youtube contendo esse meme, fazendo assim com que o algorítimo me recomendasse vídeos contendo temas relacionados e afins. Então, eu foi exposto à um outro gênero similar ao Vale: Os espaços liminares. Depois eu comento mais sobre eles.
Apesar disso, eu, por algum motivo que só Deus sabe, tenho um interesse nesse estilo de terror, e em outros estilos similares/derivados dele.
Isso me torna alguém que gosta de terror mas só não quer admitir? Provavelmente. Mas estamos na internet e são poucos os que querem ser coerentes por aqui.
* A presença do Vale da estranheza na mídia que consumo
** Jogos
Uns meses atrás, eu comecei a jogar [[https://en.wikipedia.org/wiki/Silent_Hill_(video_game)][Silent Hill]], um clássico do Playstation 1. O jogo constantemente te dá calafrios por toda a gameplay. É um ótimo exemplo do que é possível fazer mesmo tendo diversas limitações. No caso, um exemplo de como fazer alguém infartar.
Devido às limitações da época, existe uma presença fortíssima de compressão de alguns assets, como por exemplo, as texturas e os efeitos sonoros. No caso das texturas, em alguns momentos é difícil até mesmo dizer se o que tá na sua frente é uma mancha de sujeira, uma queimadura ou então até mesmo sangue ressecado. Literalmente o seu cérebo é quem vai decidir da hora.
[[../assets/img/SH1_rifle.jpg]]
Outra coisa boa a se comentar é a visão extremamente limitada. Isso é uma limitação do próprio hardware do Playstation, mas a equipe que fez Silent Hill contornou isso e transformou em parte da gameplay. E olha, se tem uma coisa que me assusta, é não saber se o que tá na minha frente é um ser humano, ou outra coisa que provavelmente não tá afim de conversar.
[[../assets/img/silent_hill_screenshot_03.jpg]]
Infelizmente eu perdi o meu save do jogo, eu estava na seção do parque de diversões, por conta da frustração de ter perdido o save e também por preguiça de ter que jogar tudo de novo, eu acabei não jogando mais. Porém, esse jogo tem o meu respeito. Ele tem pouquíssimos jumpscares, a maior parte da gameplay ele simplesmente ataca a sua ansiedade e te deixa apreensivo, mas ainda assim ele sabe dosar, e muito bem, quando ele deve fazer o seu coração bater um tanto mais rápido.
** Animes
Mais recentemente foi lançado na Netflix a adaptação do mangá [[https://en.wikipedia.org/wiki/Dandadan][Dandadan]], mas eu não o conheci por trailers ou por que me foi recomendado na home da Netflix. Eu fui apresentado à esse mangá por meio de um youtuber que acompanho, o [[https://www.youtube.com/@CentralNaythf][Naythf]].
[[https://youtu.be/eUQiwNVp6MU?si=M4N2eF5DmrYD7ZFp][No vídeo que ele comenta sobre Dandadan]], o Naythf fala sobre vários aspectos do mangá, como por exemplo os temas abordados e gêneros da obra. O curioso para mim foi a parte de terror do mangá. No maior estilo [[https://en.wikipedia.org/wiki/Junji_Ito][Junji Ito]], as partes de terror focam (e muito) na estranheza. Não sei dizer se chega a poder ser considerado algo do Vale, mas no mínimo chega perto.
[[../assets/img/dandadan-manga-primo-capitolo-05.jpg]]
Uma outra aparição de algo que me lembra o vale da estranheza foi no anime [[https://en.wikipedia.org/wiki/Chainsaw_Man][Chainsaw Man]], no caso em uma de suas finalizações de episódio. Para ser mais exato, na [[https://www.youtube.com/watch?v=ymQ3wEIq84Y][5ª finalização]].
[[../assets/img/chainsaw-man-ending-5.webp]]
Sei que a intenção não era exatamente o Vale, mas ainda assim não consigo assistir essa finalização sem fazer essa comparação.
Todo o cenário e a ambientação em que os personagens estão me lembram também os Espaços Liminares. Não seria uma surpresa para mim se essa semelhança fosse intencional, afinal, tanto o anime quanto os Espaços Liminares ficaram em alta +/- na mesma época.
* Espaços liminares
Os espaços liminares tomam um rumo semelhante ao Vale, porém ele se diverge em um ponto: Na ambientação.
A ambientação dos espaços liminares é bem característica, são lugares que você espera que vá ter algo ou alguém por lá, mas, não há nada. Somente o que foi deixado por lá.
Sinceramente esse gênero de terror é o que mais me dá medo, por quê diferente de um alien vestido de ser humano e um cachorro assassino sem pele, um espaço liminar é perfeitamente possível na vida real. Na realidade eles não são possíveis, eles *existem*.
Essa é a parte que mais pega nos meus nervos. O fato de você não só ver ou achar, mas até mesmo de você ter alguma lembrança com o local. Como por exemplo, um parque aquático abandonado. Apesar de nunca ter ido a um pessoalmente, até mesmo eu fico com calafrios em ver algo como isso:
[[../assets/img/liminal.webp]]
Não tem nada de errado com o local em si, nem com a imagem, porém, ainda assim, algo parece estar errado.
Uma explicação dada por muitas pessoas na internet é a de que o motivo desse desconforto vêm do fato de você esperar vem alguém na foto, por ser um local público e por você sempre ver um local como esse, populado.
A verdade é que cada pessoa tem uma reação à espaços como esses, no meu caso eu sinto calafrios, quase como se tivesse algo a mais na foto, mas que eu não estou enxergando, para outras pessoas, é só uma foto de um lugar vazio.
Mas sem sombra de dúvidas, uma das modas da internet relacionada a esse tema que mais me intrigou foram as [[https://en.wikipedia.org/wiki/The_Backrooms][Backrooms]].
** The Backrooms
[[../assets/img/HobbyTown_USA_Oshkosh_interior_under_construction_2002_(The_Backrooms).jpg]]
Tudo começou com um post na aba paranormal do 4chan, a mensagem do usuário em si não tinha nada de mais, porém a resposta é uma coisa completamente a parte.
#+begin_quote
If you're not careful and you noclip out of reality in the wrong areas, you'll end up in the Backrooms, where it's nothing but the stink of old moist carpet, the madness of mono-yellow, the endless background noise of fluorescent lights at maximum hum-buzz, and approximately six hundred million square miles of randomly segmented empty rooms to be trapped in
God save you if you hear something wandering around nearby, because it sure as hell has heard you
#+end_quote
E é com essa resposta que nasce um fenômeno na internet, um [[https://en.wikipedia.org/wiki/Alternate_reality_game][ARG]], e claro, uma fandom.
O que mais me deixou intrigado foi a semelhança dos ARG's de The Backrooms com a [[https://en.wikipedia.org/wiki/SCP_Foundation][SCP Foundation]]. Cada sala em The Backrooms tem um padrão, um método a seguir para conseguir fugir, e claro, algum tipo de anomalia presente. Seja ela uma criatura humanoide ou até mesmo um sorriso flutuante.
The Backrooms ficou tão popular que ultrapassou o gênero de [[https://en.wikipedia.org/wiki/Analog_horror][Analog Horror]] (o meu gênero favorito de terror). Diversos criadores de conteúdo fizeram vídeos comentando sobre, teorizando, fazendo gameplays de alguns jogos com esse tema.
*** [[https://www.youtube.com/c/KANEpixels][Kane Pixels]]
Esse carinha fez as Backrooms simplesmente explodirem.
Durante a onda de vídeos sobre as Backrooms, os vídeos dele se destacavam (e muito) entre todos os outros. Seja por qualidade técnica ou por ambientação, os vídeos que ele produzia (e produz até hoje) são de cair o queixo.
Ele não só conseguiu fazer uma combinação de Analog Horror com The Backrooms, como fez isso beirando a perfeição.
[[../assets/img/The-Backrooms-Kane-Pixels-01.jpg]]
Foi basicamente dos vídeos dele que surgiu a inspiração de diversos jogos que se vê por aí na Steam ou Itch.io.
[[../assets/img/smii7y_return_to_the_backrooms.webp]]
* Analog horror
Bem, já que eu mencionei ele, por quê não comentar sobre?
Assim como The Backrooms, esse gênero ficou extremamente popular uns tempos atrás. Começando uma febre com vídeos do universo de [[https://en.wikipedia.org/wiki/Five_Nights_at_Freddy%27s][FNAF]], poís é, FNAF. A maior parte desses vídeos giravam em torno de serem fitas de uso interno da empresa - Fitas de treinamento, relatórios gravados, filmagens de segurança - e que não eram feitas para serem consumidas por pessoas não-autorizadas.
Mas sempre, de alguma forma, alguém conseguia acesso às fitas e colocava as gravações na internet.
A parte mais interessante de alguns desses vídeos era a parte técnica, muitos deles eram quase que um "olha só o que eu sei fazer".
Pois é, esse tema ficou saturado beeeeem rápido. Mas, algumas pessoas viram potêncial nesse estilo de terror, e decidiram criar universos próprios, tendo como uma base o horror analógico.
Coisas como [[https://www.youtube.com/@blackdrag0nfish][Nephthys Media]], que exploravam um horror cósmico, começaram a surgir. O que foi um fator que me fez ter interesse nesse gênero.
** Nephthys Media
[[../assets/img/hqdefault.jpg]]
Apesar de não lembrar de praticamente nada do Nephthys Media, uma coisa que não tem como eu me esquecer é a atmosfera presente nele, é algo que me lembra os Espaços Liminares. É um desconforto constante e a impressão de que tem algo a mais que eu não estou enxergando.
Pode se dizer que esse analog horror em específico é o responsável por eu ter um certo medo de astros.
O enredo gira em torno de entidades que habitam os astros e em seus planos. Como disse eu não lembro de muita coisa, mas ainda assim é algo que eu recomendo.
** The Mandela Catalogue
Outro que ficou extremamente popular, mas que o criador perdeu a mão.
Ele explora a bizarrice que são [[https://en.wikipedia.org/wiki/Doppelg%C3%A4nger][Doppelgängers]], e pelo menos no início da minisérie, consegue fazer isso muito bem até.
O maior problema do Mandela Catalogue é que o seu criador acabou enjoando da própria obra e quis fazer dela algo "maior". Vamos dizer que ele voou muito perto do sol e acabou estragando a minisérie, pelo menos para mim, eu já não tenho o mínimo de interesse por ela depois do 2º capítulo.
[[../assets/img/catalogue-mondela-mandela-magazine.gif]]
#+begin_center
[[https://www.youtube.com/watch?v=gk4AlxnZOYc][The Mandela Magazine]]
#+end_center
Uma coisa que pode ser aprendida com o caso do Mandela Catalogue é a seguinte: Se a sua obra se tornou popular por conta da ambientação e do mistério que gira em torno de algo quase que no estilo Lovecraft de absurdo, não transforma ela em uma minisérie de terror adolescente.
** The Walden Files
Esse me dá arrepios só de lembrar.
The Walden Files é um ARG que tem inspirações em FNAF e em The Mandela Catalogue. Porém, só somente inspirações, ele é uma obra que não só se destaca como também elevou o padrão do gênero de Analog Horror.
Ele genuinamente me dá medo. Medo ao ponto de que eu só consumi ele por intermédio de um youtuber, o [[https://www.youtube.com/@pombatomico][Pombo Atômico]] e de dia na maior parte das vezes.
[[../assets/img/walden_files.webp]]
Ele também é extremamente gráfico e sonoro. Não é algo que eu recomendaria para a minha namorada por exemplo.
Mas a história que é contada... Olha, faz valer a pena. É com um dedo de FNAF, mas contada de uma forma coesa durante toda a obra e sem entregar fria e sem bandeja. Do início ao fim a sua curiosidade é instigada.
É uma ótima obra para se ver no Halloween. E talvez uma ótima obra para não assitir enquanto você está comendo alguma coisa.
* /Fin/
Bem, isso é tudo o que eu tinha a comentar por agora. O halloween está chegando e eu quis dar os meus 5 centávos aqui.
Te vejo no próximo post!

View file

@ -1,49 +0,0 @@
#+TITLE: Vi, só que dentro do Emacs!
Esse mostro de um programa é tão cheio de coisa para se falar que já garantiu até uma trilogia nesse blog.
* Viper
A um pouco mais de 3 horas atrás, enquanto eu ainda estava no meu trabalho, eu fiquei pesquisando um pouco sobre o Emacs, e eu acabei achando o diretório de manuais de referência dele. Dois deles me chamaram (e muito) a minha atenção, os manuais de referência do vip-mode e do =viper-mode=.
Obviamente que quando eu vi esses manuais eu cliquei neles para ver do que eles se tratavam, e bom, eles são modos que emulam os controles do VI, o editor de texto modal que vem com qualquer sistema Unix e que foi dele que surgiu o Vim (VI iMproved).
Eu decidi usar o =viper= no lugar do vip só porque ele aparenta ser uma opção mais completa em comparação. Ele chega no nível de até mesmo ter um mini-tutorial e um wizard perguntando qual o seu nível de expertise com ele.
* Bem, e como é usar ele?
Como já disse, o =viper= emula o VI e não o Vim (isso é o que o evil-mode faz), sendo assim ele não tem as mesmas teclas/comandos que o Vim possui. Porém, você ainda pode usar as teclas do Emacs em conjunto com as teclas do VI, o que mais que compensa, *na minha opinião*, a falta das teclas do Vim.
Só de ter uma parte das teclas que são usadas no Vim já torna a minha experiência muito melhor. Afinal, apesar do Emacs ser um programa que é ótimo em diversos aspectos, as teclas de atalho dele não são particularmente um ponto positivo dele.
E é claro que como tudo no Emacs, eu posso customizar o =viper= e adicionar os comandos que eu acho extremamente úteis do Vim, no =viper=, criando assim um Frankenstein que nunca deveria ter nascido.
A minha configuração dele, inclusive, está bem modesta, com poucas linhas de código, mas já são o suficiente para deixar o meu uso do Emacs 10 vezes mais aconchegante.
#+begin_src emacs-lisp
(setq viper-mode t)
(require 'viper)
(setq viper-inhibit-startup-message 't)
(setq viper-expert-level '5)
(setq viper-want-ctl-h-help t)
(setq viper-ex-style-editing nil)
(setq viper-no-multiple-ESC nil)
(setq viper-syntax-preference 'extended)
(setq viper-vi-style-in-minibuffer nil)
(define-key viper-vi-basic-map (kbd "v") 'set-mark-command)
(define-key viper-vi-basic-map (kbd "f") 'find-file)
(define-key viper-vi-basic-map (kbd "R") 'replace-rectangle)
(define-key viper-vi-basic-map (kbd "C-v") 'rectangle-mark-mode)
(define-key viper-vi-basic-map (kbd "x") 'kill-region)
(viper-mode)
#+end_src
Como eu disse, ainda está bem modesta. Apesar de que só tacar um bloco de código do nada não explica direito o que está acontecendo, Elisp é uma linguagem bem simples de entender, então eu acho que não vai ser tão problemático assim.
Mas, basicamente eu só ativei o =viper-mode= e configurei 5 teclas de atalho que "emulam" algumas teclas que eu uso no Neovim. Não são completamente idênticas, mas já dão conta do recado.
* /Fin/
Bom, é isso, acho que por agora eu não tenho mais o que falar sobre esse lindo programa chamado Emacs.
Até o próximo post!

View file

@ -1,24 +0,0 @@
#+TITLE: Tukain's Blog
#+AUTHOR: Tukain
#+DESCRIPTION: Um blog simples, feito usando o org-mode.
#+OPTIONS: toc:nil
#+begin_center
[[https://neocities.org/site/tukainpng][Neocities]] [[https://codeberg.org/tukain][Codeberg]] [[https://www.linkedin.com/in/diogo-fernandes-710193282/][LinkedIn]]
#+end_center
#+begin_center
/Feito com ❤️ usando o org-mode/
#+end_center
* Bem-vindo ao meu blog!
Aqui é um lugar onde eu gosto de comentar sobre assuntos envolvendo o meu cotidiano nesse vasto mundo chamado internet. E também sobre alguns assuntos que eu achar relevante o suficiente para comentar.
Uma coisa que você pode acabar reparando é na aparência do site. O motivo dele ser dessa maneira é bem simples na realidade, eu quis deixar o site com uma aparência mais próxima possível do meu editor de texto favorito: O Emacs!
[[file:assets/img/emacsshot.png]]
#+begin_quote
Este site não é otimizado para visualização em telas verticais!
#+end_quote

View file

@ -1,16 +0,0 @@
#+TITLE: Sitemap
- [[file:404.org][Erro 404]]
- [[file:teste.org][Teste]]
- [[file:index.org][Tukain's Blog]]
- Posts
- [[file:Posts/c-e-hare.org][A simplicidade da C e da Hare]]
- [[file:Posts/fiz-meu-próprio-ssg.org][Blog.sh, o meu próprio SSG]]
- [[file:Posts/de-novo-no-emacs.org][De novo no Emacs]]
- [[file:Posts/emacs.org][Emacs]]
- [[file:Posts/emacs-parte-2.org][Emacs - Parte 2]]
- [[file:Posts/god-mode.org][God mode]]
- [[file:Posts/hare.org][Hare]]
- [[file:Posts/proton.org][Tô usando o Proton]]
- [[file:Posts/vale-da-estranheza.org][Vale da estranheza]]
- [[file:Posts/viper-mode.org][Vi, só que dentro do Emacs!]]

View file

@ -1,60 +0,0 @@
#+TITLE: Teste
Essa página não contém nada de útil para o leitor, como o próprio nome dela já diz, ela é uma página de testes. Para ser mais específico, ela é uma página de testes do CSS do site.
* Blockquote
#+begin_quote
Não há nada a ser fazido ~ Napoleon
#+end_quote
* Verse
#+begin_verse
Dois, três, quatro, cinco, meia, sete, oito
Tá na hora de molhar o biscoito
Eu tô parado mas eu não me canso
Tá na hora de afogar o ganço
#+end_verse
* Code-block
#+begin_src hare
use fmt;
export fn main() void = {
const greetings = [
"Hello, world!",
"¡Hola Mundo!",
"Γειά σου Κόσμε!",
"Привіт, світе!",
"こんにちは世界!",
];
for (let greeting .. greetings) {
fmt::println(greeting)!;
};
};
#+end_src
* Inline-code
=int= significa "Integer".
* Center
#+begin_center
Estoy cansado, Thorfin
#+end_center
* Table
| Item | Lvl |
|---------------------+-----|
| Capacete de goblin | 9 |
| Armadura de ouro | 7 |
| Espada de cavaleiro | 11 |
* Organized list
1. A
1. aa
1. aaa
2. B
3. C
* Unorganized list
- A
- aa
- aaa
- B
- C
* Level 1
** Level 2
*** Level 3

7
convert Executable file
View file

@ -0,0 +1,7 @@
#!/bin/sh
mkdir -p out
for FILE in $(/bin/ls ~/git/pages_src/content/Posts/)
do
pandoc -f org -t markdown ~/git/pages_src/content/Posts/$FILE > out/$FILE.md
done

3
pages/footer.html Normal file
View file

@ -0,0 +1,3 @@
</article>
<footer><p>Made with <a href="https://codeberg.org/tukain/blog.sh">blog.sh</a></p></footer>
</body>

13
pages/head.html Normal file
View file

@ -0,0 +1,13 @@
<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Language" content="pt-br" />
<meta name="generator" content="blog.sh" />
<meta name="author" content="Tukain" />
<meta name="description" content="Aqui é um lugar onde eu gosto de comentar sobre assuntos envolvendo o meu cotidiano nesse vasto mundo chamado internet. E também sobre alguns assuntos que eu achar relevante o suficiente para comentar." />
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" href="/assets/fav.webp" type="image/webp" />
<link href="/assets/styles.css" rel="stylesheet">
<title>Tukain's Blog</title>
</head>
<body>

5
pages/navbar.html Normal file
View file

@ -0,0 +1,5 @@
<header><nav><ul><li><a href="/">Home</a></li></ul><ul class="link">
<li><a href="https://neocities.org/site/tukainpng">[Neocities]</a> </li>
<li><a href="https://codeberg.org/tukain">[Codeberg]</a> </li>
<li><a href="https://git.disroot.org/tukain">[Disroot]</a> </li>
</ul><ul><li><a href="/blog.html">Blog</a></li></ul></nav></header><article>