#πŸͺ…-progaming

1 messages Β· Page 129 of 1

supple whale
#

there we go, sex in its purest form

#

webgpu go brrrr

paper scroll
#

add to jellyfin ( i havent read anything but the embed )

jade stone
#

never had issues with captions on jellyfin official web client

#

there are quite a few third party clients that suck at it tho

clear thunder
#

i have caption sync issues on jellyfin web if i'm transcoding

#

known issue apparently

jade stone
#

just don't trasncode

#

shrimple

paper scroll
#

oh shrimp

clear thunder
#

my dad transcodes every single stream

paper scroll
#

that's kinda crazy

clear thunder
#

he absolutely doesn't need to

#

plex (I run both) defaults to it

clear thunder
#

I wanted to tell him but cbf, he wouldn't care anyway

supple whale
#

its roughly x20 slower than what i just wrote

supple whale
#

since well... it was like >x3 faster than their client

#

they removed it later tho, because it didnt auto-fallback to CJK fonts

#

because that destroyed perf

#

the fix was simple, just detect if the content is CJK via regex, and add a CJK font

#

they decided to not do that because it requires them to write code, rolled back to their shitty renderer

#

which means they went back to their renderer that doesnt do color space correction, video fps sync, has no vrr support, doesnt support anamorphic videos, doesnt support user's local fonts

#

etc etc etc

#

and this one is only for modern browser since webGPU

#

and JF wants to be backwards compatible to chrome30

#

which is a no-no for me

jade stone
#

if the user doesn't notice anything it's good enough

supple whale
jade stone
#

no

#

i do

supple whale
#

then blind?

#

idk what to tell you

#

its fucking dogshit their renderer

jade stone
#

i watch on decent hardware

#

that might be it

supple whale
#

doesnt matter

#

it single threaded with 0 gpu acceleration

jade stone
supple whale
#

u could have a nasa computer, it does not matter, because its single threaded wasm which is DOM bound

#

maybe you're just not watching any fansubs and doing CR releases only

#

cuz libass's renderer doesnt even fucking match the video framerate

#

the judder and complete missalignment of typesetting is impossible to miss

jade stone
#

there are some non-simple captions tho (depends on the series)

supple whale
#

yeah then its CR shit

pseudo sierra
#

can you send smth that has that I wanna test

supple whale
jade stone
#

guhhh

#

they need to add snapshot support to vitest vscode extension

supple whale
#

has color space issues

#

at 15:51

#

just this happens

#

instead of:

pseudo sierra
#

inch resting

jade stone
supple whale
#

there are a lot of tiny things like that, perfomance asside

#

for example

pseudo sierra
#

hm

supple whale
#

they legit dont support VRR

#

and they are hardcoded to 24fps [with jitter], which causes massive desyncs

#

yellow square [subs] should perfectly follow white square [video]

#

like glued to it, regardless of framerate

#

my shit is, because its vsynched

pseudo sierra
supple whale
#

their shit is just setInterval(render, 1000/24)

#

that alone, makes TS uwatchable, and thats ignoring the fact that they can barely render any typesetting real-time, because of the horrific perf

#

like i was already >x3 faster than them, and it still was nowhere fast enough

#

and now this is >x5 faster of my old client

#

its putting them in the dust

fierce pendant
#

what youre doing is cool

pseudo sierra
#

are you gonna pr this to jf?

supple whale
#

no

pseudo sierra
supple whale
#

and in jf-vue

pseudo sierra
#

chrome30 is unreal

supple whale
#

they removed it for a renderer which uses DOM

#

instead of canvas

pseudo sierra
supple whale
#

[which means its not accurate at all]

#

and its also like x10 slower than my old WASM

#

because... its 2MB smaller

jade stone
#

guhhh

#

my discord lsp

solid gazelle
#

@supple whale can i delay the subs

jade stone
#

handles finding all uses

#

but is broken with going to the definition

supple whale
# pseudo sierra <:fr:1024751426750132284>
const OVERRIDE_FONTS: Partial<Record<typeof defaults.subtitleStyle, string>> = {
  gandhisans: '/GandhiSans-Bold.woff2',
  notosans: '/NotoSans-Bold.woff2'
}

const LANGUAGE_OVERRIDES: Record<string, {url: string, name: string}> = {
  jpn: { url: '/NotoSansJP.woff2', name: 'Noto Sans JP Bold' },
  kor: { url: '/NotoSansKR.woff2', name: 'Noto Sans KR Bold' },
  chi: { url: '/NotoSansHK.woff2', name: 'Noto Sans HK' },
  ja: { url: '/NotoSansJP.woff2', name: 'Noto Sans JP Bold' },
  ko: { url: '/NotoSansKR.woff2', name: 'Noto Sans KR Bold' },
  zh: { url: '/NotoSansHK.woff2', name: 'Noto Sans HK' }
}

function detectCJKLanguage (str: string) {
  const japaneseRegex = /[\u3040-\u309f\u30a0-\u30ff]/
  const koreanRegex = /[\uac00-\ud7af\u1100-\u11ff\u3130-\u318f\ua960-\ua97f\ud7b0-\ud7ff]/
  const chineseRegex = /[\u4e00-\u9fff\u3400-\u4dbf]/

  for (let i = 0; i < str.length; i += 10000) {
    const chunk = str.slice(i, i + 10000)

    if (japaneseRegex.test(chunk)) return 'jpn'
    if (koreanRegex.test(chunk)) return 'kor'
    if (chineseRegex.test(chunk)) return 'chi'
  }

  return null
}

const trackLanguage = detectCJKLanguage(assSubtitleFileHeader)

    if (LANGUAGE_OVERRIDES[track.meta.language ?? '']) {
      const { name, url } = LANGUAGE_OVERRIDES[track.meta.language ?? '']!
      this.addFont(url)
      this.renderer.setDefaultFont(name)
    } else {
      this.renderer.setDefaultFont('roboto medium')
    }
