#🪅-progaming

1 messages · Page 38 of 1

valid jetty
#

no lol

#

supports emojis in strings tho

dense sand
#

tragedy

valid jetty
#

google translate spits back logical words but i dont trust it for one bit

#

its even funnier because i just cannot write anything in my terminal using my ime

#

i have to write it elsewhere and copy paste into the terminal input

ornate quiver
#

bleh

timid kiln
#

is there a way to see each plugin's settings easily

#

like in JSON form

#

preferablly with default values if applicable

#

and if the setting is optional or not^

#

Currently the closest I've gotten is pnpm generatePluginJson but that only gives me plugins

fleet cedar
#

Just iterate each plugin

timid kiln
fleet cedar
#

At runtime

timid kiln
timid kiln
fleet cedar
#

For what

timid kiln
# fleet cedar For what

Ok, this will sound stupid but this is how I like to do stuff.

I wrote a script to clone and build vencord from source because sometimes I like to edit some plugins. I have a vencord settings backup in JSON in a folder which is like the storage basically. I wrote a script that gets the plugins with generatePluginJson and makes sure the stored backup doesn't have any old plugins and adds the new plugins. I want to also add that for plugin settings but I don't know an easy way to do it

#

Also, even if I did it during runtime my issue still remains

#

because I do this Vencord.Settings.plugins.AlwaysTrust.hi = true and if I export the settings

#

it'll have "hi": true in the json backup

#

So the only way I can validate what settings exist is if I reset all settings and then checked

dense sand
#

does the default value get set only on mount? How can i make the text change on currentSlide change?

#

oh well i just added it to value={...}

#

seems to work enough

fleet cedar
#

Makes sense that the default value only applies when first created

hoary sluice
#

@valid jetty can you write a program with n^n complexity

valid jetty
#

i have no idea how lol

signal oakBOT
hoary sluice
valid jetty
#

@hoary sluice LMAO

#

i wrote my own utf8 lib because it simply does not exist yet

fn rune::encode(rune *self) -> string {
    let result = "";
    let code_point = self.inner;

    if code_point <= 0x7F {
        result.push((char)code_point);
    } else { if code_point <= 0x7FF {
        result.push(0xC0 | (code_point >> 6) & 0x1F);
        result.push(0x80 | (code_point & 0x3F));
    } else { if code_point <= 0xFFFF {
        result.push(0xE0 | (code_point >> 12) & 0x0F);
        result.push(0x80 | (code_point >> 6) & 0x3F);
        result.push(0x80 | (code_point & 0x3F));
    } else { if code_point <= 0x10FFFF {
        result.push(0xF0 | ((code_point >> 18) & 0x07));
        result.push(0x80 | ((code_point >> 12) & 0x3F));
        result.push(0x80 | ((code_point >> 6) & 0x3F));
        result.push(0x80 | (code_point & 0x3F));
    }}}}

    return result;
}
#

rust chars are also wide while theyre 1 byte in elle

hoary sluice
#

gn

valid jetty
#

i think im taking this too far

#
関数 足す(整数 x、整数 y)『
    返す x+y;
』

関数 メイン()『
    整数 結果 = 足す(1、2);
    プリント(「こんにちは、世界!」);
    プリント(結果);
』
valid jetty
valid jetty
#

@placid cape 😭

#

written in elle

pearl stagBOT
valid jetty
#

lmao

#

syntax is slaying here actually whaaa

use std/prelude;
use lexer;

fn main(string[] args) {
    program := args.remove(0);
    $assert(args.len() == 1, "Usage: {} file.igo\n".format(program));

    lexer := Lexer::new(args[0]);
    tokens := [(string, string);];

    while current := lexer.next_token() {
        tokens.push(current);
        $println(*current);
    }
}
placid cape
frosty obsidian
#

