rkletr's Avatar

rkletr

@merkletr.ee

cryptography liker. ctf player. array languager? music enjoyer. en/frCA. SPDX-License-Identifier: 0BSD

322
Followers
190
Following
3,693
Posts
10.09.2023
Joined
Posts Following

Latest posts by rkletr @merkletr.ee

yeah ive complained about this before

27.02.2026 21:58 ๐Ÿ‘ 9 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

@priv.merkletr.ee is back up

took me a while to figure out a weird docker build issue but you can go use the feed again

i was keeping the ingester running on the old server during the migration so there's no backfill time, you can catch up to all the posts you missed out on during the downtime now

13.02.2026 16:43 ๐Ÿ‘ 5 ๐Ÿ” 1 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

can recommend go if you want to get a job and pull your hair out every day about how you're forced to work in such an insane language

13.02.2026 12:33 ๐Ÿ‘ 4 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

itll be back like tomorrow probably

12.02.2026 03:21 ๐Ÿ‘ 3 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

i wish distros used normal mechanisms for signing packages and not gpg

11.02.2026 20:38 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

why does pacman-key --refresh always have to take so long

11.02.2026 20:37 ๐Ÿ‘ 3 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

well other people blocking you is the obvious answer

but also bots or bad clients that do invalid replyrefs, or don't follow threadgates, etc

10.02.2026 18:20 ๐Ÿ‘ 2 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

honestly i know the functions are pretty alien but I don't want to add an unnecessary -> so idk how to fix them

hopefully with documentation it's not a problem

10.02.2026 02:16 ๐Ÿ‘ 2 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

these are also stolen from haskell tho haskell uses . as its composition operator

it's also somewhat of a feature of k but k does it a more insane way

10.02.2026 02:11 ๐Ÿ‘ 2 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

so these would be partial application. when you use an operator with only an operand on one side it becomes a function that takes the other side

1+ being shorthand for \a{1+a}
/2 being shorthand for \a{a/2}
@ being function composition
f@g == \a{ f(g(a)) }

so that example being \a{(1+a)/2}

10.02.2026 02:06 ๐Ÿ‘ 2 ๐Ÿ” 0 ๐Ÿ’ฌ 2 ๐Ÿ“Œ 0

ofc this design card is kinda condensed in the real world it'd be formatted with more whitespace

10.02.2026 01:51 ๐Ÿ‘ 2 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

i stole as much as possible from normal langs like python

[for(x:xs) x] is just reverse order of [x for x in xs] for consistency and preference reasons

\a -> a lambda syntax is from haskell, it's shorter than {|a|...} and there's no ambiguity and i can do the funny \[] shorthand for oop and stuff

10.02.2026 01:49 ๐Ÿ‘ 2 ๐Ÿ” 0 ๐Ÿ’ฌ 2 ๐Ÿ“Œ 0
daul v4(?); k-ish but readable for normal people?

1+2*3-4 // 3
var a = 1 // mut
val b = a // const
[1, 2, 3] // array
["a": 1, 2: 3] // table
[3,2,1][1] // 2
[3,2,1][:-1] // [3,2]
[3,2,1]@[1,2] // [2,1]

// scalar extension & implicit each
[0, 1] + 1 // [1, 2]
[0, 1] + [2, 3] // [2, 4]
[[1,2],[3,4]] + [1,5] // [[2,3],[8,9]]

// functions
\{ 1; 2 } // f() // 2
\a{a+1} // f(1) // 2
1+ // f(1) // 2
/2 @ 1+ // f(3) // 2
\a,b{b} // f(1,2) // 2
\a\b{b} // f(1)(2) // 2
\a[a] // f(2) // [2]
\[1, 2] // f()[1] // 2
\["recursive": self]
\["v":2,"m":\{self.v}] // val o = f(); o.m() // 2

// for loops work the same but val of a for loop is val of its last iter
// list/table comprehensions give values of all iters
[for(x:X) x+1] [for(k,v:tbl) k: v+1] // each
[for(x,y:X,Y) x*y] [for(x,y,z:X,tbl) ...] // zip
[for(x:X) for(y:Y) x*y] [for(x:X; y:Y) x*y] // cartesian product
\f,X[for(x:X) if(f(x)) x] // filter
\f,X,a{for(x:X) a = f(a,x)} // foldl k: a f/X
\f,X,a[for(x:X) a = f(a,x)] // scanl k: a f\X
\f,X[for(a,b:X,X[1:]) f(a,b)] // eachprior k: f':X
\A,B[for(a:A) fold(+)(a*B)] // matmul k: (+/*)\:

daul v4(?); k-ish but readable for normal people? 1+2*3-4 // 3 var a = 1 // mut val b = a // const [1, 2, 3] // array ["a": 1, 2: 3] // table [3,2,1][1] // 2 [3,2,1][:-1] // [3,2] [3,2,1]@[1,2] // [2,1] // scalar extension & implicit each [0, 1] + 1 // [1, 2] [0, 1] + [2, 3] // [2, 4] [[1,2],[3,4]] + [1,5] // [[2,3],[8,9]] // functions \{ 1; 2 } // f() // 2 \a{a+1} // f(1) // 2 1+ // f(1) // 2 /2 @ 1+ // f(3) // 2 \a,b{b} // f(1,2) // 2 \a\b{b} // f(1)(2) // 2 \a[a] // f(2) // [2] \[1, 2] // f()[1] // 2 \["recursive": self] \["v":2,"m":\{self.v}] // val o = f(); o.m() // 2 // for loops work the same but val of a for loop is val of its last iter // list/table comprehensions give values of all iters [for(x:X) x+1] [for(k,v:tbl) k: v+1] // each [for(x,y:X,Y) x*y] [for(x,y,z:X,tbl) ...] // zip [for(x:X) for(y:Y) x*y] [for(x:X; y:Y) x*y] // cartesian product \f,X[for(x:X) if(f(x)) x] // filter \f,X,a{for(x:X) a = f(a,x)} // foldl k: a f/X \f,X,a[for(x:X) a = f(a,x)] // scanl k: a f\X \f,X[for(a,b:X,X[1:]) f(a,b)] // eachprior k: f':X \A,B[for(a:A) fold(+)(a*B)] // matmul k: (+/*)\:

been thinking about writing a language again

chat what do yall think of this design

10.02.2026 01:38 ๐Ÿ‘ 11 ๐Ÿ” 0 ๐Ÿ’ฌ 3 ๐Ÿ“Œ 0
Preview
Support Juliet Support Juliet

you should give money to juliet

ko-fi.com/notjuliet

09.02.2026 02:14 ๐Ÿ‘ 26 ๐Ÿ” 12 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
Angine de Poitrine - Full Performance (Live on KEXP)
Angine de Poitrine - Full Performance (Live on KEXP) YouTube video by KEXP
07.02.2026 23:09 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

fuck les caquistes nous on est kak-istes (utilisateurs de kakoune)

05.02.2026 22:01 ๐Ÿ‘ 5 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

discover feed moment

05.02.2026 20:05 ๐Ÿ‘ 4 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

it's optimal, in fact

04.02.2026 17:29 ๐Ÿ‘ 4 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
SPILL
SPILL YouTube video by Nitepunk - Topic

function was good but this is on a whole other level
music.youtube.com/watch?v=_ITd...

04.02.2026 02:39 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

when i made my list i put black hole superette as the best album of 2025 but if i'm honest i probably get a lot more enjoyment out of nitepunk's lawless ep

the nitepunk singles can be hit or miss but human was all hits and lawless is much the same

04.02.2026 02:39 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

ngl bangarang the ep is all bangers i dont get why bangarang the track got all the attention

04.02.2026 02:05 ๐Ÿ‘ 3 ๐Ÿ” 1 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

replicating mutuals behavior is probably kind of a pain since you'd have to do custom backfill (probably easiest to getRelationships and map to rows or something) but hey wouldnt be too hard to ingest all follows. the ingester is like dead simple.

01.02.2026 18:06 ๐Ÿ‘ 2 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

this is why you use @priv.merkletr.ee i only prune old posts after you go over something like 1k in your feed
(and you have no limits if you host it yourself :+1:)

01.02.2026 17:58 ๐Ÿ‘ 2 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

@atcute/jetstream readme says it reconnects, so i guess i assumed the connection would close with them presumably restarting jetstream, but it never did??

01.02.2026 12:51 ๐Ÿ‘ 0 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

this is from when jetstream broke idk why but it just stopped consuming anything (cursor wasn't changing) until i restarted the process

01.02.2026 12:44 ๐Ÿ‘ 0 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

that one mentions neither in readme nor roadmap whether it supports the edit tools. and that's like most of the point of sharex for me at this point, if it doesn't have the eraser im just gonna continue using the niri built-in screenshot tool

31.01.2026 14:06 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

eh seems very claude guess we'll just have to watch and see how it goes

31.01.2026 13:22 ๐Ÿ‘ 8 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0
XerahS: A cross-platform port of the popular ShareX

https://github.com/ShareX/XerahS

XerahS: A cross-platform port of the popular ShareX https://github.com/ShareX/XerahS

holy shit is it fucking happening

31.01.2026 13:15 ๐Ÿ‘ 12 ๐Ÿ” 0 ๐Ÿ’ฌ 2 ๐Ÿ“Œ 0
Post image

looks caught up to me
(after like, 20 minutes; the cliff after is the pruning)

28.01.2026 16:29 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0