#

this is the code they didnt want to add

#

and which is why they removed it from JF web

#

which is crazy

pseudo sierra
supple whale
#

the reason i removed this, was because you had to load tens of megabytes of fonts into memory

#

which slowed the entire wasm and js down

#

and also often took upwards of a minute to even load the renderer

#

because if you connected to ur isntance remotely, theit code had to load ALL the fonts, before showing any subs

#

so instead of doing it conditionally, they nuked the lib

supple whale
#

do it?

#

xD

solid gazelle
#

eerrm

solid gazelle
supple whale
#

yeah

#

timeOffset

#

when constructing

solid gazelle
#

yay

supple whale
#

or instance.timeOffset

#

or smth like that

solid gazelle
#

can u change it later on while the video is playing

supple whale
#

yes

supple whale
solid gazelle
supple whale
#

the new webGPU renderer isnt on any website yet

#

its on the git only for now

#

im prettying up the code

#

before i push it to npm

fierce pendant
#

you should also push it to the new vlt Serverless Registry for Enterpriseβ„’

jade stone
#

guhhhhhh

#

why wont v8 let you restart the frame in an async context if there hasn't been an await yet

supple whale
#

holy

#

webGPU is turning off my displays

pseudo sierra
#

insane

#

have you tried turning it back on

dawn ledge
#

someone hire cro at netflix

supple whale
dawn ledge
#

is this what eating living and breathing in anime does to a man

jade stone
#

VITEEEEEEEEEEEEEEE

dawn ledge
jade stone
#

(somehow typescript considers a function call to be a lhs expr, so idk)

dawn ledge
#

when in doubt nuking cache helps a lot

jade stone
#

yeah, but i re-run test every time i change code

#

so it will get annoying

#

git clean -dfx my beloved

royal nymph
#

@supple whale you are insane

pseudo sierra
#

is anyone here sane

supple whale
#

cant u tell already

#

im past loosing my shit

#

this was a grind

#

it was WELL worth it

#

but it was nuts

granite moat
pseudo sierra
#

salad actually insane

deep mulch
#

salad actually insane

clear thunder
#

salad actually insane

supple whale
#

i was crazy once

valid jetty
#

it is actually really good

#

dont sob react

#

im loving it idk

#

its surprisingly nice on the eyes

valid jetty
#

yes

pseudo sierra
#

sadanspaced

jade stone
#

might steal the ligatures from that and stick them in comic shanns

pseudo sierra
#

insane

deep mulch
#

insane

frozen pendant
#

Currently stuck with a "DTLS Connecting" issue whenever i have client mods

#

Discord web works fine. but an electron client does not

#

nothing in X-Super-Properties suggests that i'm tripping it, atleast in comparison to web client

#

Electron 39.2.7, with and without vencord ( v1.13.11 β€’ c123efd (Web) )

#

any suggestions?

#

UA is Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36

#

.... Okay, this also happens on Vesktop stable, maybe i'm not doing something wrong after all

#

web and stock client work fine

#

both my own and vesktop do not

frosty obsidian
#

vns

elder yarrowBOT
frozen pendant
#

i'm here because my issue isn't vencord related & it's related to a client that i maintain for myself, which is programming, am i wrong with that?

#

I've asked questions like this before here and have been fine...

frosty obsidian
#

oh it looked more like a support thing mbmb

frozen pendant
#

dear chromium, Why are the webrtc developer tools in an internal URL instead of the yknow, dedicated devtools package that's specifically made for developers?

#

Oh okay now that im debugging its happening in unmodified web now too >:(

royal nymph
#

anyway it's a discord issue

frozen pendant
#

okay yeah um

#

i just found out how to 'fix' it

#

disabling mic access on web

#

makes it connect

#

such a stupid bug

supple whale
#

i... made it even faster

#

XDDDD

#

turns out i wasnt using SIMD

#

and instead of using mimalloc i was using dlmalloc

#

that made it like... x4 faster...

#

jesus... fucking... christ

#

mimalloc is nuts

#

previously i ran it real-time at 1080p

#

now its real-time at 2k, and almost 3k

ornate quiver
fierce pendant
#

fast ass

supple whale
#

ah shout have found this sooner

supple whale
lavish cloud
supple whale
#

???

lavish cloud
#

cuz mimalloc fast

supple whale
#

okay

#

guys

jade stone
supple whale
#

im taking bets for "what is the most unhinged fucking bug i just found"

#

im betting $40 no1 will ever guess it

supple whale
#

ABSOLUTELY CRAZY SHIT

deep mulch
#

github app so bad

#

title cut off, can't expand the ellipsis

pseudo sierra
#

gloom fixes this

supple whale
#

so if your app is crossOriginIsolated

#

and served from a service worker

#

shit breaks

#

LOL

pseudo sierra
#

insane

supple whale
#

this shit has to take the "bug of the year" award

jade stone
supple whale
#

damn thats nuts

#

but wtfffff

#

oh

#

OH LMAO

#

i see

#

yeah thats crazy

#

cant u assign it by reference?

jade stone
#

You can easily work around this. It's just really annoying

supple whale
#
const a = Symbol.for('test')
const obj = {
  [a] () {
    // stuff
  }
}

<Bar obj={obj} />
jade stone
supple whale
#

as annoying as docker/wsl mounts randomly overwriting files?

jade stone
#

You have to use index notation

supple whale
#

i wasted like 3h last night on WSL just fucking my files

#

each time it wiped like 20+mins of native code compile time

jade stone
#

obj[a] = ...

supple whale
#

crazy XD

jade stone
#

This vite issue also drove me insane

supple whale
#

i had a compiler bug where

import worker1 from './worker1?worker'

wouldnt work if it was run from inside another worker

import worker2 from './worker2?worker'
#

and then i had an issue where vite wouldnt normalize paths

jade stone
#

Hmr just doesn't work and I thought my code was broken

supple whale
#

so new Worker(path ?? new URL('./worker.js', import.meta.url)) wouldnt work

#

because their regex checks only for new Worker(new URL(

#

:)))))))))))))