(just reposting in a channel that won't get flooded)

viscid grove
#

they both look nice, but i think cards looks a little nicer

#

but kinda depends what it's for

frosty obsidian
#

markdown alerts

viscid grove
#

are you making a markdown renderer?

frosty obsidian
#

im styling markdown

viscid grove
#

ah

frosty obsidian
#

this is for a github client

eternal wigeon
#

hello guys

#

do you think this commit msg is too verbose, like should i not mention the error in the commit msg? only keep bump version

#

idk i never really made a public pr

frosty obsidian
#

being verbose in commit descriptions is good

ivory heath
#

sodapeek webp

royal nymph
#

if it's too long it yells at u

eternal wigeon
royal nymph
#

brazilian spotted....

eternal wigeon
#

yes thanks

spark tiger
#

and not in the commits

#

bc anyways it usually ends up being a one commit in the repo if they squash merge

eternal wigeon
#

Omg that's so cute

valid jetty
#

@royal nymph when are you making a german language

#
関数 足す(整数 x、整数 y)『
    返す x+y;
』

関数 同一(整数 x)『
    返す x;
』

関数 メイン()『
    整数 結果 = 足す(13、26);
    整数 あああ = 同一(39);
    プリント(「こんにちは、世界!」);
    プリント(結果、あああ);
』
royal nymph
#

someone already made

valid jetty
#

wtf

royal nymph
dawn ledge
#

how would you represent upper plane characters in a byte

dense sand
torn seal
valid jetty
#

elle maintains C abi compatibility so strings are cstrings and chars are ascii bytes

dawn ledge
#

there's a reason why rust chars a 32bit
as you go to higher planes or blocks the byte size of the utf8 encoded character increases

royal nymph
#

just use a better language that only has 1 byte letters

dawn ledge
#

overthrow unicode

valid jetty
#

i'm working with unicode in my language made in elle

#

rust chars are also not always 32 bit they're code points

#

they vary in length based on the first byte

dawn ledge
#

stored as 32 tho

pearl stagBOT
valid jetty
fleet cedar
valid jetty
#

that is exactly what i'm taking advantage of

pearl stagBOT
fleet cedar
#

Comments use ※, yes?

fallow jasper
valid jetty
fleet cedar
#

Also suggestion: 九十八 is a i32, 玖拾捌 is a i64

valid jetty
#

LMAOOO

ornate quiver
# valid jetty <@295190422244950017> sanity check on the grammar

ElleとQBEを用いておもちゃのコンパイル型プログラミング言語
What is the purpose of 型?
I could see it being written this way:
ElleとQBEを用いているおもちゃのプログラミング言語

  • これは学校のプロジェクトです。
    or just
  • 学校のプロジェクトです。

すべて詳細に記録されます
Id use 全部 instead of すべて here
i dont know causative form so idk about the second half of the sentence

  • 全て日本語で書いていますのは面白いからです。
  • すべて日本語で書くのは面白いからです。
    nominalizing verbs with の・こと only works with plain form

some things you might want to know:

  • a lotta natives shorten 〜ている to 〜てる
  • according to jisho 全て is written usually in kana
    and according to my sensei apparently it's more formal/fancy than 全部 while having almost the same meaning

this is also just with a bit of research and my limited knowledge :bleh:

visual shellBOT
# calm ruin lc.gemini whats wrong with rusher
whats wrong with rusher

分析と改善点

ご指摘ありがとうございます。 丁寧な分析と具体的な改善点のご提案、大変助かります。一つずつ確認し、より良い表現へと修正していきましょう。

1. 「ElleとQBEを用いておもちゃのコンパイル型プログラミング言語」

  • 問題点:
    • 「ElleとQBEを用いるおもちゃのプログラミング言語」の方が自然な日本語です。
    • 「コンパイル型」という言葉は、文脈によっては専門的で分かりにくい可能性があります。
  • 改善点:
    • ご提案の通り、「ElleとQBEを用いるおもちゃのプログラミング言語」と修正します。
    • 文脈に合わせて、「コンパイル型」の説明を加えるか、より一般的な表現に置き換えることも検討できます。

2. 「これは学校のプロジェクトです。」

  • 問題点:
    • 両方の表現とも正しい日本語です。
  • 改善点:
    • 文脈や強調したい点によって使い分けると良いでしょう。
    • 例えば、プロジェクトの重要性を強調したい場合は、「これは学校のプロジェクトです。」の方が適しています。

3. 「すべて詳細に記録されます」

  • 問題点:
    • 「全部」も「すべて」も正しい日本語ですが、「全部」の方が口語的でカジュアルな印象です。
    • 「詳細に記録されます」の「されます」は、受動態で少し硬い印象を与えるかもしれません。
  • 改善点:
    • 文脈に合わせて使い分けると良いでしょう。
    • 例えば、より丁寧な表現にしたい場合は、「すべて詳細に記録いたします。」と「いたします」を用いることもできます。

4. 「全て日本語で書いていますのは面白いからです。」

  • 問題点:
    • ご指摘の通り、「すべて日本語で書くのは面白いからです。」がより自然な日本語です。
    • 「のは」は、名詞化の助詞ですが、動詞の原形にしか付きません。
  • 改善点:
    • ご提案の通り、「すべて日本語で書くのは面白いからです。」と修正します。

5. その他

  • 〜ているの省略:
    • 口語では「〜てる」と省略されることが多いのは事実です。しかし、書き言葉では、特に丁寧な表現を求められる場合や、相手に正確に意味を伝えたい場合は、省略せずに「〜ている」と書く方が望ましいです。
  • 全ての表記:
    • 「全て」は、漢字で書く場合とひらがなで書く場合がありますが、どちらが正しいという決まりはありません。文脈や個人の好みによって使い分けることができます。

まとめ

ご指摘いただいた内容を参考に、より自然で分かりやすい日本語に修正しました。

修正後の文例:

ElleとQBEを用いるおもちゃのプログラミング言語です。これは学校のプロジェクトで、全て日本語で記述しています。日本語でプログラミングをするのはとても面白いからです。

その他

  • 「型」の目的については、文脈によって様々な答えが考えられます。例えば、プログラミング言語においては、データの型を指定することで、プログラムの安全性や効率性を高めることができます。
  • 「causative form」については、文脈や状況に応じて適切な表現を選ぶ必要があります。

ご不明な点や、さらに詳しい説明をご希望の場合は、お気軽にお尋ねください。

追加で何か知りたいことはありますか? 例えば、以下の点について詳しく説明できます。

  • ElleやQBEといったプログラミング言語についての情報
  • コンパイル型プログラミング言語の特徴
  • 日本語でプログラミングをするメリット・デメリット
  • 学校のプロジェクトでどのようなことに注意すべきか

ご要望に応じて、様々な角度から情報提供させていただきます。

calm ruin
#

SPEAK ENGLISH

fleet cedar
#

No don't

ornate quiver
#

lmaoo

#

watch the AI just destroy my corrections probably

#

also @valid jetty don't use Google translate, DeepL is much more reliable

calm ruin
#

use gpt

#

LLMs are pretty good at translation

#

why did you husk

#

all they do is generate text

viscid grove
valid jetty
valid jetty
valid jetty
#

i was trying to be explicit and write compiler type programming language

#

answering for why 型

ornate quiver
#

ah

#

maybe the equivalent of "compiled programming lang" would've been better

valid jetty
#

true

fleet cedar
#

Which according to wikipedia is コンパイル型言語

ornate quiver
#

ah very close to your original lol

valid jetty
#

oh wow yea

fleet cedar
#

The language selector on wikipedia is very useful for translating specific terms/concepts

viscid grove
fleet cedar
viscid grove
#

oh you just mean using a different language on wikipedia

#

i thought you meant like you input a phrase in english and then if it has that phrase, it'll translate it

valid jetty
fleet cedar
#

They recommended 全部 though, not 全て?

valid jetty
#

yeah sowee

#

i'm assuming you meant すべて is more formal than 全部 though which is why you recommended it? trying to understand what you meant

#

nvm i see

#

i'm actually silly

#

😭

valid jetty
#

ok how is this

ElleとQBEを用いておもちゃのコンパイル型プログラミング言語

学校のプロジェクトですから全部詳細に記録されます。全部日本語で書くのは面白いからです。

これは私が作った別の言語であるElleプログラミング言語を使用してます。

dawn ledge
#

localized programming languages scare me

#

also makes me wonder what went down in history for us to just agree that languages using english based grammar/syntax are sane

valid jetty
valid jetty
#

writing in pure jp is annoying

dawn ledge
#

i should learn jp at some point

valid jetty
#

english has no diacritics which makes it very easy to form words with a small alphabet

valid jetty
#

i hope you know 面白い lol

#

its one of the first kanji i ever learnt other than 私 and 一ニ三四五六七八九十

#

ive decided that いちご will not have any decimals because its too much effort to program them
but that means silly

関数 足す(整数 x、整数 y)『
    返す x+y。
』

関数 同一(整数 x)『
    返す x。
』

関数 メイン()『
    整数 結果 = 足す(13、26)。
    整数 あああ = 同一(39)。
    プリント(「こんにちは、世界!」)。
    プリント(結果、あああ)。
』
#

it lexes

fleet cedar
#

Why is it 返す x and not xを返す

valid jetty
#

because my aim isnt to make gramatically correct sentences

fleet cedar
#

:(

valid jetty
#

and also lexing that would be hard

#

they would all be 1 big identifier i think

#

jp having no spaces inherently makes it very hard to seperate tokens

fleet cedar
#

There are libraries for that

#

(Heuristically)

dawn ledge
#

i love (hate) langauges that do not have separators, gotta use some random ml model by google to do line breaking for hem

valid jetty
#

thats why i count ” ” as whitespace

#
fn Lexer::skip_whitespace(Lexer *self) {
    while !self.is_eof() && (char::is_whitespace(self.current_char().inner)))
        || self.current_char().encode() == " " {
        self.advance();
    }
}
valid jetty
#

it would be really funny i think

#

to write gramatically correct sentences but not even in english, in japanese

#

my teachers are gonna take 1 look at this and give me a 0

fleet cedar
#

I did get a "looks good but please write in english" on one assignment

#

I only wrote the example program in japanese though, the actual implementation was in english

#

I did make sure to follow the designated output format - I even decompiled the check program - how can they complain?

valid jetty
#

the project is supposed to have at least 2-4k lines of code and im meant to reference where i used the concept lol i am so done for

pearl stagBOT
valid jetty
#

like you can understand it

#

maybe i should make a rune *[] method to turn a bunch of runes into a cstring

#

like just

fn Array::utf8_encode(rune *[] self) {
    return self.map<string>(rune::encode).join("");
}
valid jetty
#

like just the function names are romaji or?

fleet cedar
#

Just the printed strings

valid jetty
#

oh

fleet cedar
#

Pretty sure it was either haskell or java btw

valid jetty
#

lmfao

#

oh god i should probably make it so that you cant cant a pointer to any other pointer right

dawn ledge
#

mem::transmute

fleet cedar
#

Eh, who cares? All other languages with pointers allow that

dawn ledge
#

🥰

valid jetty
valid jetty
#

@ornate quiver lmao

#

small and big are so simple

#

then you have standard

#

😭

ornate quiver
valid jetty
shy mauve
#

Xiao

#

Da

#

:}

