Compare commits
19 Commits
Author | SHA1 | Date |
---|---|---|
b1ek | a9cd6559bc | |
b1ek | ec4c158d2e | |
b1ek | 11e3f75d99 | |
b1ek | 7cc38727d5 | |
b1ek | 6b5a9601c4 | |
b1ek | f16f7a78d6 | |
b1ek | 740dfec1e2 | |
b1ek | 4fc270c09d | |
b1ek | 4bf96e0691 | |
b1ek | f34e5cbc21 | |
b1ek | c5f3be31aa | |
b1ek | cb725da974 | |
b1ek | b9df07d74d | |
b1ek | 0b1e5c0da2 | |
b1ek | 870f8239cd | |
b1ek | 79e6d8bfd0 | |
b1ek | d3a85b75d7 | |
b1ek | 1c6395bcfd | |
b1ek | 4e85a9967d |
51
README.md
|
@ -1,51 +0,0 @@
|
||||||
<p align='center'>
|
|
||||||
<img src='banner.webp'>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<h1 align='center'>
|
|
||||||
otherworld - a zola theme
|
|
||||||
</h1>
|
|
||||||
|
|
||||||
you can see the demo [here](https://world.blek.codes)
|
|
||||||
|
|
||||||
## how to use
|
|
||||||
|
|
||||||
### prerequisities
|
|
||||||
1. a linux system. you can use windows for that, but this guide centers itself on linux based systems.
|
|
||||||
2. you need to have these programs installed: `git` and `zola`
|
|
||||||
3. some creativity, html and scss skills
|
|
||||||
|
|
||||||
### steps
|
|
||||||
#### 1. clone the repo
|
|
||||||
(aka download the theme)
|
|
||||||
|
|
||||||
lets assume that your website's directory name in `daftpunk`. it will appear in commands a few times, and you should replace it with your website's name.
|
|
||||||
|
|
||||||
```sh
|
|
||||||
$ git clone git@git.blek.codes:blek/otherworld.git daftpunk
|
|
||||||
$ cd daftpunk
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 2. open an another terminal
|
|
||||||
in the same directory, run
|
|
||||||
|
|
||||||
```sh
|
|
||||||
$ zola serve
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 3. edit files in the `content` directory...
|
|
||||||
|
|
||||||
...as per [zola docs](https://www.getzola.org/documentation/getting-started/overview)
|
|
||||||
|
|
||||||
## how to disable loading
|
|
||||||
go to `content/index.md`, and in the `+++` blocks, set `extra.noload` to `true`.
|
|
||||||
|
|
||||||
like this:
|
|
||||||
```toml
|
|
||||||
+++
|
|
||||||
title = "Welcome"
|
|
||||||
|
|
||||||
[extra]
|
|
||||||
noload = true
|
|
||||||
+++
|
|
||||||
```
|
|
BIN
banner.webp
Before Width: | Height: | Size: 1.0 MiB |
BIN
banner.xcf
|
@ -12,7 +12,7 @@ build_search_index = false
|
||||||
[markdown]
|
[markdown]
|
||||||
# Whether to do syntax highlighting
|
# Whether to do syntax highlighting
|
||||||
# Theme can be customised by setting the `highlight_theme` variable to a theme supported by Zola
|
# Theme can be customised by setting the `highlight_theme` variable to a theme supported by Zola
|
||||||
highlight_code = false
|
highlight_code = true
|
||||||
|
|
||||||
[extra]
|
[extra]
|
||||||
# Put all your custom variables here
|
# Put all your custom variables here
|
||||||
|
|
|
@ -2,21 +2,58 @@
|
||||||
title = "Welcome"
|
title = "Welcome"
|
||||||
+++
|
+++
|
||||||
|
|
||||||
## Welcome to the otherworld!
|
## Welcome to my world!
|
||||||
It does look good, doesn't it? C'mon, it really is
|
Hello there! My name is Alice and i am a fullstack web dev. I like to start a lot of side projects, but finish only a few of them.
|
||||||
|
|
||||||
## Long text to make it look like this page has content
|
## My contacts
|
||||||
mroreowrmewormeowrmoewrmoewmroweemrweoermooewower :3
|
You can send me an email (preferred): [me@blek.codes](mailto:me@blek.codes)
|
||||||
|
I can also be reached via [telegram](https://t.me/bleki42).
|
||||||
|
|
||||||
Crazy? I used to be crazy. They locked me in a room.
|
<div class='js-only'>
|
||||||
A rubber room. A rubber room with rats. And rats make
|
My time in my timezone is: <span id='time'></span>
|
||||||
me crazy. Crazy? I used to be crazy. They locked me
|
<script>
|
||||||
in a room. A rubber room. A rubber room with rats. And
|
(async () => {
|
||||||
rats make me crazy. Crazy? Yes, i am crazy UwU
|
function update() {
|
||||||
|
document.getElementById('time').innerText = new Date(
|
||||||
|
new Date().toLocaleString('en-US', { timeZone: 'Asia/Vladivostok' })
|
||||||
|
).toLocaleString('en-US', {
|
||||||
|
hour: 'numeric',
|
||||||
|
minute: 'numeric',
|
||||||
|
second: 'numeric',
|
||||||
|
hourCycle: 'h24'
|
||||||
|
});
|
||||||
|
setTimeout(update, 1000);
|
||||||
|
}
|
||||||
|
update()
|
||||||
|
})()
|
||||||
|
</script>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
I also made a lil badge to show if i am currently online. Cool, huh?
|
||||||
|
<img src='https://online.blek.codes/gif' height='31px' width='88px' alt='A badge showing if i am online or not. Sorry, the only way to know it is to load the gif. It would be all greeny if i am online' />
|
||||||
|
<a href='/online-badge'>how does it work?</a>
|
||||||
|
|
||||||
|
<div class='js-only'>
|
||||||
|
|
||||||
|
## Metrics
|
||||||
|
This website collects anonymous metrics via [umami](https://umami.is). Anonymous means there is no identity attached to those metrics.
|
||||||
|
Also you can view it [here](https://umami.blek.codes/share/ucLh7hS5xcXCpklV/world)
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
## Projects
|
||||||
|
{{ amber_banner() }}
|
||||||
|
You can find the list of my projects [here](/projects).
|
||||||
|
|
||||||
## Blog
|
## Blog
|
||||||
See [here](/blog)
|
See [here](/blog)
|
||||||
|
|
||||||
|
## Webrings!!
|
||||||
|
I like webrings.
|
||||||
|
|
||||||
|
<a href="https://webring.haaien.xyz/#1" target="_blank" rel="noopener"><img src="/hairing.gif" alt="A button saying haaien webring" height='31px' width='88px'/></a>
|
||||||
|
<a href="https://acingtheinternet.netlify.app" target="_blank" rel="noopener"><img src="/acenow.gif" alt="A button saying asexuals now" height='31px' width='88px'></a>
|
||||||
|
|
||||||
## Facebook & social media
|
## Facebook & social media
|
||||||
Reject social media. It's evil
|
Reject social media. It's evil
|
||||||
|
|
||||||
|
@ -24,7 +61,11 @@ Reject social media. It's evil
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
### World's thoughts
|
||||||
|
|
||||||
|
Did you ever wonder what a [caterpillar](/caterpillar) looks like?
|
||||||
|
|
||||||
### Links
|
### Links
|
||||||
- [git repo of the theme](https://git.blek.codes/blek/otherworld)
|
- [a funny techy podcast](https://www.youtube.com/@tsarp)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
+++
|
||||||
|
template = 'custom/blog-post.html'
|
||||||
|
|
||||||
|
title = 'It aired!'
|
||||||
|
description = 'yaaay'
|
||||||
|
date = '2024-01-14'
|
||||||
|
slug = 'it-aired'
|
||||||
|
year = 2024
|
||||||
|
month = 1
|
||||||
|
day = 14
|
||||||
|
lang = 'en'
|
||||||
|
|
||||||
|
[extra]
|
||||||
|
author = 'b1ek <me@blek.codes>'
|
||||||
|
|
||||||
|
+++
|
||||||
|
|
||||||
|
The new website is aired at [blek.codes](https://blek.codes)! Yaaay
|
||||||
|
|
||||||
|
FYI, almost everything I make is open source (with this website being no exception), so heres the [git repo](https://git.blek.codes/blek/world.git) for yall in case you wanna see whats under the hood.
|
||||||
|
|
||||||
|
## What's new?
|
||||||
|
1. A funny vaporwave-like redesign
|
||||||
|
2. The website is fully static - you can even download it via smth like `wget -r`
|
||||||
|
3. Its fully NO-JS!! I mean, the previous versions were NOJS as well, but still its pretty awesome.
|
||||||
|
|
||||||
|
Also there won't be any guestbook for a while since as i mentioned before, this stack is fully static - basically just a bunch of .HTML files.
|
|
@ -0,0 +1,19 @@
|
||||||
|
+++
|
||||||
|
template = 'custom/blog-post.html'
|
||||||
|
|
||||||
|
title = 'airline blankets are so ew'
|
||||||
|
description = 'they have a lot of hairs in them'
|
||||||
|
date = '2024-08-17'
|
||||||
|
slug = 'airline-blankets'
|
||||||
|
year = 2024
|
||||||
|
month = 8
|
||||||
|
day = 17
|
||||||
|
lang = 'en'
|
||||||
|
|
||||||
|
[extra]
|
||||||
|
author = 'b1ek <me@blek.codes>'
|
||||||
|
+++
|
||||||
|
|
||||||
|
i flew just a lil bit in my life, and only on one airline so i probably shouldn't be all pissy at all airlines. but seriously, why can't they just wash them properly? i asked for a blanket at a plane and it had hairs and stuff on it.
|
||||||
|
|
||||||
|
like i paid 800$ for a single ticket. is that too much effort to wash them every time they fly? i also heard someone asking for a blanket in the end of the flight and the attendant said they didnt have any left. so, there it is again.
|
|
@ -0,0 +1,63 @@
|
||||||
|
+++
|
||||||
|
template = 'custom/blog-post.html'
|
||||||
|
|
||||||
|
title = 'duckduckgo ai chat thing'
|
||||||
|
description = 'its kinda cool'
|
||||||
|
date = '2024-04-11'
|
||||||
|
slug = 'duckduckgo-ai-chat'
|
||||||
|
year = 2024
|
||||||
|
month = 4
|
||||||
|
day = 11
|
||||||
|
lang = 'en'
|
||||||
|
|
||||||
|
[extra]
|
||||||
|
author = 'b1ek <me@blek.codes>'
|
||||||
|
+++
|
||||||
|
|
||||||
|
so, a few days ago i've noticed that duckduckgo has this weird new "ai chat" option:
|
||||||
|
![screenshot of duckduckgo page with a red arrow pointing to the "Chat" button](/blog-image/chat-btn.png)
|
||||||
|
|
||||||
|
it allows you to select two models: claude 1.2 and chatgpt 3.5. the last one is widely known, however you can find some info on claude [here](https://www.anthropic.com/news/releasing-claude-instant-1-2)
|
||||||
|
|
||||||
|
as i've always wondered just how real their claims are that your identity is never attached to the models, i've decided to research into the API.
|
||||||
|
|
||||||
|
## chat APIs
|
||||||
|
|
||||||
|
| Disclaimer: The following section is of educational purposes only. Please do not scrape DuckDuckGo's APIs, as it would only hurt the company which honestly cares about your privacy. |
|
||||||
|
| --- |
|
||||||
|
|
||||||
|
obviously the first thing i wanted to do see if there is a public chat API. i wasn't suprised when i couldn't find info on any of the public duckduckgo APIs(probably because there isn't any), other than [this stackoverflow answer](https://stackoverflow.com/questions/29346239/duckduckgo-api-how-to-get-more-results)
|
||||||
|
|
||||||
|
however i've investigated a bit and turns out that client API is not that complicated as i thought.
|
||||||
|
|
||||||
|
now, first of all you need yo obtain the API token via `GET https://duckduckgo.com/duckchat/v1/status` with a header `x-vqd-accept: 1`. the api token will be in the `x-vqd-4` header. it seems a bit tricky to get the right token without it throwing a `ERR_INVALID_VQD` error later, so its best to copy the request as cURL from your browser.
|
||||||
|
|
||||||
|
it is quite weird actually that it seems to be accepting only genuine browser-generated headers. however they contain little to no identifying data.
|
||||||
|
|
||||||
|
after you got the api key, send a `POST https://duckduckgo.com/duckchat/v1/chat` with a header `x-vqd-4: the-vqd-header-from-previous-request`.
|
||||||
|
|
||||||
|
the payload seems to be of this TS type and encoded via JSON:
|
||||||
|
|
||||||
|
```ts
|
||||||
|
type ChatPayload {
|
||||||
|
messages: { content: string, role: 'user' }[],
|
||||||
|
model: 'claude-instant-1.2' | 'gpt-3.5-turbo-0125'
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
then the API will return the response word-by-word in a good ol' streamed http response in chunks like this:
|
||||||
|
```json
|
||||||
|
\n
|
||||||
|
data: {"role":"assistant","message":".","created":1712840811713,"id":"compl_8pC9nVX8QJlN92jUtcJR8TgB","action":"success","model":"claude-instant-1.2"}
|
||||||
|
```
|
||||||
|
|
||||||
|
also the `/duckchat/v1/chat` request gives you the new VQD which you gotta use for the future requests.
|
||||||
|
|
||||||
|
i guess someone could fashion a cli program to read data from that API and print it out in the console.
|
||||||
|
|
||||||
|
upd a few days later: i did. [heres the link](https://git.blek.codes/blek/hey)
|
||||||
|
|
||||||
|
## the verdict
|
||||||
|
i think its safe to say that no identity data is collected via the chat APIs, other than your IP address, which by itself is not usually enough to identify a user, especially if you're sitting on a public network.
|
||||||
|
|
||||||
|
also if someone from the team who made the API reads this, please tell me if i missed some points, and what the hell does VQD even mean.
|
|
@ -0,0 +1,21 @@
|
||||||
|
+++
|
||||||
|
template = 'custom/blog-post.html'
|
||||||
|
|
||||||
|
title = 'Lbh ner fhpu n areq yznb'
|
||||||
|
description = 'ebgguvegrra vf fb shaal'
|
||||||
|
date = '2024-02-08'
|
||||||
|
slug = 'ebgguvegrra'
|
||||||
|
year = 2024
|
||||||
|
month = 2
|
||||||
|
day = 8
|
||||||
|
lang = 'en'
|
||||||
|
|
||||||
|
[extra]
|
||||||
|
author = 'b1ek <me@blek.codes>'
|
||||||
|
+++
|
||||||
|
|
||||||
|
# v unq fbzr cnapnxrf gbqnl
|
||||||
|
lbhxabj, gurbarfjvguvprpernzbagurz.
|
||||||
|
|
||||||
|
vzwhfgsbbyvatnebhaqgb znxrcrbcyrguvaxvgffbzrjrveqnffenaqbz yrggref :3 fblrnuunir shayznb
|
||||||
|
fb huz qb lbh xabj jung qbrf vqx, yl naq ggly zrna?
|
|
@ -0,0 +1,33 @@
|
||||||
|
+++
|
||||||
|
template = 'custom/blog-post.html'
|
||||||
|
|
||||||
|
title = 'youll be eclair, ill be life'
|
||||||
|
description = 'a few phylosophical thoughts'
|
||||||
|
date = '2024-01-28'
|
||||||
|
slug = 'eclair-life'
|
||||||
|
year = 2024
|
||||||
|
month = 1
|
||||||
|
day = 28
|
||||||
|
lang = 'en'
|
||||||
|
|
||||||
|
# [taxonomies]
|
||||||
|
# tags = ["showerthoughts"]
|
||||||
|
|
||||||
|
[extra]
|
||||||
|
author = 'b1ek <me@blek.codes>'
|
||||||
|
+++
|
||||||
|
|
||||||
|
<p align='center'>
|
||||||
|
<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/gNxFGHsEMUI?si=cloIuWNCp__637NV" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
i mean, it is such a simple fucking truth coming from a kids tv show.
|
||||||
|
it took me so long to realise that you don't moan about problems: you kick them in the butt, as hard as you can.
|
||||||
|
|
||||||
|
afterall, what is stopping you? like, imagine if you want to get the best job ever, but you don't think that you will pass the test so you dont apply at all.
|
||||||
|
|
||||||
|
but the thing is, nothing actually stopped you from applying. like, you may get rejected, and so what? you may have like a 0.1% chance of actually getting the job, you might just as well get it. as long as the chance exists, no matter how small it is or how small it may seem, the job is worth applying for.
|
||||||
|
|
||||||
|
my point is you can easily waste all of your life lurking because you are too afraid of getting rejected or whatever. the question is, do you want to waste your life being afraid? personally, i wouldn't. i would kick life in the butt when it gives me a hard time. and you should too, unknown stranger.
|
||||||
|
|
||||||
|
just remember this: it doesnt hurt to try. ever.r
|
|
@ -0,0 +1,30 @@
|
||||||
|
+++
|
||||||
|
template = 'custom/blog-post.html'
|
||||||
|
|
||||||
|
title = 'My idea about the guestbook'
|
||||||
|
description = 'The best way to create a guestbook in a static html project'
|
||||||
|
date = '2024-01-12'
|
||||||
|
slug = 'gb-idea'
|
||||||
|
year = 2024
|
||||||
|
month = 1
|
||||||
|
day = 12
|
||||||
|
lang = 'en'
|
||||||
|
|
||||||
|
[extra]
|
||||||
|
author = 'b1ek <me@blek.codes>'
|
||||||
|
+++
|
||||||
|
|
||||||
|
# In short...
|
||||||
|
You might know that my website [used to have a guestbook](https://old-1.blek.codes/guestbook) (at the moment of writing this article), and it was relatively easy to implement since the whole thing used to run on express.js and a bunch of databases.
|
||||||
|
|
||||||
|
# The problem
|
||||||
|
|
||||||
|
Thing is, the current version of the website (the one you are browsing right now) is written in [Zola](https://getzola.org), which compiles into a bunch of static .HTML files.
|
||||||
|
This is obviously good in terms of server costs and performance, but isn't very good when you need to add interactive shit like guestbooks, statistics and stuff.
|
||||||
|
|
||||||
|
I mean, I could've chosen literally any other framework when i was doing the rewrite - SvelteKit, Rust+Warp, hell, even Laravel: basically anything that supports server side HTML rendering. But i kinda want to do this one completely static.
|
||||||
|
|
||||||
|
# Possible solutions
|
||||||
|
Well, the first one and the most obvious one is to not to have a guestbook. It is pretty hard to filter out the spam and overall its kind of not worth the trouble.
|
||||||
|
|
||||||
|
However, i still want for y'all to leave a message here so im jumping to solution 2: Create a separate docker service or smth that handles POST forms and serves the data.
|
|
@ -0,0 +1,19 @@
|
||||||
|
+++
|
||||||
|
template = 'custom/blog-post.html'
|
||||||
|
|
||||||
|
title = 'happy 8th march to yall'
|
||||||
|
description = 'i am quite sad on this day'
|
||||||
|
date = '2024-03-08'
|
||||||
|
slug = 'happy-8th-march-2024'
|
||||||
|
year = 2024
|
||||||
|
month = 3
|
||||||
|
day = 8
|
||||||
|
lang = 'en'
|
||||||
|
|
||||||
|
[extra]
|
||||||
|
author = 'b1ek <me@blek.codes>'
|
||||||
|
+++
|
||||||
|
|
||||||
|
i don't have any people in my life to celebrate or hang out with. i have someone who i can call, but i dont want to talk to them.
|
||||||
|
|
||||||
|
let's just hope that next year will be better.
|
|
@ -3,15 +3,15 @@ template = 'custom/blog-post.html'
|
||||||
|
|
||||||
title = 'Hi!'
|
title = 'Hi!'
|
||||||
description = 'First post here!'
|
description = 'First post here!'
|
||||||
date = '2024-03-03'
|
date = '2024-01-08'
|
||||||
slug = 'hi'
|
slug = 'hi'
|
||||||
year = 2024
|
year = 2024
|
||||||
month = 3
|
month = 1
|
||||||
day = 3
|
day = 8
|
||||||
lang = 'en'
|
lang = 'en'
|
||||||
|
|
||||||
[extra]
|
[extra]
|
||||||
author = 'author person <author@author-writing-people.com>'
|
author = 'b1ek <me@blek.codes>'
|
||||||
+++
|
+++
|
||||||
|
|
||||||
Hey, this is the first post here! We'll se how it goes from there.
|
Hey, this is the first post here! We'll se how it goes from there.
|
||||||
|
|
|
@ -0,0 +1,67 @@
|
||||||
|
+++
|
||||||
|
template = 'custom/blog-post.html'
|
||||||
|
|
||||||
|
title = 'how to download music from youtube + thumbnail'
|
||||||
|
description = 'a short small guide on how to download music from youtube, preserving thumbnail'
|
||||||
|
date = '2024-08-22'
|
||||||
|
slug = 'download-music-from-yt'
|
||||||
|
year = 2024
|
||||||
|
month = 8
|
||||||
|
day = 22
|
||||||
|
lang = 'en'
|
||||||
|
|
||||||
|
[extra]
|
||||||
|
author = 'b1ek <me@blek.codes>'
|
||||||
|
|
||||||
|
+++
|
||||||
|
|
||||||
|
# let's get to the point.
|
||||||
|
you need to have `yt-dlp` and `ffmpeg` installed, `magick` and `lame` for setting the mp3 cover.
|
||||||
|
|
||||||
|
`yt-dlp` has the `-x` option, which automatically extracts the audio with ffmpeg. to specify the file format, use `--audio-format` (mp3, aac, etc):
|
||||||
|
|
||||||
|
```
|
||||||
|
yt-dlp https://youtu.be/oLnq2SdZvQs -x --audio-format mp3 -o flying_north.mp3
|
||||||
|
```
|
||||||
|
|
||||||
|
as you can see, the thumbnail is not preserved by `yt-dlp`:
|
||||||
|
|
||||||
|
<img src='/blog-image/yt-music-no-thumb.png' />
|
||||||
|
|
||||||
|
to get the thumbnail, do:
|
||||||
|
|
||||||
|
```
|
||||||
|
curl https://i.ytimg.com/vi_webp/$VIDEO_ID/maxresdefault.webp -o file.webp
|
||||||
|
```
|
||||||
|
|
||||||
|
to convert it to JPEG + crop it to 1:1 aspect ratio:
|
||||||
|
|
||||||
|
```
|
||||||
|
magick convert -crop 1:1 -gravity center file.{webp,jpeg}
|
||||||
|
```
|
||||||
|
|
||||||
|
and the last thing, to embed it inside the `.mp3`:
|
||||||
|
|
||||||
|
```
|
||||||
|
lame --ti file.jpeg flying_north.mp3
|
||||||
|
mv flying_north.mp3.mp3 flying_north.mp3 # there's a good chance `lame` will export the file to `FILENAME.mp3.mp3`
|
||||||
|
```
|
||||||
|
|
||||||
|
so, basically it could be collapsed down to a bash script:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
VIDEO_ID=oLnq2SdZvQs
|
||||||
|
filename=file.mp3
|
||||||
|
cover=$(mktemp)
|
||||||
|
|
||||||
|
yt-dlp https://youtu.be/$VIDEO_ID -x --audio-format mp3 -o $filename
|
||||||
|
curl https://i.ytimg.com/vi_webp/$VIDEO_ID/maxresdefault.webp -o $cover
|
||||||
|
lame --ti $cover $filename
|
||||||
|
```
|
||||||
|
|
||||||
|
and, yay! it works
|
||||||
|
|
||||||
|
<img src='/blog-image/yt-music-works-in-amberol.png' />
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
+++
|
||||||
|
template = 'custom/blog-post.html'
|
||||||
|
|
||||||
|
title = 'a few thoughts about life'
|
||||||
|
description = 'i am very gay and depressed'
|
||||||
|
date = '2024-02-23'
|
||||||
|
slug = 'life'
|
||||||
|
year = 2024
|
||||||
|
month = 2
|
||||||
|
day = 23
|
||||||
|
lang = 'en'
|
||||||
|
|
||||||
|
[extra]
|
||||||
|
author = 'b1ek <me@blek.codes>'
|
||||||
|
+++
|
||||||
|
|
||||||
|
to be honestly, the only thing i ever want to do with my life is to sit my whole life in some dense place like berlin or something, sit at coffee shops with my friends, talk about stuff and maybe do some hacktivist stuff.
|
||||||
|
would be really nice to do something really big (kinda like mr robot, iykyk)
|
||||||
|
|
||||||
|
i dont think i could make it, but might as well try.
|
||||||
|
|
||||||
|
also it would be fun to go on a date to some abandoned building ^^ i really like the aesthetic and stuff
|
||||||
|
|
||||||
|
btw, i dont think that my death protcol would actually work. like, it might but it probably simply won't. i really need to rethink it. maybe rebuild it so it would be simple as fuck. i dont know
|
||||||
|
|
||||||
|
i feel like i should re arrange the stuff on the index page.
|
|
@ -0,0 +1,34 @@
|
||||||
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
Comment: This is a revocation certificate
|
||||||
|
|
||||||
|
iQKVBCABCAB/FiEEWfRtuFDKRH82Nx3tFFRiIeNZXQwFAmbMjxphHQJuZXcga2V5
|
||||||
|
IC0gQTZDMDM4RTAzRDIxMkQwNjU3NTA1M0FEQTYyMkMyMkM5QkM2MTZCMgpjaGVj
|
||||||
|
ayBjdXJyZW50IGtleSBodHRwczovL2JsZWsuY29kZXMva2V5LmFzYwAKCRAUVGIh
|
||||||
|
41ldDMH8D/456UeHnKOsqODsHNUD7yUtbhpRsXjjEtKn0MgV9BwdNhtqGpbCAC8H
|
||||||
|
9kZIfuap1PQhZBuJuV+MIB3qkXta1niuhgXYaaSnrj/fqTZzPoGkV94X/LyVreD+
|
||||||
|
Tzfk2cKW19TzhtPHjsp1omoiUSpEZA6AW9T43VpEogfedtru3LlznJc/nnWUBwEH
|
||||||
|
Q3P3M+FoM+11jVgRwQq+KMMQr8DsudkPQhushOBYD/dExLou9zKzZvZLKTNYpa+g
|
||||||
|
Icic9F7My7gOnVrhT+NHdB3UJh4y82wj13t/nsrCCC9O99r/yyVsl8mJMy+9jScq
|
||||||
|
zWnXL6bRNwWNDNqEm7BB4gWSpvWe0DnFE6qlDikeWmCmGH6l8YBkoXT/4K/smHw9
|
||||||
|
fhSJGBh1h3FTvATWrNsreuNxut9OH2n6Y9cOoTVCNTOIJ3XEVXZ7dR1zKZDfJRwj
|
||||||
|
xwWWjxQt2xXI1PVybyd6PfGGfIrKAfU4EMpza7k1A/yvWlTYpYIhSXiqL0O8iJT9
|
||||||
|
RlZUmELi45hLEI3Nnd/2tmA5cL+NG9sbpfvr2+5gRbcLRwtMzZCOQU4ann8kyFVs
|
||||||
|
gfdd+SimzkKaZ5Ybb4L6Av5UCbVePNfSJKII/TWFFV2QUm8AS5/MQCnpxHFE7xQx
|
||||||
|
IgJEx5t8PicHCmXm71sBofVcw7eMomyYP4/JMPPTNpdo4nHUhe6yQQ==
|
||||||
|
=OFWv
|
||||||
|
-----END PGP PUBLIC KEY BLOCK-----
|
||||||
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
|
||||||
|
mDMEZsyO1RYJKwYBBAHaRw8BAQdAl/Y618e4nbHrKwUAVW/YjXQqaAy9ENKKphnV
|
||||||
|
w77ePJO0e2JsZWshIChwcmV2LiBrZXkgLSA1OUY0NkRCODUwQ0E0NDdGMzYzNzFE
|
||||||
|
RUQxNDU0NjIyMUUzNTk1RDBDIDsgY2hlY2sgY3VycmVudCBrZXkgaHR0cHM6Ly9i
|
||||||
|
bGVrLmNvZGVzL2tleS5hc2MpIDxtZUBibGVrLmNvZGVzPoiZBBMWCgBBFiEEpsA4
|
||||||
|
4D0hLQZXUFOtpiLCLJvGFrIFAmbMjtUCGwMFCQWjmoAFCwkIBwICIgIGFQoJCAsC
|
||||||
|
BBYCAwECHgcCF4AACgkQpiLCLJvGFrJsHAD+Kwwa376LtclKW1scMWWKs4cIgaJw
|
||||||
|
1dgD8ON1ir2EmrABAJMcoNEFbNREYQTKNul78MbLJYBhb7Dl82EHQRU7essGuDgE
|
||||||
|
ZsyO1RIKKwYBBAGXVQEFAQEHQB45pX39kNHHz77oy9NtZWO2mQS60Gf+/pGXEScp
|
||||||
|
dac4AwEIB4h+BBgWCgAmFiEEpsA44D0hLQZXUFOtpiLCLJvGFrIFAmbMjtUCGwwF
|
||||||
|
CQWjmoAACgkQpiLCLJvGFrKUhQD/ey5K7HZweNtsC8CPKZc8ejxS8rivgU8eoERn
|
||||||
|
QW98UNYA/3RHKiXditFsV6s+UZjM3raA7hXHkkJNaubXSfFMcFIN
|
||||||
|
=VbEi
|
||||||
|
-----END PGP PUBLIC KEY BLOCK-----
|
BIN
otherworld.png
Before Width: | Height: | Size: 3.0 KiB |
|
@ -0,0 +1,60 @@
|
||||||
|
.amber-banner {
|
||||||
|
background: #0005;
|
||||||
|
border: 1px solid #000;
|
||||||
|
border-radius: 8px;
|
||||||
|
|
||||||
|
height: 5rem;
|
||||||
|
width: fit-content;
|
||||||
|
padding: 1rem;
|
||||||
|
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 1rem;
|
||||||
|
|
||||||
|
margin-bottom: 2rem;
|
||||||
|
|
||||||
|
* {
|
||||||
|
margin: 0; padding: 0;
|
||||||
|
}
|
||||||
|
h1 {
|
||||||
|
font-size: 1.5rem;
|
||||||
|
}
|
||||||
|
ul {
|
||||||
|
list-style: none;
|
||||||
|
display: flex;
|
||||||
|
margin-top: 0.5rem;
|
||||||
|
gap: 0.5rem;
|
||||||
|
}
|
||||||
|
small {
|
||||||
|
display: block;
|
||||||
|
color: #555555;
|
||||||
|
}
|
||||||
|
|
||||||
|
.amber-banner-icon {
|
||||||
|
height: 100%;
|
||||||
|
padding: 0 1rem;
|
||||||
|
@keyframes amber-banner-icon-breathe {
|
||||||
|
0%, 30% {
|
||||||
|
transform: scale(1);
|
||||||
|
}
|
||||||
|
56% {
|
||||||
|
transform: scale(1.1);
|
||||||
|
}
|
||||||
|
70%, to {
|
||||||
|
transform: scale(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
animation: amber-banner-icon-breathe 6s ease infinite;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.amber-banner-title {
|
||||||
|
width: fit-content;
|
||||||
|
border-radius: 8px 8px 0 0;
|
||||||
|
padding: 0.2em 0.5em;
|
||||||
|
margin: 0;
|
||||||
|
margin-left: 1rem;
|
||||||
|
|
||||||
|
background: #0003;
|
||||||
|
border: 1px solid #000;
|
||||||
|
border-bottom: 0;
|
||||||
|
}
|
|
@ -50,3 +50,9 @@ a, a:visited {
|
||||||
text-decoration: underline !important;
|
text-decoration: underline !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pre code {
|
||||||
|
padding: 0.5em 1em;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -29,7 +29,6 @@
|
||||||
|
|
||||||
text-align: center;
|
text-align: center;
|
||||||
width: 80%;
|
width: 80%;
|
||||||
max-width: 1200px;
|
|
||||||
left: 50%;
|
left: 50%;
|
||||||
transform: translateX(-50%);
|
transform: translateX(-50%);
|
||||||
|
|
||||||
|
|
BIN
screenshot.png
Before Width: | Height: | Size: 2.0 MiB |
|
@ -0,0 +1 @@
|
||||||
|
<svg viewBox="0 0 957.7 1703" xmlns="http://www.w3.org/2000/svg"><path d="M0 560.3c0-22.4 8-44 22.5-61L428 23.3a66.1 66.1 0 0 1 100.6-.1l406.5 476a93.9 93.9 0 0 1 22.5 61.1v536.2c0 20.9-7 41.2-19.8 57.7l-407.3 523.3a66.2 66.2 0 0 1-104.4 0L19.8 1154.1A94 94 0 0 1 0 1096.5Z" fill="url(#a)"/><path d="M0 560.3c0-22.4 8-44 22.5-61L428 23.3a66.1 66.1 0 0 1 100.6-.1l406.5 476a93.9 93.9 0 0 1 22.5 61.1v536.2c0 20.9-7 41.2-19.8 57.7l-407.3 523.3a66.2 66.2 0 0 1-104.4 0L19.8 1154.1A94 94 0 0 1 0 1096.5Z" fill="url(#b)"/><path d="M456.8 461.1a31.8 31.8 0 0 0 22.1-30.3l.4-264.2a19.3 19.3 0 0 0-34-12.5L124.7 529.7a19.3 19.3 0 0 0 20.4 30.8l311.7-99.4z" fill="url(#c)"/><defs><radialGradient id="a" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="rotate(-90 1023.3 682.2) scale(1705.53474)"><stop offset="0" stop-color="#ffa200"/><stop offset="1" stop-color="#ad004f"/></radialGradient><radialGradient id="b" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(525.52052 0 0 775.7961 478.9 775.8)"><stop offset="0" stop-color="#ffa100" stop-opacity="0"/><stop offset=".5" stop-color="#ffa100" stop-opacity=".2"/><stop offset="1" stop-color="#ffa100" stop-opacity=".8"/></radialGradient><linearGradient id="c" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="scale(-795.7954 795.7954) rotate(-67.3 .5 1.1)"><stop offset="0" stop-color="#ffea00"/><stop offset="1" stop-color="#ff7d00"/></linearGradient></defs></svg>
|
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 48 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 229 KiB |
|
@ -10,23 +10,23 @@
|
||||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||||
<link href="https://fonts.googleapis.com/css2?family=Noto+Serif+JP:wght@400;700&display=swap" rel="stylesheet">
|
<link href="https://fonts.googleapis.com/css2?family=Noto+Serif+JP:wght@400;700&display=swap" rel="stylesheet">
|
||||||
<style>
|
<style>
|
||||||
* { font-family: 'Noto Serif JP' }
|
html { font-family: 'Noto Serif JP' }
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<title>Otherworld</title>
|
<title>blek! World</title>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<div class='screen bg'></div>
|
<div class='screen bg'></div>
|
||||||
<div class='screen content'>
|
<div class='screen content'>
|
||||||
<h1 style='margin-bottom:0'>
|
<h1 style='margin-bottom:0'>
|
||||||
<a href='/' class="title-a">Otherworldly</a>
|
<a href='/' class="title-a">blek! World</a>
|
||||||
</h1>
|
</h1>
|
||||||
<hr style='margin:0 auto'/>
|
<hr style='margin:0 auto'/>
|
||||||
|
|
||||||
{% block content %} {% endblock %}
|
{% block content %} {% endblock %}
|
||||||
|
|
||||||
<p style='font-size:80%;text-align:center;margin-top:80px;height:120px'>
|
<p style='font-size:80%;text-align:center;margin-top:120px;height:120px'>
|
||||||
Background credit to
|
Background credit to
|
||||||
<a style='color:gray !important' href="https://tenor.com/view/retro-aesthetic-gif-19478658">
|
<a style='color:gray !important' href="https://tenor.com/view/retro-aesthetic-gif-19478658">
|
||||||
tenor
|
tenor
|
||||||
|
|
|
@ -15,7 +15,6 @@
|
||||||
|
|
||||||
{% block root %}
|
{% block root %}
|
||||||
|
|
||||||
{% if page.extra.noload %}
|
|
||||||
<div class='screen fader'>
|
<div class='screen fader'>
|
||||||
<p>
|
<p>
|
||||||
<img src='/load.gif' width='46px' height='48px' style='margin-bottom:8px' /><br/>
|
<img src='/load.gif' width='46px' height='48px' style='margin-bottom:8px' /><br/>
|
||||||
|
@ -29,6 +28,5 @@
|
||||||
</span>
|
</span>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% endblock root %}
|
{% endblock root %}
|
|
@ -0,0 +1,5 @@
|
||||||
|
<div class="alert" style="background:#e7f29f30;border:1px solid #d7e28f25;padding:2rem;width:fit-content;margin:0rem auto;text-align: center;border-radius:.25rem;">
|
||||||
|
<h1 style="margin:0;padding:0">{{ title | safe }}</h1>
|
||||||
|
<hr style="margin:1rem auto">
|
||||||
|
<p>{{ body | safe }}</p>
|
||||||
|
</div>
|
|
@ -0,0 +1,29 @@
|
||||||
|
<link rel="stylesheet" href="/amber-banner.css">
|
||||||
|
|
||||||
|
<div class="amber-banner-title">
|
||||||
|
Open source promotion
|
||||||
|
</div>
|
||||||
|
<div class="amber-banner">
|
||||||
|
<img src="/amber.svg" class="amber-banner-icon">
|
||||||
|
<div>
|
||||||
|
<h1>Amber: the TypeScript for bash</h1>
|
||||||
|
<p>
|
||||||
|
A type safe, easy to use language compiled to bash
|
||||||
|
</p>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<a href="https://amber-lang.com">
|
||||||
|
<img alt="Go to website" title="Go to website" referrerpolicy="no-referrer" src="https://img.shields.io/badge/Go_to_website-orange?style=plastic">
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="https://github.com/amber-lang/amber.git">
|
||||||
|
<img alt="GitHub repository" title="Github repository" referrerpolicy="no-referrer" src="https://img.shields.io/github/stars/amber-lang/amber?style=plastic">
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<img alt="GPL 3.0 license" title="GPL 3.0 license" referrerpolicy="no-referrer" src="https://img.shields.io/github/license/amber-lang/amber?style=plastic&color=blue">
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
18
theme.toml
|
@ -1,18 +0,0 @@
|
||||||
name = "otherworld"
|
|
||||||
description = "Vaporwave aesthetic theme"
|
|
||||||
license = "GPL-3-only"
|
|
||||||
homepage = "https://git.blek.codes/blek/otherworld"
|
|
||||||
min_version = "0.1.0"
|
|
||||||
demo = "https://world.blek.codes"
|
|
||||||
|
|
||||||
[extra]
|
|
||||||
|
|
||||||
[author]
|
|
||||||
name = "blek!"
|
|
||||||
homepage = "https://blek.codes"
|
|
||||||
|
|
||||||
[original]
|
|
||||||
author = "blek!"
|
|
||||||
homepage = "https://blek.codes"
|
|
||||||
repo = "https://git.blek.codes/blek/world"
|
|
||||||
|
|