supple whale
jade stone
#

On async imports

jade stone
supple whale
#

p3-minor-bug
An edge case that only affects very specific usage (priority)

jade stone
supple whale
#

mhm interesting

jade stone
supple whale
#

CXDDDDXDXDX DXD

#

the fact that these fuckers dont use AST is NUTS to me

jade stone
#

Like at least roll up does

supple whale
#

oh yeah

#

it does

#

so when u build you'll get DIFFERENT FUCKING OUTPUTS

#

THAN WHEN U RUN DEV

jade stone
#

Yeah

supple whale
#

WHICH CONSTANTLY BREAKS MY WORKERS AND THREADING

#

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

#

holy fuck this past week has been awful for me

#

so many dev bugs

supple whale
jade stone
#

They finally backported the V8 debugger crash to node

supple whale
#

its retarded

#

i was so lost as to why my multithreading was fucked

jade stone
#

So I still have to deal with this shit

supple whale
#

and it was just all 1 thread....

#

v8 debugger crash?

jade stone
#

@supple whale

function crash() {
    const thing = [];
    const otherThing = [];
    // set your breakpoint on line 5, the line starting with for (...), and attempt to step into the loop
    for (const item in thing) {
        otherThing.map(() => item);
    }
}

crash()
supple whale
#

lmao

dawn ledge
# supple whale WHICH CONSTANTLY BREAKS MY WORKERS AND THREADING

lol the most annoying issue ive had with vite would be using the import MyWorker from "...?worker" syntax and those workers not erroring or initializing because it couldnt transpile the underlying worker for some reason (mostly becuse i left in a wrong import in there or something, or a syntax error)

supple whale
#

oh yeah and it just silent fails

#

no error or nothing

#

its great

dawn ledge
#

i have legit spent multiple hours figuring out whats wrong only to find out i had an import to a file i deleted because it was unused

supple whale
#

yeah after i wasted like 5 mins on that i learned

#

i usually always check network

#

and it would just be "pending" forever

#

and id figure ah, it cant compile it probs

#

this is the kind of shit i need to monkeypatch to fix emscripten

#

because its dogshit

#

also need to add abunch of code at compile, to fix the fact that their pthreading doesnt have fallbacks for when u dont have crossOriginIsolation

#

so that was also a fun 30 minutes

dawn ledge
supple whale
#

wasmd bindgen cant do most of this

#

it still doesnt support memory64

#

and its SIMD support is ass

#

pthread support is non-existent

#

and has no growable memory

#

and that means i'd need to write rust bindings for a C lib

#

PASS

dawn ledge
#

i recently did multithreading with rust and wasm

#

it was a horrible experience

#

albeit most of it was just because of my stupidity

jade stone
#

I didn't even know webassembly could do multi threading

supple whale
#

it cant

#

its done with javascript Workers

#

and atomics

dawn ledge
#

which might come to bite you in the ass if you are not careful enough

supple whale
#

yep

#

cuz you're now juggling js, workers, urls, network requestrs

#

and CORS and CORP

#

CORP being the worst

#

because if u thought CORS was bad

#

HAH

jade stone
#

Oh

#

Insane

#

vai what is CORP in web dev

elder yarrowBOT
# jade stone vai what is CORP in web dev

In web development, CORP stands for Cross-Origin-Resource-Policy. It is a security feature that allows web servers to control how resources (like images, scripts, and fonts) can be shared across different origins.

CORP helps prevent data leaks and unauthorized access by specifying which external origins are allowed to request and load resources hosted on a domain. This is achieved by adding a Cross-Origin-Resource-Policy HTTP response header.

The common directives for CORP include:

  • same-origin: Resources can only be loaded from the exact same origin.
  • same-site: Resources can be loaded from the same site (same origin or a subdomain).
  • cross-origin: Resources can be loaded from any origin.

-# Response generated by gemini-2.5-flash. AI may be incorrect or misleading.

supple whale
#

its CORS on steroids

#

@jade stone how'd ya run AI?

#

look up cross origin isolation

supple whale
#

ah

#

vai whats required for cross origin isolation for sharedarraybuffers in web

#

gg i tried

dawn ledge
dawn ledge
dawn ledge
#

until i realized i need to explictly tell cf pages to add the header

supple whale
#

which then broke all the images, iframes and videos on ur stie?

dawn ledge
#

fortunately i didnt have any of those!

#

it was a simple site that had a button to "upload" a folder and the wasm processed some files from it

#

and then you could download the processed output

supple whale
#

lucky you

#

my site operates on content ONLY from 3rd party APIs

#

i dont have any of my own content on it

#

so that was fun...

dawn ledge
#

my condolences

supple whale
dawn ledge
#

got the whole browser will use the whole browser ahh flags

supple whale
#

trully

#

any of ya on linux could check if electron 39.2.7 runs?

#

waiting for builds....

#

or not because macos is a fuck

#

gonna run out of budget for LFS at this rate

#

any linux enjoyers?

#

that could test if shit shits the bed or not

dawn ledge
#

cant test because nix would shit the bed before this does

fierce pendant
supple whale
#

nvm i alr had some1 else test it

#

its my turbo giga overkill anime app

#

backed by fucking nasa technology

pseudo sierra
#

πŸ”₯

jade stone
supple whale
#

the fuck?

jade stone
#

Can I use it to stream from my jellyfin

supple whale
#

?????

#

i'd call you all sorts of names

jade stone
#

Does that even make sense or am I crazy

supple whale
#

because the statement you just made

#

thats how insanely fucking stupid and dumb what u said is