onyx jacinth
#

hey ho, im looking for a plugin that can hide that im sharing my screen in my status. I dont want others know that im sharing my screen right now.

If a plugin like this doesnt exist, does someone know if there are techincal limitations that would hinder the developement of such plugin ?

valid jetty
#

calc is short for calculator btw

dense sand
#

Does someone know how pmms/vmms work together with 4 level paging

dense sand
#

No

hoary sluice
jade stone
#

HORROR OPERATOR OVERLOADING

ornate quiver
#

real

#

kotlin has operator overloading too but they're intuitive at least unlike that
like listOf(1,2) + 3

jade stone
frosty obsidian
# frosty obsidian
poll_question_text

Which alert style

victor_answer_votes

11

total_votes

12

victor_answer_id

1

victor_answer_text

Cards

#

interesting

jade stone
frosty obsidian
#

it seems most people prefer the cards

jade stone
#

most people are wrong blobcatcozy

frosty obsidian
#

regardless, thats the design ill go forward with

ornate quiver
viscid grove
jade stone
jade stone
hoary sluice
#

@valid jetty @deep mulch good morning !!!!!!! 😄 😄

alpine lily
lusty rock
dense sand
#

i love supabase

dense sand
#

Any tips on how I could sanitize css

#

Like pure .css file

royal nymph
#

a strict csp should do the trick

dense sand
#

In my app i mean

royal nymph
#
  1. don't
  2. you need a strict csp that blocks external resources
dawn ledge
#

do you need any sanitization or security if the user uses the css locally :^)

royal nymph
#

if they do use Internet Explorer than that is possible

royal nymph
#

the biggest risk from css is ip logging, tracking and keylogging

all of which can be done by fetching external links

if you block all external links with csp this is not a risk

dawn ledge
dawn ledge
royal nymph
#

so they went oh yeah this is gonna be a banger idea

#
body {
    width: expression(document.body.clientWidth > 1100) ? "1100px" : "auto";
}
royal nymph
#

back then stuff like that didn't exist so you had to do so much stuff with js

dense sand
#

I can just regex cut it out, no?

royal nymph
dense sand
#

Lol

#

So remote resource fetching is biggest problem huh

royal nymph
#

just use csp to only allow fetching from domains you use

#

you should do that either way

valid jetty
#

@hoary sluice apparently the reason dp is called dp is because the guy who invented it though it would be funny

#

and because he wanted to make it look to his boss like he was doing something advanced

royal nymph
#

but unless it's a small hobby site supporting custom css is bad anyway cause people can always do stuff like make the ui unusable

#

like * { display: none }

hoary sluice
hoary sluice
#

u cant use foo in a whitepaper algo impl

dense sand
valid jetty
royal nymph
#

it's impossible to make it so they can't break the page

dense sand
#

Lol

valid jetty
#

@ornate quiver they said they’re gonna give me a 0 if i write the docs for いちご in jp

#

😭

royal nymph
#
.random-element {
   width: 10000px;
}
valid jetty
#

they’re just haters i’ll do it anyway

hoary sluice
royal nymph
#

already broke the age

royal nymph
valid jetty
#

my teachers must hate me sm bc of all the jp i’m bringing into their clean cozy christian environment

dense sand
dense sand
dawn ledge
#

jared

#

bro looks so lifeless

valid jetty
#

they all do

#

reading from a teleprompter idk

dawn ledge
#

who even watches these tbh

#

idk why stuff like nextjs does it

#

dude

#

just drop me a blog post

#

with bullet points

winged mantle
#

🔥

dense sand
#

Node

#

Denode

serene elk
#

different purpose but yeah

royal nymph
#

why is he a robot

native spruce
#

@woven mesa

#

cant finish

woven mesa
#

ping pong

woven mesa
native spruce
woven mesa
#

very much

native spruce
#

why lol

woven mesa
#

problems with permissions bc xcode needs to have the perms rather than the app you're building

#

and doesnt always work

#

idk i havent looked into it

native spruce
#

finally

woven mesa
#

:3

#

do you love

#

i think default keybind is cmd alt v

native spruce
woven mesa
#

huh

#

will profile

#

@native spruce ClipperApp.swift line 88 ish

#

remove dispatchqueue.main.asyncafter

native spruce
woven mesa
#

i just used appkit it makes sense to me

native spruce
#

I can help with that

woven mesa
#

its ok if it works dont fix it

#

true story

#

also this is easier for the logic of showing perms setup window before onboarding view

native spruce
#

whats skylight.framework

woven mesa
#

handles something to do with uhh

#

media i think?

#

i cant find anything on google

native spruce
#

this is very bad

woven mesa
#

apparently its not on ios

#

macos only

#

what runs at initialization

native spruce
#

it only happens when I summon the panel for the first time

woven mesa
#

oh yeah that makes sense actually

native spruce
#

every launch but first time u open the sheet during that launch

woven mesa
#

any images visible are resized and then sent back to the view for display

native spruce
#

it shouldnt be that intensive though

woven mesa
#

and then are kept in memory so never need resizing

native spruce
#

last commit was fine

woven mesa
#

hm

#

ill look at commits

native spruce
#

also this thing keeps being called over and over

#

wrong picture

woven mesa
#

thats looks like part of swift runtime

native spruce
#

ignore it then I guess

#

the profiler doesnt give me much informatino on whats going on

#

and it crashed

woven mesa
#

try doing a global replace for Task.detached to Task

#

then profile again

#

but then its all on mainthread

native spruce
#

I found the issue

woven mesa
#

whats the issue

#

is it the while true {}

native spruce
#

this probably happened last commit actually

#

but im not sure

#

@woven mesa if possible we shouldn't try to display the entirety of code or text

#

this file is 31kb in size

woven mesa
#

will push in next commit

#

@native spruce btw i just trimmed the attributedstring down to 1024 chars

#

here code if you want to test early

native spruce
#

we cant like scroll in the card

woven mesa
native spruce
#