#

"look at my cool car!" "okay but can i use it with my tesla?"

#

like??/ fucking what?

supple whale
#

but yeah

#

its striclyt for anime

#

you'll never need jellyfin or any other tooling if u use my app

#

its a full stack replacement for jf+qbit+torrents+anything else, but strictly anime

#

that's better in every possible way

jade stone
supple whale
#

then i dont recommend it

#

its a "once you use it, you can never go back to anything else" type thing

#

and there's nothing like this for western media

clear thunder
#

what does it use for torrents

#

a library?

supple whale
#

my own client

#

it streams torrents real time, using range requests, so when you seek on a video it prioritizes downloading those pieces from the swarm, and presents them instantly

#

so you don't need to tuck about waiting for a download, you press play and can start watching within 10 seconds

jade stone
supple whale
#

it doesn't matter

jade stone
#

Like I've had some that have taken days to complete

supple whale
#

ad long as it's above the video bitrate

#

which for anime torrents is almost apways

#

you'll be very hard pressed to find an anime that doesn't have seeders

#

it just needs to be the same DL speed as the video bitrate

#

and it also has nzb streaming for dead torrents if you own an nzb provider

jade stone
clear thunder
jade stone
supple whale
#

PTS give you everything

#

AB only exists for ZRs torrents

#

well and music, but that's not anime

#

that said ab uses my torrent client to publish seasonals

#

so I can't imagine getting it onto ab would be hard

clear thunder
#

i think there's a forum thread for requesting it

supple whale
#

i dont care enough tbf

#

as i said 0 reason to use ab

#

it just limits u for no good reason

#

was invited to ab 3 times

#

didnt accept once

#

ah yes let me worry about activity, ratio, torrent client versions, vpns etc, just so i can download 4 fucking torrents

#

XDDDDDDDDDDDD

clear thunder
#

ab has such an easy economy it is basically impossible to get banned unless you don't seed

supple whale
#

and

#

publics flat out will never ban you no matter what

#

some risk, vs no risk at all

#

ab is good for non-anime

#

that's it

supple whale
#

mine is on demand

#

u want to watch it NOW

#

you click NOW

#

and watch NOW

#

no fucking bullshit waiting

clear thunder
#

I've never heard of pts and I can't find anything about it

supple whale
#

fucks

#

i meant publics in that sentence

jade stone
supple whale
#

for anime?

jade stone
#

Yes

supple whale
#

give me 15

#

in a raid

#

then u can throw some curvballs my way

#

and ill show u its just sonarr being shit

jade stone
#

I'm going to double check that I can't find anything first

#

Yeah I found torrents for all of them

#

But are speeds like this enough to stream from

#

One torrent is fluctuating between around those two

supple whale
#

give me the show names

#

ill check in a sec

#

@jade stone

jade stone
#

Oh I was more so just curious if those speeds would be enough to stream off of

supple whale
#

no

#

but that doesnt matter

#

because my software wouldnt pick shit torrents

#

which is why i asked for names not speeds

jade stone
#

oh

supple whale
#

no? okay

jade stone
supple whale
#

of anime?

#

bro have you seen my list?

#

i fucking watched redo of healer 3 times XD

#

we dont judge here for anime

#

we judge for software used

jade stone
pseudo sierra
#

smh

supple whale
#

ah so those abysmal speeds were tv series not anime

#

makes sense

pseudo sierra
jade stone
pseudo sierra
#

actually wait is there anything I can leak without also getting banned

#

nvm ignore

pseudo sierra
#

TRUE

supple whale
pseudo sierra
#

it's only hard to find seeders for some older anime if you're after high quality or specific codec (lmao have fun finding old anime in av1)

supple whale
#

why would u ever look for any anime in av1

#

it looks like shit

#

but yeah old anime is either take the most seeded

#

or use nzb streaming if u want some other actually good releases

#

and even then, seadex's releases pretty much are always pulled by seedboxes

#

so those are usually safe too

supple whale
#

oh yeah @jade stone speaking of vite bullshit

#

i remember this

pearl stagBOT
# supple whale https://github.com/hayase-app/interface/blob/56a1dbec576da5860338b9aeec9882d91e8...

index.ts: Lines 7-14

const viteFixedImportWeTrullyHateViteWithAPassionForNotSupportingBasicFeatures = async <T>(path: string) => {
  // previously: return import('doc999tor-fast-geoip/data/locations.json', { with: { type: 'json' } })
  const res = await fetch(`/geoip/${path}.json`)
  return await res.json() as T
}

const ipCache: Record<string, Format> = {}
const locationCache = viteFixedImportWeTrullyHateViteWithAPassionForNotSupportingBasicFeatures<locationRecord[]>('locations')
supple whale
#

vite doesnt support {with} imports

#

or assert imports

#

its been like what

#

5 years since those were spec'ed?

jade stone
#

love

supple whale
#

so my fix was to static copy the entire code with a static copy plugin

#

cuz it kept transpiling the JSON to JS, which imploded performance

#

and it didnt want to conditionally import it

#

so you loaded like a 200MB database of ip locations

#

ofc webpack has supported this since day1

jade stone
#

it loves adding named variables for json

#

instead of just doing json.parse ('string')

#

and that only gets minified out if you use terser

jade stone
supple whale
#

i think thats a react thing

#

works fine in sveltekit

jade stone
#

it's directly an issue with how vite creats json imports

deep mulch
#

@jade stone

jade stone
#

@deep mulch EVIL

deep mulch
jade stone
#

yop

#

how gloom is made

deep mulch
#

yop

dawn ledge
deep mulch
#

sadan insanw

nimble bone
fierce pendant
#

ts so gay

supple whale
#

fucking scuse me chrome?

#

are u fucking drunk?

#

it cant seek a video so it just loads like 80% of it XD

#

no thats the entire fucking file it loads

pseudo sierra
#

malware

supple whale
#

i think its a mangled seekhead

worldly sigil
#

this will be very performant on mobile clients where the average mobile user has an attention span of 18 picoseconds

jade stone
#

@supple whale do you have any experience with using vite on the backend

#

just looking to bundle a simple web socket server with some workers

dawn ledge
#

why are you bundling code on the backend cro

royal nymph
supple whale
#

ohhhh

#

vite server?

#

HELL NAH.

#

never do that shit

jade stone
#

screw vite

supple whale
#

it doesn't scale

jade stone
#

zsh on top

royal nymph
#

frontend gets all these goodies, hot module reload etc

meanwhile backend is still cavemonkey level

jade stone
royal nymph
jade stone
#

just vite as a bundler

#

for the server

royal nymph
#

get vite hmr working for vencord @jade stone

jade stone
#

i kinda did that a while back

#

got too cursed too quickly

royal nymph
#

how did u do it

jade stone
#

rspack

royal nymph
#

why rspack

jade stone
#

idk

#

i dont think i even knew vite was a thing then

#

it has horror in the name for a reason

#

i think i gave up because i had no idea how to use the hmr api

dawn ledge
supple whale
#

what are you saying to me

#

like a bundler for nodejs?

jade stone
#

wdym

#

yes

supple whale
#

oh

#

yeah no fuck that

#

it's ass

#

it's possible but not out of the box

#

you'll spend 10 days fighting with the config

#

just use rspack and set target to node

jade stone
#

just a few megabytes

#

watcher.ts is 111 lines

supple whale
#

I use vite for node on electron

#

but it's using turbo custom plugins and I can't say I recommend it

jade stone
#

what is unassigned wires

#

oh

#

is that the inline source-map

royal nymph
jade stone
#

inline source map

#

17.1 mb without

royal nymph
#

wtf are u bundling

jade stone
#

typescript, jsdom

royal nymph
#

vencord is 80k lines of code and only like 1.5mb even with inline source map

royal nymph
jade stone
#

these are all my imports

royal nymph
#

is the go rewrite usable yet

jade stone
#

you need to shim their api

#

also i fucking hate go

royal nymph
#

why

jade stone
#

i dont like the module system

royal nymph
#

you don't like speed?

jade stone
#

i would use rust for this, but that's based on ESTree which i don't like

#

i dislike how ESTree keeps source text and tokens separate from the AST nodes

#

typescript ast:

#

ESTree ast:

jade stone
royal nymph
#

i think you misunderstood

#

the go rewrite of typescript

jade stone
royal nymph
#

no

#

there's going to be a js api I assume

jade stone
#

yes, but afaik it's not going to have nearly as many features as the current api

#

like i'm not sure if you could do thigns with the ast

#

also you have the ffi cost

#

i'm not sure how big that would be tho

jade stone
#

WOULD IT KILL NODE TO PUBLISH THIS FIX TO A VERSION

#

found a different way to trigger it

#

but to workaround, i need to set the breakpoints every time i start it

fallen nebula
jade stone
#

yeah! i wouldn't have this issue because i wouldn't be able to attach a debugger in the first place

jade stone
ionic lake
#

guh

jade stone
#

I've never heard of it

ionic lake
#

if this is what you wanted

jade stone
#

I'm doing websockets

#

And just ended up using a shell script and es build CLI

#

But that does look interesting and I'll check it out later

ionic lake
#

you can do websockets with crossws

jade stone
#

I'm just using ws rn

#

./run

const foo = {
a() {
console.log("a");
},
b() {},
};
function c() {
console.log("c");
}
foo.a().b(c());
rugged berryBOT
#

Here is your js(18.15.0) output @jade stone

a
/piston/jobs/cba5f45a-b0ae-4758-a055-d6176ed0c92d/file0.code:10
foo.a().b(c());
       ^