yeah :(

woven mesa
#

and idk if using coretext is a good idea

#

sounds like pain

native spruce
#

whats coretext

woven mesa
#

the thing that handles all of text rendering in all of apple's operating systems

native spruce
#

I see

woven mesa
#

it can give info on text rendering bounding boxes

native spruce
#

im thinking of doing some swiftdata optimizations

woven mesa
#

good idea

#

do not be like me and use negative padding

#

very cursed

royal nymph
woven mesa
#

idk what the joke even is so

supple whale
#

any chance some1 knows if its possible to implement your own module imports with dynamic type infering in TS?
trying to do

const typed = await myCustomImport('./file.ts')
royal nymph
#

but also this seems like XY problem, why do you even need this

lavish cloak
#

Tfw the 5090 leak from a few months ago was actually true

serene elk
#

if I were to guess, it doesn't

royal nymph
#

nah it doesnt lmao

serene elk
#

lazy to try rn tho

serene elk
royal nymph
#

typeof import only works with static string

supple whale
# royal nymph but also this seems like XY problem, why do you even need this

i'm making a multi-threading library, and i want absolutely minimal boilerplate to get it to work:
main

import type extensionLoader from './worker'
import { wrap } from 'abslink/worker'

const Loader = wrap<typeof extensionLoader>('./worker.ts')
const life = await Loader.stuff()

worker

import { expose } from 'abslink/worker'

export default expose({
  stuff() {
    return 42
  }
})
#

this is the least i was able to get it to

#

the export default isnt required, but its the easiest way to expose the data without duplicating or explicit declarations

#

the problem with threading in all js envs, is that it needs to be done in a separate file, it makes me fume

#

you cant just go "this function is threaded, do make its memory operations unsafe"

#

i mean IIRC there was a proposal for this, but I can't find it :/

#

anyways, this is also meant to support IPC, so for example you could use websocket as the message channel, and run the worker code on some server, or even in a a different language if you re-implement the library

#

which isnt difficult at all

hoary sluice
valid jetty
#

not really

supple whale
#

its fairly normal do to if you dont want to declare your own types, only have them inferred

supple whale
#

i flat out do not see a diff way of doing this

royal nymph
pearl stagBOT
supple whale
#

i want it to work over ANY message channel, even HTTP requests, UDP packets etc

#

but yeah i assumed i arrived at the conclusion

#

i dont think it can get much better without a TS plugin

#

which means a serialization protocol for object accesses

#

TLDR what comlink did

royal nymph
#

the second best thing you could do is codegen

supple whale
#

kinda like what transferables do for W3C MessageChannel

royal nymph
#

yeah but that means they are serialisable

#

so you could also just use json

supple whale
#

I dont want the developer to ever have to worry about that

#

they expose the object

#

and they call it

royal nymph
supple whale
#

no funky states etc

#

yeah i'm aware of that being an option

#

but i dont like it, because its too much work and too many potential compatibility problems

royal nymph
#

oh yeah i absolutely agree

#

I hate that too and you have to restart your IDE for ts to realise those files changed

supple whale
#

well you dont, using a ts plugin works

#

thats what gql.tada does

#

and it works REALLY good

#

but i fucking shiver when i look at the implementation

#

its an ungodly amt of effort

royal nymph
#

you need to restart the tsserver but I just restart my ide cause it's faster

#

unless that plugin does some horror stuff

supple whale
#

it does horror stuff

#

its mad

#

i'll stick to what i got then

#

doesnt seem like it can be improved much at low cost

royal nymph
#

yeah that's already good

supple whale
#

yeah its x1000 better than what we currently have in js

#

having to manually do postMessage or invoke suuuucks

supple whale
#

oh yeah the only thing i didnt get working yet is remote constructors

#

aka

const x = await new wrap<typeof remoteConstructor>('./worker.ts')(options)
#

it works, but calling the constructed class's methods will interfere with the exposed constuctor

#

and will call both the class, and the constructor

#

oopsie

#

but i'm reaching the point where typescript is kinda shitting itself

#

it doesnt like automatically promisified class methods

#

cuz doing await exposedObject.property.nested works, but TS thinks all the steps are async, rather than just the last one

#

and it expects to await each key, even tho u dont need to

#

:/

royal nymph
#

lol this is way too specific to be able to help without seeing the actual code

#

that sounds really cursed

supple whale
#

just.... showing

#

or i guess talkin about it

#

i know what the issue it, it calls both exposed properities as its a single channel

#

not sure how i'll fix it yet

#

for the typescript thing....

#

yeah idk i gave up on typing it like that

pearl stagBOT
pearl stagBOT
supple whale
#

I expected that to work...

#

it didnt....

#

because its just an object that becomes async

#

since its threaded

#

so sync properties become async

#

and async stay async

royal nymph
#

wait so foo.bar is a promise but foo.bar.baz works and also is a promise?

supple whale
#

yes

royal nymph
#

try ```ts
type RemoteProperty<T> = ... : Promisify<T> & { [key in T]: RemoteProperty<T[key]>; }

supple whale
#

you'd do await foo.bar or await foo.bar.baz

#

and both would work

#

but TS expects

#

await (await (await foo).bar).baz

#

idfk why

royal nymph
supple whale
#

arent you're doing the inverse

#

?

#

you're also doing await (await (await foo).bar).baz

#

i need await foo.bar.baz

#

this is assuming

const foo = { bar: { baz: 42 }}
royal nymph
supple whale
#

oh i see

#

im dumb

#

sry i'll need to check later

#

on wrong pc as of now

#

but it seems promising

#

thanks for helping i'll check soon-ish

royal nymph
#

you're currently just marking it as Promise<T> but you need Promise<T> & Record<keyof T, RemoteProperty> so you can treat it like a normal object

#

also damn this is some cursed stuff 😭 proxy moment

#

how does that even work how does your proxy know what the last property access is (so it can make the ipc call)

#

do you just resolve it on the next tick or something

supple whale
#

so you get an array of parmeters

#

i just serialize the array

#

then do path.reduce((obj, prop) => obj[prop], (obj as any))

#

not my code tho, this is stolen from google

#

just google's ver was HARDCODED to work only on W3C MessageChannels

#

which is useless

supple whale
#

but the end result

#

is fucking AMAZING

#

main

import type extensionLoader from './worker'
import { wrap } from 'abslink/worker'

const Loader = wrap<typeof extensionLoader>(worker)
const life = await Loader.stuff()

worker

import { expose } from 'abslink/worker'

export default expose({
  async stuff() {
    return 42
  }
})
#

you can't tell me this isnt sex

royal nymph
#

and you have no good way to know which the last property access in the chain is

#

the only way i can think of is using something like setImmediate to fire in a future tick (all synchronous code has been executed here so you know the property access chain has ended)

supple whale
#

ah yeah

#

it just creates proxies recursively

#

if the prop isnt an await it just keeps returning proxies recursively, creating a path from it

#

since the end result is ALWAYS a promise/await, you just wait for said await to occur

#

and awaiting an object always calls its .then, which is how u can implement promises yourself in js

#

its cursed

royal nymph
#

oh yeah right

#

you can abuse .then

#

funny

supple whale
#

cursed right?

#

but fuck does it work well

#

XD

royal nymph
#

.then is less cursed than the solution i thought of

supple whale
#

aka deferring to next tick?

royal nymph
#

yea

supple whale
#

hoesntly, its probably faster than this

#

XD

royal nymph
#

the next tick trick is how vencord lazy webpack allows you to destructure

supple whale
#

fortunately the props are cached, so this recursive bs only happens once on initial call

royal nymph
#

js is wonderfully cursed

supple whale
#

i love it

valid jetty
#

wow insane

supple whale
#

i remember there being some proposal for

unsafe {
  
}
#

or smth like that

#

that allowed you to do inline multi-threading

#

but i CANNOT find it for the love of my life

#

that

#

would

#

be amazing

supple whale
#

yeah thats good no?

royal nymph
supple whale
#

not really no, it wont work with imports

#

i know what you're thinking of

royal nymph
#

yeah you wouldn't be able to use outside variables

pearl stagBOT
#

createWritable.js: Lines 91-135

  onmessage = async evt => {
    const port = evt.ports[0]
    const cmd = evt.data
    switch (cmd.type) {
      case 'open': {
        const file = cmd.name

        let dir = await navigator.storage.getDirectory()

        for (const folder of cmd.path) {
          dir = await dir.getDirectoryHandle(folder)
        }

        fileHandle = await dir.getFileHandle(file)
        // @ts-ignore
        handle = await fileHandle.createSyncAccessHandle()
        break
      }
      case 'write':
        handle.write(cmd.data, { at: cmd.position })
        handle.flush()
        break
      case 'truncate':
        handle.truncate(cmd.size)
        break
      case 'abort':
      case 'close':
        handle.close()
        break
    }

    port.postMessage(0)
  }
}

globalThis.FileSystemFileHandle.prototype.createWritable = async function (options) {
  // Safari only support writing data in a worker with sync access handle.
  if (!workerUrl) {
    const stringCode = `(${code.toString()})()`
    const blob = new Blob([stringCode], {
      type: 'text/javascript'
    })
    workerUrl = URL.createObjectURL(blob)
  }
  const worker = new Worker(workerUrl, { type: 'module' })
supple whale
#

you're thinking of that

#

its wonderfully cursed

royal nymph
supple whale
#

eh oops wrong copy

pearl stagBOT
#

createWritable.js: Lines 91-135

  onmessage = async evt => {
    const port = evt.ports[0]
    const cmd = evt.data
    switch (cmd.type) {
      case 'open': {
        const file = cmd.name

        let dir = await navigator.storage.getDirectory()

        for (const folder of cmd.path) {
          dir = await dir.getDirectoryHandle(folder)
        }

        fileHandle = await dir.getFileHandle(file)
        // @ts-ignore
        handle = await fileHandle.createSyncAccessHandle()
        break
      }
      case 'write':
        handle.write(cmd.data, { at: cmd.position })
        handle.flush()
        break
      case 'truncate':
        handle.truncate(cmd.size)
        break
      case 'abort':
      case 'close':
        handle.close()
        break
    }

    port.postMessage(0)
  }
}

globalThis.FileSystemFileHandle.prototype.createWritable = async function (options) {
  // Safari only support writing data in a worker with sync access handle.
  if (!workerUrl) {
    const stringCode = `(${code.toString()})()`
    const blob = new Blob([stringCode], {
      type: 'text/javascript'
    })
    workerUrl = URL.createObjectURL(blob)
  }
  const worker = new Worker(workerUrl, { type: 'module' })
supple whale
#

CODE SPAM

#

WTF

#

delete them 2

#

soz

pearl stagBOT
# supple whale https://github.com/ThaUnknown/fsa-chunk-store/blob/master/createWritable.js#L88-...

createWritable.js: Lines 88-135

const code = () => {
  let fileHandle, handle

  onmessage = async evt => {
    const port = evt.ports[0]
    const cmd = evt.data
    switch (cmd.type) {
      case 'open': {
        const file = cmd.name

        let dir = await navigator.storage.getDirectory()

        for (const folder of cmd.path) {
          dir = await dir.getDirectoryHandle(folder)
        }

        fileHandle = await dir.getFileHandle(file)
        // @ts-ignore
        handle = await fileHandle.createSyncAccessHandle()
        break
      }
      case 'write':
        handle.write(cmd.data, { at: cmd.position })
        handle.flush()
        break
      case 'truncate':
        handle.truncate(cmd.size)
        break
      case 'abort':
      case 'close':
        handle.close()
        break
    }

    port.postMessage(0)
  }
}

globalThis.FileSystemFileHandle.prototype.createWritable = async function (options) {
  // Safari only support writing data in a worker with sync access handle.
  if (!workerUrl) {
    const stringCode = `(${code.toString()})()`
    const blob = new Blob([stringCode], {
      type: 'text/javascript'
    })
    workerUrl = URL.createObjectURL(blob)
  }
  const worker = new Worker(workerUrl, { type: 'module' })
supple whale
#

this one is correct

#

GH is trolling me

royal nymph
#

you can react with ❌ or garbage can i think

supple whale
#

dont seem like it

#

anyways

#

url from blob from func to string

royal nymph
#

no you can

#

❌ reaction works

#

maybe only latest one

supple whale
#

but its still not really what you're looking for

royal nymph
#

yeah ofc

supple whale
#

because it only rly works for a single thread

#

not multiple

#

since it wont sync variables

royal nymph
#

it's probably never gonna happen

supple whale
#

no dude

#

i swear there was a proposal for it

#

and it was REALLY good

#

but i cant find it

#

and it actually is burning a hole in my brain because i dont rmemeber what it was called

royal nymph
#

i mean for what it's worth you could do smth like this

runOnThread(
  (foo, bar, baz) => { },
  [foo, bar, baz]
);
#

and it would serialise foo bar and baz for you

#

that's the best you can get rn

supple whale
#

maybe it was this?

#

i'm not sure

#

this involves workers tho i remember it not involving workers

#

not a new idea tho

#

i remember some lib called greensmth that did that

#

like idk 7 years ago?

#

damn my memory and temporal coherence is fucking good

royal nymph
#

|| there's also the opposite of that that makes async functions synchronous ||

supple whale
#

i think now u can do it with atomics

#

but there was a hack for it before that

#

warting originally came up with it iirc

#

but he took up farming

#

F

#

we lost another one

royal nymph
#

nah u cant do it with atomics

#

since atomics block the thread

supple whale
#

you can cuz i did it

#

XD

#

for my webrtc polyfill library for node/deno/bun

#

its an AWFUL idea

#

but it works!

royal nymph
#

show code

supple whale
#

i nuked it, cuz it tanked perf and latency

#

but i'll find it 1 sec

royal nymph
#

i experimented a lot with these things but it always blocks the thread so nothing can be executed including async callbacks

supple whale
#

well yeah

#

ofc

#

thats how sync works

royal nymph
#

the one i know of achieves it by abusing child_process.execSync, spawning another node process and blocking until it finishes xD

pearl stagBOT
supple whale
#

thats the non-hacky version

#

which as u said, blocks main thread

#

because how else would it work

royal nymph
#

ohhh like that

#

okay that makes sense

supple whale
#

then there's ANOTHER one

#

using the v8 VM

royal nymph
#

i forgot you can also use Atomics to send data

#

There's another way to use them to just wait for exactly 1s

#

i was only thinking about that

supple whale
pearl stagBOT
supple whale
#

the amt of cursed js holds in it

#

is amazing

#

lang that trully lets u do anything, without being annoying to work with

royal nymph
supple whale
#

EKHEM C

royal nymph
supple whale
royal nymph
#

aka the language Javascript was modeled after

supple whale
#

so his english is bad

#

but he's a good guy

#

took up faming tho

#

not rly, he took up gardening

royal nymph
#

isn't this guy a slopdev

#

okay no i confused him with someone else

supple whale
supple whale
#

you used his code

#

trust me

royal nymph
supple whale
#

he's fucking everywhere

royal nymph
#

yeah i know

#

i've seen him before

#

hence why I was worried he's a slopdev

supple whale
#

nah he actually makes insanely cool stuff

#

streamsaver was big

#

google used it for ages themselves

#

before FSA came to be adopted better

#

he's also the one that showed me u can create node-style http servers in browser via service workers

#

and 0 hacks

#

just plain service worker

royal nymph
#

he's swedish

supple whale
#

might be

#

i dont remember

#

i talk to dozens of people like that

#

maybe mathvias was dutch

#

fairly sure that guy killed himself, he was depressed as fuck and i havent seen him in years

#

ggz

royal nymph
supple whale
#

he made the first half-decent ebml library for js

#

which i then took and supercharged

#

and proceeded to NEVER write docs for it cuz lazy

#

XD

#

but its a 0 dependency [outside of buffer cuz i couldnt get uint8 working] version of that using iterators

#

instead of streams

#

which makes it like >x2 as fast

#

exposes NTTP article-based files as real-time streamable W3C File objects

#

NNTP is kinda.... like email... but RSS? its very old

royal nymph
#

the horror

supple whale
#

yeah i do "why the fuck not" code when i'm bored

#

IWAs now have functional TCP and UDP socket, so i'm gonna be polyfilling node net, dgram and http for them next

#

XD

supple whale
#

had to do:

T extends Function | ProxyMarked ? Remote<T> : T extends object ? Promisify<T> & { [K in keyof T]: RemoteProperty<T[K]>; } : Promisify<T>
#

but it worked

#

thanks for the idea

#

"just promisify it at every step, but also non promisify at every step"

#

its so dumb, but it works!

hoary sluice
dense sand
supple whale
#

my uni taught me how to make a square and rectangle class in java

#

but they did NOT teach us to extend rectangle

#

so yeah, above is true

#

i'm entirely self taught

#

in the 5 yrs i've been in uni i've not learned anything

#

except some algebra for a semester that i still dont know how to use

#

and for 5 years i didnt fail a SINGLE exam

#

except for last week

#

where the bitch LOST MY EXAM AND FAILED ME

#

LIKE WHAT THE FUCK!?

#

i'm still giga salty about it

ornate quiver
#

complain to her department head

#

might work

willow knot
#

it will always amaze me how teachers "lose exams" like you've been teaching for 5 years do you not have the whole "put shit where you wont lose it" thing down?

violet inlet
#

@supple whale I feel like I've seen you somewhere

royal nymph
#

self learning >>>>>

formal belfry
#

i've decided to try and learn more about how injecting stuff into webpack works
everything in the bundle im looking at though is inside of an IIFE, and the one variable that does get exposed at the end, webpackChunksle, only has a .push(e,a) method, unlike discord which has a huge array of code chunks and then a push method

#

and just doing what vencord does with Object.defineProperty doesn't seem to yield anything

ornate quiver
#

i asking vee for help with this awhile back

supple whale
supple whale
#

what kind of incompetence

willow knot
#

HOW DO YOU LOSE AN ONLINE EXAM

#

thats just the teacher hates you and wants to lower your grade

#

they didnt lose anything, they just glossed over your name

cerulean plover
willow knot
#

DELETE * FROM exams

atomic brook
pearl stagBOT
supple whale
#

ven was horni

#

and forgot that we have es6 at home

ornate quiver
supple whale
#

...let?

atomic brook
#

And I haven't seen them changing in the runtime somehow

royal nymph
#

I think there was a reason I'm not sure honestly

royal nymph
atomic brook
dense sand
#

Yummy

jade stone
dense sand
#

guys i want to implement carousel component, the idea i have is to have overflow on x direction set to hidden and show only the 1 element, then fluently translatex when needed, this is what i have now, but it doesnt seem to work well, the items are shrinked

supple whale
#

man it takes 2 months to merge a docs update to electron

#

💀

still jolt
#

who could've guessed that dev branch is not stable ​​​​​

royal nymph
#

no your plugins are just outdated

still jolt
#

yeah it's my own plugin

#

I updated it now

cerulean plover
hoary sluice
#

gm

#

@deep mulch

#

oh zooter my zooter

hoary sluice
#

so it shouldnt matter right

#

actually no i forgot this is javascript where nothing ever makes sense

deep mulch
hoary sluice
#

@placid cape imma try rustrover

#

havent used it in years maybe they made it better than zed

cerulean plover
still jolt
#

yes I am insane ​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

dense sand
#

tailwind 4.0 came out a few days ago and the performance boost is really significant(atleast for me)

#

oh thats why

#

im cooked

dense sand
#

Authjs is the worst thing ive ever seen

#

@royal nymph by the way, if you remember the discussion about injecting arbitrary html and css, are you familiar with shadow dom? If so, is there any reason not to use it?

placid cape
spark tiger
# hoary sluice <@525316393768452098> imma try rustrover

one thing i noticed is how slow auto-completing is. like i type something and it takes rustrover a few seconds to load the methods, variables, etc. though i'm not sure if it's rustrover's issue or is it just that the project itself is very big

dense sand
#

Imagine a blazingly fast react framework built on top of bun

jade stone
#

am i crazy or does jetbrains not register makefiles that dont end with .mk

#

(you cant select the directory either so its not treating that as a default)

frosty obsidian
#

theres probably some setting that you can change

fallen nebula
dense sand
#

i mean its not enforced or anything

fallen nebula
#

yeak but then if you do make, you have to specify the file

dense sand
#

yea it should look only for Makefile

#

i rather think that .mk files are sort of "extension" files which are then "imported" (by calling e.g. make -F cpp.mk) into the main Makefile

fallen nebula
#

so even if technically you can use any name and extension, having the makefile be named makefile is the intended thing

#

reading a bit, it seems like .mk is just some informal thing that everyone kinda decided to take as a standard for non-standard makefiles naming or files that extend a makefile by getting included

#

pretty sure you can tell clion to consider .mk as makefiles

jade stone
#
       make executes commands in the makefile to update one or more targets, where target is typically a program.  If no -f option is present, make will look for the makefiles GNUmakefile, makefile, and Makefile, in that order.
#
       Normally you should call your makefile either makefile or Makefile.  (We recommend Makefile because it appears prominently near the beginning of a directory listing, right near other important files such as README.)  The first name checked, GNUmakefile, is not recommended for most makefiles.  You should use this name if you have a makefile that is specific to GNU Make, and will not be understood by other versions of make.  If makefile is '-', the standard input is read.
#

from man make

royal nymph
deep mulch
ornate quiver
#

huskk

deep mulch
#

unhusk

royal nymph
fallow jasper
royal nymph
#

Chrome is moving towards a new experience that allows users to choose to browse without third-party cookies.
Chrome is moving towards a new experience that allows users to choose to browse without third-party cookies.
Chrome is moving towards a new experience that allows users to choose to browse without third-party cookies.
Chrome is moving towards a new experience that allows users to choose to browse without third-party cookies.
Chrome is moving towards a new experience that allows users to choose to browse without third-party cookies.
Chrome is moving towards a new experience that allows users to choose to browse without third-party cookies.
Chrome is moving towards a new experience that allows users to choose to browse without third-party cookies.
Chrome is moving towards a new experience that allows users to choose to browse without third-party cookies.
Chrome is moving towards a new experience that allows users to choose to browse without third-party cookies.
Chrome is moving towards a new experience that allows users to choose to browse without third-party cookies.
Chrome is moving towards a new experience that allows users to choose to browse without third-party cookies.
Chrome is moving towards a new experience that allows users to choose to browse without third-party cookies.
Chrome is moving towards a new experience that allows users to choose to browse without third-party cookies.
Chrome is moving towards a new experience that allows users to choose to browse without third-party cookies.
Chrome is moving towards a new experience that allows users to choose to browse without third-party cookies.
Chrome is moving towards a new experience that allows users to choose to browse without third-party cookies.
Chrome is moving towards a new experience that allows users to choose to browse without third-party cookies.
Chrome is moving towards a new experience that allows users to choose to browse without third-party cookies.
Chrome is moving towards a new experience that allows users to choose to browse without third-party cookies.
Chrome is moving towards a new experience that allows users to choose to browse without third-party cookies.
Chrome is moving towards a new experience that allows users to choose to browse without third-party cookies.
Chrome is moving towards a new experience that allows users to choose to browse without third-party cookies.
Chrome is moving towards a new experience that allows users to choose to browse without third-party cookies.
Chrome is moving towards a new experience that allows users to choose to browse without third-party cookies.

lusty rock
#

How they fell when they do something like this?

ornate quiver
#

God

jade stone
hoary sluice
#

it sometimes imports the wrong path, and some times doesnt suggest an import at all

dense sand
#

Peak rust experience

frosty obsidian
#

i just used vscode for rust

#

it worked okay

ornate quiver
#

wtf yall doing on rustrover

#

it works 95% of the time fine for me

#

even doing cursed stuff

#

and has been since the EAP

frosty obsidian
#

i didn't do anything

#

i just didn't really notice an immediate benefit

#

im sure it's probably better if you're writing a lot of rust but i don't

#

and i don't want to pay for an ide that i just won't be using

ornate quiver
#

iirc its free for "non commercial use" now

#

just like webstorm

valid jetty
#

zed >>>

placid cape
#

I don't see any reason to use jetbrains ide for other langs than java, kotlin, ruby

supple whale
#

i'd disagree with java and put python in there

#

kotlin is unusable outside of jetbrains, ive tried many times

#

and ruby just doesnt have tooling outside of jetbrains

frosty obsidian
#

kotlin is unusable outside jetbrains intentionally

#

it has no official lsp

supple whale
#

there are some vscode plugins, but they stop working when u try doing more complex things

#

so yeah its annoying

#

fortunately fuck java fuck kotlin never using that shit agane

#

XD

valid jetty
#

i can write python in notepad

#

who needs an ide for python lmao

supple whale
#

you can also go write assembly in notepad

#

so go and do it, take ur weird arguments with ya

valid jetty
#

yeah but like, python is concise enough to where you dont really need a specialized ide to write code in it

supple whale
#

just because you've only written 20loc scripts in python doesnt meant thats true for everyone

#

its like saying you can do web dev in notepad

#

sure, noone is gonna do it like that because its not reasonable for anything remotely advanced

dense sand
supple whale
#

i know, but thats how the argument is presented

#

which is why it doesnt make sense

#

idk its arguing for the point of arguing

#

and i fucking hate that

dense sand
#

cursed af JEP

supple whale
#

UM AHSHTUALLY TECHNICALLY YOU DONT NEED TO

dense sand
supple whale
#

java have a lot of ide's that work outside of jetbrains very well, so its not a necessity

#

not saying jetbrains ide for java aint good, its just not the only option

dense sand
#

i mean, developing spring-like/enterprise apps outside of intellij is pain in ass not gonna lie

#

even for minecraft development

#

its purely subjective

#

but theres a reason 70% of Java devs use intellij

supple whale
dense sand
supple whale
#

like... 2 minecraft mods, an example spring boot app for some uni shit and that's about it

#

oh and some threading shit

#

not much

dense sand
#

perhaps you worked with things that dont necessarily require intellij

#

things like database/jpa were for sure pain to use given things like jpa buddy were missing

#

atleast for me

supple whale
#

yeah its possible some libs are developed for intellij, but most of it works outside of it, its possible its better its in intellij

#

kotlin flat out doesnt work tho outside of intellij, python intellisense and typechecking doesnt either, ruby is also unusable outside of rubymine

#

is what i mean

#

I guess

dense sand
#

i havent had much problems with python in vscode

#

kotlin doesnt have a public lsp so its understandable

supple whale
#

my friends who write libs for python complained about it A LOT

ionic lake
#

just use the Python extension on vscode which bundles pylance, or use basedpyright for other editors with lsp support

placid cape
#

You really don't want gradle/maven/.... project outside intellij

frosty obsidian
#

use eclipse

placid cape
#

why would you husk

frosty obsidian
#

if you hate yourself

supple whale
#

ah yes eclipse

#

2010 was a different time

supple whale
#

intellij handling it for you wasnt a good thing for me

#

but this is very outdated experience for me, idk how it is nowdays

frosty obsidian
#

you do need some sort of actual ide

supple whale
#

intellisense, language servers, type checking etc is giga important for time saving

frosty obsidian
#

stuff like vscode has terrible java support, even with plugins

#

its not that java is unusable outside of idea, its just that idea is the best tool for it

spark tiger
#

can’t believe president trump is a rust hater

ornate quiver
dense sand
#

i dont like this whole thing anyways

fleet cedar
#

Wtf is StableValue

dense sand
#

they should just add
@Lazy annotation

#

and let it live

frosty obsidian
#

they should just develop a brain

supple whale
#

real femboys use js

#

smh

dense sand
#

thats a totally different thing

#

you cant really compare these languages

fleet cedar
royal nymph
dense sand
#

its a marker annotation

royal nymph
#

whitehouse accounts and website are always nuked once president changes so the new president has a clean slate

if you want to find the rust post you need to look it up in the biden archive

fleet cedar
#

If you want lazy statics, just stick them in an inner class

ornate quiver
#

liberal rust propaganda

frosty obsidian
#

@Lazy would also not change anything fundamentally

dense sand
#

we have annotation processors, quite surprised it hasnt been added yet to something like lombok

royal nymph
fleet cedar
supple whale
#

now now, dont hate rust

frosty obsidian
#

idk

supple whale
#

its the only language that isnt utterly cancer to compile to WASM

frosty obsidian
#

but i doubt it would be anything fundamental

fleet cedar
#

It'd have to rewrite that static and all accesses to it to function calls, or to a hidden inner class

spark tiger
frosty obsidian
#

it could probably just hint to the jvm when to initialize it

#

in a similar manner to how @Override tells the jvm which version of the method should be executed

fleet cedar
supple whale
#

jesus, reading this only makes me think "thank fuck i stopped writing java"

fleet cedar
dense sand
#

yea

frosty obsidian
#

guh

dense sand
#

@Override is a marker

#

it doesnt really do anything

frosty obsidian
#

nvm then

ornate quiver
#

just a source thing

dense sand
#

yea

#

valhalla will release when im 60

valid jetty
dense sand
#

is there any good way to prevent this? I'm using Bun and my friend is using NPM, we always overwrite yarn.lock file(I need it for deployement) any idea how to solve this?

ornate quiver
#

prevent what exactly

dense sand
hoary sluice
ornate quiver
#

yeah just tell them to stop using bun

hoary sluice
ornate quiver
#

oh

#

stop using bun

dense sand
#

what

ornate quiver
dense sand
#

bun is the best

#

everyone is gotta start using this blazingly fast runtime

hoary sluice
#

why did i think bun was written in rust

ornate quiver
#

node+pnpm

#

best

dense sand
hoary sluice
valid jetty
#

rspack 😭

hoary sluice
# ornate quiver node+pnpm

anything related to js is terrible but if the only way you can feed your family is to use js then bun is the best

valid jetty
hoary sluice
#

crablang reference??

frosty obsidian
#

i refuse to use bun

winged mantle
#

i love javasceript for some reason

#

i think i am just attracted to ugly things

nimble bone
dense sand
supple whale
supple whale
dense sand
supple whale
#

which has v8 bindings written in rust

supple whale
# winged mantle i love javasceript for some reason

its peak, standardised high-level API's, full platform independence no matter the architecture, endianness, no compile, low barrier of entry, little to no-restrictions about what u can break, patch or overwrite

#

there's a lot to like

#

tell me one other langauge, where you can call bluetooth, and get the SAME result and devices on iOS, android, windows and linux, across arm and x64

#

because fuck i've not found any outside of js XD

winged mantle
#

java

#

write once run anywhere

supple whale
#

nope

winged mantle
#

yeah ik ios does not like java

supple whale
#

java is kinda... that

#

except it has a compile step, and no high level api standards

#

like what W3C does

#

i like how deno casually implements webgpu

#

like... what?

#

XD

#

and it just fucking... works

#

LOL

frosty obsidian
winged mantle
#

same difference

frosty obsidian
#

kotlin has support for apple devices

#

without jvm

ornate quiver
winged mantle
#

duke is coming...

distant cobalt