TypeError: Cannot read properties of undefined (reading 'b')
    at Object.<anonymous> (/piston/jobs/cba5f45a-b0ae-4758-a055-d6176ed0c92d/file0.code:10:8)
    at Module._compile (node:internal/modules/cjs/loader:1254:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1308:10)
    at Module.load (node:internal/modules/cjs/loader:1117:32)
    at Module._load (node:internal/modules/cjs/loader:958:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
    at node:internal/main/run_main_module:23:47

Node.js v18.15.0
jade stone
#

./run

const foo = {
a() {
console.log("a");
return this;
},
b() {},
};
function c() {
console.log("c");
}
foo.a().b(c());
rugged berryBOT
#

Here is your js(18.15.0) output @jade stone

a
c
lucid trail
#

i should add this to my language

jade stone
lucid trail
#

Not the execution order

jade stone
#

the implicit this?

lucid trail
#

i just think the syntax of declaring foo is and yeah

jade stone
#

i could do this

#
const foo = new class {
  a() {
    console.log("a");
    return this;
  },
  b() {},
}
function c() {
  console.log("c");
}
foo.a().b(c());
jade stone
#

nop

#

i love the new class extends foo {} syntax

#

spot the bug

#

eslint didn't

#

yeah

#

leftover from a refactor

#

rather kms then use kotlin/js

#

tbh

#

that seems like something jetbrains would catch

#

i wonder if clangd catches it

#

or intellij in java mode

#

or rust analyzer

#

wow

#

gcc doesn't catch it @lyric latch

#

how

#

it sitll doesn't catch it with -Wunreachable-code

#

clang doesn't catch it either

#

@lyric latch why do i still have the bug

#

the bug i fixed

#

but my publish script didn't build the packages

#

and i forgot to build

valid jetty
#

ichigo progress update since i haven't done one in a while and i haven't really made much progress

ι–’ζ•°γ€€γƒ•γ‚£γƒƒγƒ–οΌˆζ•΄ζ•°γ€€ε€€οΌ‰γ€Ž
    γ‚‚γ—γ€€ε€€οΌšδΈ€ γ€ŽθΏ”γ™γ€€γ€‡γ€‚γ€
    ζ•΄ζ•°γ€€ε‰οΌζ•΄ζ•°γ€€γ‚€οΌδΈ€γƒΌζ•΄ζ•°γ€€δ»ŠοΌδΈ€γ€‚

    ι–“γ€€γ‚€οΌœε€€ γ€Ž
        ζ•΄ζ•°γ€€ζ¬‘οΌε‰οΌ‹δ»Šγ€‚
        ε‰οΌδ»Šγ€‚δ»ŠοΌζ¬‘γ€‚
        γƒ—γƒͺγƒ³γƒˆοΌˆγ€Œ%d: %d\nγ€γ€γ‚€οΌγ‚€οΌ‹δΈ€γ€δ»ŠοΌ‰γ€‚
    』

    θΏ”γ™γ€€δ»Šγ€‚
』

ι–’ζ•°γ€€γƒ‘γ‚€γƒ³οΌˆοΌ‰γ€Ž
    γƒ—γƒͺγƒ³γƒˆοΌˆγ€Œ\n%d\nγ€γ€γƒ•γ‚£γƒƒγƒ–οΌˆδΈ‰εοΌ‰οΌ‰γ€‚
』
#

i added if statements, while loops, conditionals, jp numerals (ie 三十一 instead of 31), and the program above prints the first 30 fibonacci numbers

dense sand
#

Brainfuck is easier than this

lucid trail
fleet cedar
#

Why is it 返す○ rather than ○を返す

dense sand
#

Add ahegao to ichigo

valid jetty
#

after i made the operator precedence parser i wanted to keep them in this form because now 十+十ー一ー十+十 is valid syntax (and prints ||19||)

valid jetty
valid jetty
valid jetty
visual shellBOT
# valid jetty lc.tr

-# <:i:1323844562875187291> Translated from πŸ‡―πŸ‡΅ Japanese to πŸ‡ΊπŸ‡Έ English β€’ Google Translate
-# <:i:1263593669215256597> labsCore will be shutting down <t:1767265200:R> β€’ Learn more
ichigo progress update since I haven't done one in a while, and I haven't really made much progress.

Function phib(integer value) '
If value: 1 'Return 0. '
Integer prev = int i = 1 - int now = 1.

Interval i < value '
Integer next = prev + now.
Prev = now. Now = next.
Print("%d: %d\n", i = i + 1, now).

Return now.

Function main() '
Print("\n%d\n", phib(30)).

fleet cedar
valid jetty
#

no the goal is to be a normal procedural language with japanese syntax "so it can be taught in schools" it's better if it's a direct translation so if someone starts using a real procedural language in english everything is formatted the same way

#

at least that's what i put on my silly document for school

#

i need to differentiate myself from other japanese languages

placid igloo
fierce pendant
nimble bone
#

twenty hours of pissbot

#

killing myself in 20 hours

opal vessel
#

SHARE IF YOU'RE EXCITED FOR
FOR PISSBOT DEATH

fierce pendant
valid jetty
#

the funniest part is that this is probably my biggest elle project

placid igloo
#

does vencord havea helpful Object.entries or no

deep mulch
#

maybe

balmy lintel
#

what kind of nonsense is this

shrewd canopy
sour wing
#

(what are you even trying to ask here? Object.entries works fine no?)

placid igloo
sour wing
#

Oh I see what you mean
you could probably write a pretty easy wrapper for that yourself, but no I don't think vencord has one

royal nymph
#
interface Duck {
    quack(): void;
}

function doQuack(duck: Duck) {
    console.log(Object.keys(duck)); // NOT Array<keyof Duck>! it contains 'age' but we got no type error anywhere
    duck.quack();
}

const fres = {
    age: 13,
    quack() {
        console.log("Freaky");
    }
};

doQuack(fres);
jade stone
#

Fres

jade stone
royal nymph
#

yeah sure

#

I had functions for that somewhere

deep mulch
#

@jade stone Fres

lavish cloud
#

Got tired of debugging rendering and not knowing where anything was supposed to be so I made a second window render as wireframe :3

nimble bone
#

const messageCounts = {
"2026": 1
};

solid gazelle
#

user states age

#

i edit my message

deep mulch
#

i have it

clear thunder
#

send

supple whale
#

pls XD

fallen nebula
#

Rate my javascript skills guys

((data, defaultKey) => {
    const isValid = key => data[key]?.invites?.length && data[key].invites.every(i => i?.code);
    const key = isValid(defaultKey) ? defaultKey : Object.keys(data).find(isValid);
    switch (key) {
        case undefined:
            console.error("Unable to find key");
            break;
        default:
            console.warn(`New key : "${key}"`);
        case defaultKey:
            copy(`Invite codes :\n${data[key].invites.filter(i => i.status === "pending").map(i => `\`${i.code}\``).join("\n")}`);
    }
})(useNuxtApp().payload.data, "$f_vtPuwxJTsXce6ICPd-5T8hVdcrwWy_PIyA9nB_4XVM")
jade stone
#

doesnt happen on firefox

solid gazelle
jade stone
#

maybe

#

ill try and remove it

#

it shows up as dropped frames in flamegraph

#

oh wow

#

its the blur

#

@solid gazelle thanks

solid gazelle
jade stone
#

firefox manages it just fine

#

dont have safari so can't test

#

?remind polyfill web popover for older apple devices

delicate groveBOT
#

Invalid time provided, try e.g. "tomorrow" or "3 days".

jade stone
#

guh

jade stone
#

guhhhhh

#

now i have to make reproduction and file crbug

jade stone
#

no

deep mulch
#

good

deep mulch
fallen nebula
#

So i have no idea what vueuse is
I know what browser APIs are
And here since a nuxt app, i use the global it expose, but that's it

ionic lake
#

look it up

#

It's a great thing

fallen nebula
#

But it's vue

#

As i said

#

I run js in the browser console

#

And thus i use the js from the browser console

#

Yes vanilla js

#

I know wild to think
But i use the language as is without any framework

ionic lake
#

k

dense sand
#

ive been recently getting a bit more interested in using AI libraries for doing some of my everyday tasks - does anyneon know which model is best and is cheap at the same time? Looking to use the API and i dont really want to get broke quickly lol

#

like im looking for a casual conversations, no image generations or agentic tasks

deep mulch
#

@frosty obsidian

dense sand
#

ive seen that gemini offers some free tiers for the API, but cant tell if its any better/worse than paying for some cheap gpt model for example

deep mulch
#

I think gemini is still behind gpt but idk exactly

dense sand
#

how are they priced in comparison to GPT though

#

does this still happen sobvelasmutny

#

yea obviously, i get that, i just want to experiment a bit with this

#

i have like 5$ budget and i doubt ill ever use like 1M tokens lmao

#

ill use the ai npm package so its model agnostic and will be researching about the models more later ig

ionic lake
jade stone
#

@eternal gust

turns out cef-rs sucks for dx

you have to wrap so much code with massive macros

eternal gust
#

sob

#

unfortunate,,,,

jade stone
#

i need a lang with a sane build system

#

????

#

nix is a packaging tool

#

not a build tool

#

@eternal gust trying dioxus

why the fuck does it link to xdotool 😭

jade stone
#

mainly used for scripting

eternal gust
#

huh

#

interesting

jade stone
#

guhh

#

why do the dioxus docs suck

#

link rot my beloved

winged mantle
#

vee betrayed me this seems to have worked for at least 7 years

#

(i was under the impression you needed var for type inference to work here)

fleet cedar
#

Wdym why would var have anything to do with type inference

#

Var is just let with worse scoping

jade stone
#

how do i do something like this in rust

#

where dispatchThread and watcherThread are members of X11ClipboardWatcher

#

i need to join the threads when the object is dropped

#

and the threads need to access data from the object

solid gazelle
#

val is string there why not

#

it knows it'll never get there if its not string

#

IG

#

it infers correctly idk why it wouldn't

winged mantle
deep mulch
#

@jade stone would write apps in nix

jade stone
#

NOP

nimble bone
#

@jade stone

#

Swift has no good charts library so i will make a separate cpp binary powered by matplot++

#

love?

jade stone
winged mantle
#

also to be sure it's not somehow limited to global scope or something

#

works with return too...

jade stone
#

@deep mulch i think i need more imports

deep mulch
#

yes

nimble bone
deep mulch
#

@jade stone support wayland

pseudo sierra
deep mulch
#

salad is satan

fallen nebula
#

Use AI to code they said
Gemini :

valid jetty
deep mulch
#

random rosie appearance

royal nymph
deep mulch
#

true

#

but yea after like 6 or 7 (67 btw) id just use *

gilded surge
fallen nebula
#

Lmao tell me this is a joke

winged mantle
placid cape
#

wtf

fierce pendant
regal shale
#

hey guys! i want to make a plugin but i dont know if its even possible. when you start a stream discord usually gets the sound from the default output sound and uses that but if you use a sound manager like voicemeeter it gets really clanky. is it possible to make a plugin that lets you change this dynamically?

stark timber
#

probably

#

rereading this there are a few issues but it's from before I got into any of this

#

it still works regardless

#

anyways does anyone know what does discord use redux for

#

I thought it's all flux

median root
#

oh yeah thank you to whoever a while ago recomended nix to me. It works SO WELL on my macbook.

#

but i wanna know

#

what do we think of void linux

supple whale
#

entire file dedicated to unfucking emscripten

#

kekw

upbeat portal
#

how make plugins

shrewd canopy
upbeat portal
#

shiii

#

never used js or ts before

#

interesting

jade stone
jade stone
#

very cursed

supple whale
#

tame

#

that entire file is just me monkeypatching emscripten's dumbfuckery

#

like the resizable memory one is so fucking dumb

#

because they could do this so easily, but its EITHER growable memory, or not

#

like.... why not conditional support?

#

shit like this is all over the place in the emsc compiler, its nuts

#

fucking random ass floating point precision errors

#

i keep forgetting about this shit when writing native code

#

its great how JS just doesnt care and does it for you

jade stone
#

i barely deal with floats so i dont have much experience with them

jade stone
#

99% of all code i write just uses ints

supple whale
#

unfortunately in gpu land its al floats

jade stone
#

guh

#

i hate rust lambdas so much

#

c++ did it the right way

supple whale
#

i love the worker names tho

jade stone
#

i like the explicit capture group

supple whale
#

cuz

#

// emscripten doesnt support conditional loading of wasm modules out of the box
// so we hack around it by passing the url and simd support via the worker name

#

XD

#

it sucks i have no1 to nerd out about this with

#

because man this renderer is so fucking sick

jade stone
#

graphics code scares me

supple whale
#

i mean fair

#

but here it not much

#

its just black/white masks, with colors bound to them

#

so imagine each color has its own white/black mask photoshop style

#

and you pass 300 of them to webgpu, and color the black/white with the color, and render them on top of eachother

#

that's all this is

#

but its cool because its fast, cuz take 300 of those kind of masks at 1080p, at 24-30fps

#

and all of a sudden u have a few gigs of data per second XD

jade stone
#

neat

supple whale
#

its very neat

jade stone
#

i'm enjoying x11 apis with no docs blobcatcozy

supple whale
#

webGPU is very powerful, even tho i have 0 clue how to use it

#

like 80% of the shader code was written by AI

#

XD

#

like i get what it does, but how it arrives at what it does it is beyond me, trying to figure it out from scratch would have been hell

#

but i can read and understand it

jade stone
#

vai rust format specifier for binary

elder yarrowBOT
# jade stone vai rust format specifier for binary

The Rust format specifier for binary output is :b.

For example:

fn main() {
    println!("Base 2 (binary): {:b}", 69420); // Output: Base 2 (binary): 10000111100101100
}

You can also add a 0b prefix by using the alternate flag :#b.
To pad with leading zeros to a specific width, you can use {:0widthb}, where width is the desired total width.

-# Response generated by gemini-2.5-flash. AI may be incorrect or misleading.

jade stone
#

insane sample number from ai

#

vai what is the equivalent of std::shared_mutex in rust

elder yarrowBOT
# jade stone vai what is the equivalent of std::shared_mutex in rust

The Rust equivalent of C++'s std::shared_mutex is std::sync::RwLock.

RwLock (Reader-Writer Lock) allows multiple readers to access shared data concurrently, or a single writer to have exclusive access. This is similar to how std::shared_mutex works, where multiple threads can acquire a shared lock for reading, but only one thread can acquire an exclusive lock for writing.

For asynchronous contexts, the tokio::sync::RwLock can be used. There's also a shared-mutex crate that provides an RwLock compatible with Condvar (condition variables), which std::sync::RwLock does not directly support on Unix systems.The Rust equivalent of std::shared_mutex in C++ is std::sync::RwLock.

std::sync::RwLock is a synchronization primitive that allows multiple readers to access shared data concurrently, or a single writer to have exclusive access.

For asynchronous programming, tokio::sync::RwLock provides similar functionality. Additionally, the shared-mutex crate offers an RwLock that can be used with Condvar (condition variables).

-# Response generated by gemini-2.5-flash. AI may be incorrect or misleading.

jade stone
#

insane naming

fleet cedar
#

Yeah shared_mutex is a oxymoron

jade stone
#

getting send/sync errors with rwlock

dense sand
#

vai does MCP mean Mod Coder Pack or Model Context Protocol

elder yarrowBOT
# dense sand vai does MCP mean Mod Coder Pack or Model Context Protocol

"MCP" can refer to two different things, depending on the context:

  • Mod Coder Pack: This is a toolkit used for creating mods for the game Minecraft.
  • Model Context Protocol: This is a newer, open-source standard introduced by Anthropic in November 2024, designed to connect AI applications, like large language models, to external data sources and tools.

-# Response generated by gemini-2.5-flash. AI may be incorrect or misleading.

dense sand
#

its not that stupid

jade stone
#

rust evil

fleet cedar
deep mulch
#

@sadan.zip

#

@sadan.zip

#

@sadan.zip

#

@jade stone

jade stone
#

you

nimble bone
#

@jade stone

#

SaDMs;)

#

Sadans ;)

deep mulch
#

@jade stone satan

dense sand
fleet cedar
#

They rebranded at some point, yes

#

Probably trademark reasons or something

fierce pendant
#

i love making minecraft mods with the model context protocol

royal nymph
#

logpoints are such a game changer

tired vigil
#

message logger if it was good

shrewd canopy
solid gazelle
#

well the false isn't needed there since console.log returns falsy xd

ionic lake
#

mwassge lagger

fierce pendant
jade stone
#

@supple whale on the plus side, very fast triage, on the down side, the linked bug has been open for 3 years

#

I should probably fix my chromium install not using hardware acceleration

supple whale
#

oh

#

you're fucked either way

#

no hw accell has bugs

#

hw accell has bugs

#

i have this cool one 1 sec

#

only on arm32 bit

#

these are so old

#

still unfixed

#

i stopped bothering to report most of this shit

#

and i just run my own builds that fix these problems

shrewd canopy
jade stone
#

You can't side load extensions

#

No pwa support

#

It doesn't support CDP which I use often for node.js and CEF

#

Last time I checked it's also missing tab groups, vertical tabs, custom search prefixes, and a native global menu (I think that's an upstream issue in gtk tho)

jade stone
tired vigil
#

I could swear tab groups and search prefixes were in firefox, huh

jade stone
#

I haven't used it in years

#

So I could be mistaken

jade stone
ornate quiver
#

tab groups got added last year thankfully

jade stone
#

You needed to make an extension to add your own search. Prefixes whereas in Chrome you can just add them directly

tired vigil
#

I think the "add" button was always just hidden behind a flag 😭

#

zen browser has it on by default it seems

#

but ngl it's so goated that firefox lets you modify everything in one place
I remember setting up crazy precise scroll speeds, and to this day I still feel like scrolling in chrome is super slow

supple whale
jade stone
#

Might have to give Firefox a try

supple whale
#

and have done 0 work on the actual app

#

i prefer to not waste my life on useless shit thank you

jade stone
#

I'm not going to go fiddling through the flags just for something that brave/ Chrome has ootb

tired vigil
#

missing this option like a mf

jade stone
royal nymph
royal nymph
#

no seems like u do

jade stone
#

mmm

#

some weird chromium thing ig

royal nymph
#

you can test if it's working by doing something like drawing a circle on a canvas, once with willReadFrequently: true (force software), then without it

if the resulting pixel data is the same it's not using hwa

jade stone
#

is there a site that tells you that

#

oh wait

#

my example code for hte bug

royal nymph
#

ask chatgpt to give u a html file with that

jade stone
#

uses a canvas

royal nymph
#

yeah it works

jade stone
royal nymph
#

so yeah its hardware accelerated lol

royal nymph
# jade stone

if u open it with chromium --disable-gpu hwa.html it will say false

jade stone
#

?remind tomorrow comment on report

delicate groveBOT
#

Alright @jade stone, in 1 day: comment on report

royal nymph
# jade stone

but this is only for canvas, also it probably doesnt apply to webgl canvas

royal nymph
#

btw maybe try enabling vulkan