#💽Programming Chat v2

1 messages ¡ Page 15 of 1

timid quartz
#

yyyyyyyyyyyyes

spare quartz
#

i kinda wanna send a good serverhello beforei sleep

timid quartz
#

bayachao would want you to sleeb

spare quartz
#

mf they're making suggestive a

#

oh my god thats the worst character you could've possibly used

timid quartz
#

do you think I know anything about bayachao lore

#

LOL]

#

HAHAHAHAHAH

#

GET AUTOMODDED

#

GO SLEEP @spare quartz

#

LMAOO

spare quartz
#

WHAT I SAID STILL STANDS TRUE

timid quartz
#

you wanna say it again ;3

spare quartz
#

yeah

#

goo

timid quartz
#

they're canonically goo?

#

dang

#

slime monster

spare quartz
#

okay but like

#

take a look at their profile for 5 seconds

#

and you'll know what they'd REALLY want

timid quartz
#

posting nsfw links get rule 2 warn'd

spare quartz
#

ITS NOT NSFW

#

i think

#

idk thats just the artists page 😭

#

okay there is bad stuff if you scroll down enough but it's censored due to bluesky policies (thank god)

#

but still you can read japanese well enough to get the message

timid quartz
#

no I can't :3

spare quartz
#

wha

#

you can't ????????

#

bros posting makemon now 💔

#

fake fan

#

yknow

#

sometimes this dependency-less stuff gets out of hand

#

got wireshark working on wsl

#

thisll make testing a lot easier

timid quartz
spare quartz
#

think about the feds and the glowies though!!

#

The protocol version the client attempted to negotiate is recognized, but not supported. For example, old protocol versions might be avoided for security reasons. This message is always fatal.

#

guess i really do need to implement extensions

timid quartz
#

zst

spare quartz
#

off myby one

#

ignore the weird !? symbols, terminal got corrupted somehow and replaced [] with those two

spare quartz
#

昨日、フリーのリズミカルBGMをお借りして曲(?)を作りました!
増えていくバ美肉怖すぎて泣いちゃったので自己紹介してもらいました
何????????????????????????

作詞:ばやちゃお
作曲:SSフリーミュージック様(お借りしました!)
歌唱:ばやちゃお
動画:ばやちゃお
MIX:ばやちゃお

▼魔けモン!Web
https://bayachao.wixsite.com/makemon

▼ばやちゃおTwitter 
https://twitter.com/BAYACHAO

▶ Play video
#

makefile makefile reference

timid quartz
spare quartz
#

you mean the third

timid quartz
#

no the second

#

this one

spare quartz
#

OH i thought you meant in the thumbnail

#

yeah they'e a um

#

AUTOMOD word

timid quartz
#

yeah

#

yikes

spare quartz
#

i would say what the second one in the thumbnail represents but like

#

ummm

#

nope :3

spare quartz
#

Sleep time

lavish dove
lyric mesa
full berry
#

use maria

#

shrimple

spare quartz
#

use meowniumdb

spare quartz
#

800 lines already for this is getting quite hard

#

RESPECT NETWORK ORDER!!!!!!

spare quartz
#

HEY IT WORKED

#

the way this is setup is a bit weird but it works

spare quartz
#

oops!

lavish dove
spare quartz
#

this is a networking protocol

#

all network protocols are supposed to be in big endian (that's the wire order everyone agreed upon)

lavish dove
#

fr?!!?

spare quartz
#

yes

lavish dove
#

But that doesn't make sense cuz every individual protocol won't be working together

#

And it's inconvenient DAYNOTMADE

spare quartz
# lavish dove But that doesn't make sense cuz every individual protocol won't be working toget...

In computing, endianness is the order in which bytes within a word of digital data are transmitted over a data communication medium or addressed (by rising addresses) in computer memory, counting only byte significance compared to earliness. Endianness is primarily expressed as big-endian (BE) or little-endian (LE), terms introduced by Danny Coh...

lavish dove
#

Bro I'm reading that rn

spare quartz
lavish dove
#

So it's not agreed?

spare quartz
#

it is agreed

#

theres outliers which shouldn't exist

lavish dove
#

Because ip uses it

#

Oh

spare quartz
#

to change that would just make protocols less consistent

lavish dove
#

It only says that ip will use big endian

#

It won't let me cooy

#

And the Rfc is describing iana's job

#

The convention in the documentation of Internet Protocols is to express numbers in decimal and to picture data in "big-endian" order

spare quartz
#

internet protocols

#

note the s at the end

lavish dove
#

H

spare quartz
#

still even if all protocols were little endian we'd still need to do the conversion for certain systems

#

thats what i do here for example

#

On bed

timid quartz
spare quartz
timid quartz
#

mmm nope

spare quartz
#

I was lazy and basically made an SSL ddos tool using an external DLL

#

if I used the same DLL with the same threading it’d crash in rust too

#

since that’s a C++ error, not ads

#

Ada

#

Bellhhh

timid quartz
#

ok but

#

you wouldn't be using the same dll

#

you wouldn't be using a dll at all

spare quartz
#

I would

timid quartz
#

because rust has good crates for ssl

#

so you wouldn't need a dll

spare quartz
#

So does Ada

timid quartz
#

yeah wolfssl which you refuse to use

spare quartz
#

Not wolfssl

#

AWS has its own SSL library which is better than what I did

#

But it takes a while to compile so I didn’t go that route

#

The error makes sense though

timid quartz
#

waah waah I need my 10k+ loc project to compile in under 500ms

spare quartz
#

I basically tried to use the same object… over 400 threads all at once

timid quartz
#

line(s) of code

spare quartz
#

This is a burner project

timid quartz
#

waah waah I can't handle longer compile times even if it means more memory safety features and more niceties like macros and syntactic sugar that de-sugars into a zero-cost abstraction

spare quartz
#

Me when I lie

#

Also rust would take like 50x longer than an Ada project with AWS

timid quartz
#

yeah because rust does like 50x more for you when it compiles

spare quartz
#

like what

timid quartz
#

more memory safety features and more niceties like macros and syntactic sugar that de-sugars into a zero-cost abstraction

spare quartz
#

mf we have all of that

timid quartz
#

says the lang that doesnt even know when to insert free() calls

spare quartz
#

pragma Intrinsics + memory safety + literal security features such as ROP protection

spare quartz
#

Also just a note the language recognizes when to destroy an object

#

Everything that’s going to be “cleaned up” and is controlled is finalized

#

It’s just not freed unless requested explicitly by the programmer

timid quartz
spare quartz
#

okay now code an airplane with it

timid quartz
spare quartz
#

rss?? like rss feed??

timid quartz
#

additionally like ada

#

libraries are normally included as source

#

not as prebuilt binaries

#

so it does all of the compilation steps recursively

#

for all the crates

spare quartz
#

yeah

timid quartz
#

and idk if you've ever seen how nice a rust compile error looks but it takes some non-trivial semantic parsing and analysis to get those errors

#

it's honestly a wonder that rustc isn't slower

spare quartz
#

GNAT compile errors might not look as nice but they’re still very helpful

#

The way they’re written is a lot different from other languages though which makes them confusing at first

timid quartz
#

ok well example

#

when I'm like idk making a custom 'Read

#

gnat says "incorrect expression type for whatever'Read"

#

which like makes sense

#

rust will usually show you exactly what part is incorrect and suggest a fix

#

so like with GNAT, it was that the Stream type was wrong (it wasn't not null access Ada.Streams.Root_Stream_Type'Class)

#

Rust would say "oh this type right here needs to be this"

spare quartz
#

maybe you could suggest that as an RFC to the GCC devs

timid quartz
#

it would make your compiling slower

spare quartz
#

not by much

#

the GNAT compiler itself is a complete semantic analyzer, better than libadalang

#

it just needs a better way to display what’s wrong

timid quartz
#

I was just making a point about why Rust compilation takes so long

#

because it does a ton of stuff designed to make it useful for every crate pulled in by your project

#

and even then it has incremental builds so it does the same thing that gprbuild does

spare quartz
#

Stupid dumb cat

spare quartz
# timid quartz

Wonder what a failure to implement an abstract function for a type would look like in Ada

timid quartz
spare quartz
#

oh Ada does that actually

timid quartz
#

it does it mostly

#

it doesn't really tell you what to import

spare quartz
#

suggests “with x;” or “use x;” if you’re using something and doesn’t have it/not qualifying

timid quartz
#

I've not had it suggest that

spare quartz
#

Weird

timid quartz
#

it just says "declaration in <file>"

spare quartz
#

Oh that’s probably cause multiple things are specifying the same object and you’re “use”ing both

timid quartz
#

it gives you a hint as to what to import but doesn't really tell you

spare quartz
#

there’s special keywords to assist with that in tandem with “use”, but I haven’t gotten much use out of them

spare quartz
timid quartz
timid quartz
spare quartz
#

well again the errors make perfect sense for a problem

#

and aren’t gonna throw you in a loop like (shudders) C++

spare quartz
timid quartz
#

yeah at least they're not c++ errors

timid quartz
#

or even worse, the dreaded "segmentation fault (core dumped)"

#

but rust compiler errors just easily blow basically everything else out of the water

#

not to say that all the errors are good because you can certainly get some cryptic ones, especially if you start fucking around with async a lot

spare quartz
#

there’s also “private with” and “limited with” but I have no idea how those work yet

timid quartz
#

async and lifetimes are where rust gets weird if you aren't careful

spare quartz
timid quartz
#

well you know what the function coloring problem is right

spare quartz
#

nnnnoooo

timid quartz
#

well it has to do with async functions

#

the problem basically is that once you mark one function as async, the async "color" spreads all around your program

spare quartz
#

OH kotlin suffers with that

timid quartz
#

basically every language does

#

that has async

#

including rust

spare quartz
#

not Ada babbbbyyy (the accept in question)

timid quartz
#

I mean

#

anyways

#

rust ALSO has another "virus" called lifetimes

#

which are normally invisible but their job is to tell the borrow checker how long something lives

#

however they can appear whenever you have a reference that isn't yours

#

and once they pop up in one place they spread around

#

like this

#

now anything that uses MyStruct is gonna end up with that lifetime in it

spare quartz
#

Blehhh

timid quartz
#

sometimes it can get elided but

#

not all the time

#

(and in this example you'd probably just use a String anyways which is an owned type, not a reference type)

#

(and completely bypass this issue)

#

but if you end up with async/and or lifetimes all around your code, sometimes the errors can get weird

spare quartz
#

reading this

timid quartz
#
error[E0597]: `fb_config` does not live long enough
  --> src/main.rs:37:45
   |
26 | pub extern "sysv64" fn kernel_main (mut fb_config: FrameBufferConfig) -> ! {
   |                                     ------------- has type `FrameBufferConfig<'1>`
...
37 |     let mut pixel_writer = PixelWriter::new(&mut fb_config);
   |                            -----------------^^^^^^^^^^^^^^-
   |                            |                |
   |                            |                borrowed value does not live long enough
   |                            argument requires that `fb_config` is borrowed for `'1`
...
66 | }
   | - `fb_config` dropped here while still borrowed
#

example of something with lifetimes

#

like to me it seems not that bad

#

but it can be confusing

spare quartz
#

oh wow that gets destroyed on phone

timid quartz
#

I'm sure there's worse errors out there

spare quartz
timid quartz
#

yeah i saw that

spare quartz
#

there was one error I’ve gotten out of the blue from GCC that’s totally just

#

garbage

#

it happens during the binding process, something after the first build gets screwed up so I have to delete everything in obj, but all it does is fail the compilation with

#

<none>:9:13: invalid character

#

or something like that

timid quartz
#

gg

spare quartz
#

No idea what made it happen but I’ve just mitigated it by including an rm rf in 2 build scripts

#

rustc terminated: SEGMENTATION FAULT

timid quartz
#

you mean in your 2 glorified makefiles

timid quartz
spare quartz
#

shut

timid quartz
#

gprbuild terminated: general protection fault

spare quartz
#

aw hell naw

#

kernel level gprbuild

#

I haven’t come across any serious GCC bugs apart from it temporarily bricking a pi

timid quartz
#

you said you wanted to make an exe reader too right

spare quartz
#

Maybe

#

I’ve already made an ELF reader

#

But that was only on Roblox…

timid quartz
#

you should

#

do it in rust

spare quartz
#

okay, add disassembly to yours and I just might :3

#

(/j)

proud creek
#

bruh 😭

lavish dove
#

that number of systems is shrinking

timid quartz
#

linux once again proves its utter incompetency

#

by failing to run an rpg maker game which is basically glorified chromium

timid quartz
#

and yes

#

I tried every proton version under the sun

#

including ge

#

flatpak and non-flatpak steam

#

and I only made it to the title screen once

lavish dove
#

idk how to debug proton

timid quartz
#

by switching to windows

#

linux SUCKS!!!!!!!

lavish dove
#

how does something made for windows not working on linux mean linux sucks

#

it wont work on macos either

timid quartz
#

so linux is sucking at its job of making it work anyways which everyone says it can do

timid quartz
#

and no I really don't want to use fucking xorg

#

"ooh linux is better" no it really aint....like even for some native linux apps, whether it'll work right is a tossup, and then it's even less predictable that shit that isn't native will even run at all

#

and sometimes you gotta switch to xorg or do this or that or whatever

#

like sure windows spies on you and sells all your data but like shit at least I don't have to log out and log back in to play one fucking game

#

and no "just use xorg dont use wayland" is not viable xorg is hot garbage like the rest of linux

lavish dove
#

I dont like how i haved to choose between it and wayland

#

but ive never had a problem with native linux app

#

just install, sometimes its not one command to install then I haved to install its file then its one command to install.. but thats literally just downloading it and then installing it

timid quartz
lavish dove
#

its more convenient to use linux because I can just easily find and delete programs

lavish dove
timid quartz
#

What are you even doing that you can’t do on windows

#

If you’re trying to game on a Ryzen with an AMD GPU then I will cede that Linux is faster

#

But if you have an Nvidia GPU then like what are you doing on Linux

spare quartz
#

getting somewhere

#

its reading extensions properly

#

just malformed the write on key share

spare quartz
#

very good sign!

spare quartz
#

this is "secure" but the client appears to have accepted it

lavish dove
#

everything else is

#

ugh

#

but I can just change it to use my integrated graphics lol

lavish dove
#

for some reason opencl runs at like double the speed

lavish dove
#

but thats because nvidia literally isnt allowing that shit

lavish dove
#

like its so obvious too because opencl is used for ai

#

a

spare quartz
#

right

#

gotta actually deal with encrypted data now

#

this'll be awful

lavish dove
#

why use tls if you can make your own

spare quartz
lavish dove
#

and then do it yourself part of your protocol

spare quartz
#

this is a tls library its not "my protocol"

#

and i would but finding the algorithm and knowing how to execute it in code are two different things

lavish dove
#

its really simple 😭

spare quartz
#

no its not

lavish dove
#

well to copy paste it is

spare quartz
#

X25516 key generation in ada isn't simple

lavish dove
#

oh that

#

i meant like rsa

spare quartz
#

nonono adacore already made a tutorial on that

#

TLS 1.3 doesn't allow you to use RSA algos

lavish dove
#

I mean rsa is the one that a bunch of people got together and decided was the best so

spare quartz
lavish dove
#

aes not rsa a

spare quartz
#

theres one algo im missing but this is everything tls 1.3 initially defines for use

lavish dove
#

rsa is the enterprise physical security key company thing

spare quartz
#

yeah but don't you need like

spare quartz
#

a giant key for it to be secure now-a-days

#

like RSA 2048

lavish dove
#

giant as in 256 bits

spare quartz
lavish dove
#

isnt your gnu key thing I forgot the name of 512 bits

spare quartz
#

PGP?

lavish dove
#

yeah

#

I was using gnukey and it said yours was 512

#

I think

#

and aero's was 256

#

or mine was

spare quartz
#

my keys are using these two

lavish dove
#

oh oof

#

idk what that is

spare quartz
#

they're uh

lavish dove
#

but I know like unless its permanent even 256 bits is pretty secure

spare quartz
#

keys based on elliptic curves basically

#

like you generate 256 bits of random information (private key) run it through a mathematical function (the elliptic curve) and thats your public key

lavish dove
#

oh thats cool asf

spare quartz
#

TLS does it for every session

#

heres a good site on it

lavish dove
#

thats going in favorites

spare quartz
#

i might've explained stuff wrong cause cryptography is honestly the thing in programming im the worst at

#

but that's what i know so far

lavish dove
#

yeah its all magic

#

I would haved to learn more about it for the tcp replacement thing I keep talking about

timid quartz
lavish dove
#

fr lets just flip the curve and then doneeeeee

spare quartz
#

you can’t just do that!!!

#

the big numbers!!! the big math!!! bigggg!!!!

lavish dove
#

theres a __uint128__t type for gcc

#

and c2x is apparently going to have infinitely sizable bit counts

#

alot of it is complete dogshit though

#

like why tf does #embed act exactly like #include but makes thing into strings

#

why the actual fuck

#

apparently theres functions to do decimal math now

#

_bitint

#

_bitint for the infinitel sizable bit counts

#

but there isnt a full implementation cuz its a fucking bitchy idea

timid quartz
spare quartz
#

i need 256 bits though

full berry
#

@spare quartz hey have you done anything with your wsl that involved like exposing ports and nginx and shit

spare quartz
#

constantly

full berry
#

because i'm trying to do something, and like i'm expoising something on port 2000, and when i connect to it via localhost:2000 it shows me what needs to be shown

#

but when i do ip:2000 or use the domain i assigned, it just loads forever and fails to connect

#

any pointers?

spare quartz
#

run wsl hostname -I

#

then run netsh interface portproxy add v4tov4 listenport=<port> listenaddress=0.0.0.0 connectport=<port> connectaddress=<WSL2 IP> in admin

full berry
#

okay

#

i got 3 ips though

spare quartz
#

?

spare quartz
#

use the leftmost

full berry
#

i added both 2000 and 80

spare quartz
#

and your firewall allows those two right?

full berry
#

yeah i added a rule

#

uh

spare quartz
#

as well as them being port fwded by the router?

full berry
#

well the ufw is disabled and my windows defender firewall has a rule added

spare quartz
#

okay then try the portproxy command on the other ips

full berry
#

does it need to be forwarded by the router?

spare quartz
#

... if you're trying to access it from outside the network yeah

full berry
#

oml time to dive into croatian routers again

#

wait is it this

#

because theres nothing called

#

port forwarding lmao

spare quartz
#

i think thats it yeah

#

weird its not called NAT or Port forwarding though

full berry
#

i have NAT settings

#

oh wait nvm that's just

#

nat mode

#

wait

#

remote host and wan port??

full berry
spare quartz
#

could it mean the routers ip?

full berry
#

i have no clue

#

maybe i can leave it empty

spare quartz
#

if it don't let you then just search up your ip on google and enter it on that

full berry
#

wait what the fuck

spare quartz
#

?

full berry
#

????

#

why is it doing htat

spare quartz
#

its probably offsetting the port number so you don't get something like

#

external ports: 10-20
internal ports: 1-5

spare quartz
#

probably reserves those for data

full berry
#

ill just do 80 - 80 and 2000 - 2000

spare quartz
#

68 seems to be DHCP

#

1701 is for VPNs... 7547 is for something called CPE WAN management protocol

full berry
#

why do you know all this lmao

spare quartz
#

i don't

full berry
#

but uh yeah its still refusing to

spare quartz
#

im looking it up

full berry
#

connect

#

what the flip

spare quartz
spare quartz
#

hmm

#

alright lets see if its even portforwarding right

#

do you have wireshark on your pc

full berry
#

no but i can instlal it

spare quartz
#

yeah just scan for packets with the search filter tcp.port == 2000 and then try connecting to the domain on that port

full berry
#

just give me like 5 mins i need to get something rq, ill have it install tho

#

alr

spare quartz
#

this wiki page hasn't changed for 17 years

proud creek
#

why is it so big

spare quartz
full berry
#

ok im back

#

h

spare quartz
#

the one your computer uses for the internet

full berry
#

more of them just showed up

#

the top 4 have traffic like

#

wtfffffff

spare quartz
#

just use ethernet since that seems to be your internet

full berry
#

ok lets see

#

oh that's odd

#

i went to 192.168.8.128:2000 (which is my computer's local address) and it loads what it needed

#

if i go to my public ip:2000

#

i get some

#

results..

spare quartz
#

yeah it seems like the routers sending it right

#

the linux side just isnt responding. try a different ip from the wsl command

full berry
#

OH WAIT

full berry
#

if i have multiple distros

#

installed

spare quartz
#

i dont think so?

#

you can filter a distro using -d

full berry
#

wt

#

odd

#

okay uh

spare quartz
#

if yo uwant

full berry
#

oki

full berry
spare quartz
#

weird

full berry
#

rebooted my pc still nothing

#

i mean could it be the fw rule on windows

#

i did selct to allow all types of connections on all ports though..

#

ok i give up 😭

spare quartz
#

i wouldn't recommend it

timid quartz
spare quartz
#

honestly i'm not smart enough to understand this math

#

like ideally its simple but i just dont know how to write it out

timid quartz
#

goog

spare quartz
#

WAAHHHHHHHH

spare quartz
#

a story in two parts

#

this is what made me write my first ever computercraft code!!!

spare quartz
#

tag yourself

spare quartz
#

THIS IS A NEW LOW

#

THE ONLY SITE WITH MY PROBLEM IS IN JAPANESE

full berry
#

oh aeraaaa

lavish dove
lavish dove
# spare quartz

the schools in japan use minecraft to teach java mixin and shit, so theres alot of stuff on minecrafti n japan

#

or atleast I think

#

lol

spare quartz
#

im doing really weird stuff rn

lavish dove
#

ew java

spare quartz
#

kotlin

lavish dove
#

ew kotlin

spare quartz
#

minecraft will crash if i load these native librarys the normal way so i have to use hacks to load them at runtime

lavish dove
#

oh damn

timid quartz
spare quartz
#

waaaaah

spare quartz
#

i have great news

#

after 5 hours of labor

#

breadmod now has full control of the JVM

spare quartz
#

alright

#

custom exception handler done

#

oops almost forgot one thing

#

there we go

#

now with extremely long exception message support

spare quartz
#

finally chaining exceptions

lavish dove
#

Physx is crazy

spare quartz
#

yeah i wanted to make a tool that spawns in rigidbodies

#

oldish image but it also supports suppressed exceptions now

timid quartz
#

@spare quartz boo

spare quartz
timid quartz
snow oak
#

learning go

#

yeah

lavish dove
snow oak
timid quartz
#

or even like winget install GoLang.Go in your terminal

#

but yeah go is a W language honestly

#

unlike SOME other ones @spare quartz

spare quartz
#

the guy who made the iron chests mod sucks at coding and made all file operations go through this stupid fucking "union" scheme

#

annoying as hell

timid quartz
#

I understood everything up to "sucks at coding"

spare quartz
#

and before you tell me off from having to load our mods code into our mods code im forced to due to mod class loader being awful

spare quartz
timid quartz
#

Kotlin stinky

timid quartz
spare quartz
#

because we find cool ideas

#

yknow

#

breadmod used to have a riscv32 emulator i made at school

#

but i deleted it due to not replicating the arch well enough

timid quartz
spare quartz
#

kotlin is pretty good though!!!

timid quartz
#

Go is better

#

No JVM

#

Goroutines

spare quartz
#

the jvm is a beatiful peace of work

timid quartz
#

Errors as values

spare quartz
#

and modern java has green threading which is effectively coroutines

spare quartz
#

(at least more than ada does)

timid quartz
#

Nope it has exceptions

spare quartz
#

yes but it also has

#

Errors

#

:3

#

(the word you want here is Throwables)

timid quartz
#

Ok but that’s the equivalent of panic

#

Stop being so pedantic

spare quartz
#

no its not

timid quartz
#

Literally Richard Stallman

spare quartz
#

panic literally destroys the entire process

timid quartz
spare quartz
#

which would be like System.exit

spare quartz
timid quartz
#

You can also set your own panic handler that does nothing in rust

spare quartz
#

okay but thats totally different

#

thats like setting an interrupt handler in x86 everytime you expect an io error

timid quartz
#

Fine since you want to be stupid

spare quartz
#

IM PROVIDING VALID ARGUMENTS

timid quartz
#

You’re being annoying

#

You know what I mean

spare quartz
#

everything i've been saying is completely valid for exception/throwables in contrast to errors as returns

#

not stretching the definition

timid quartz
timid quartz
spare quartz
#

how so

timid quartz
#

You knew exactly what I was criticizing when I said “the JVM doesn’t have errors as values”

spare quartz
#

it does though

#

it just doesn't encourage you to return errors as another class (or record or struct or...) like in other languages

timid quartz
#

The fact that the JVM primarily uses try-catch style exceptions rather than doing something like Go or Rust where you just return a different kind of value

#

You knew enough of what I meant to start being stupidly pedantic over it and correct me by saying “I believe the correct word you’re looking for is Throwables 🤓☝️”

spare quartz
#

that was an extra note i added in

#

wasn't an argument

timid quartz
#

Point being

#

Stop being Richard fucking Stallman all the time

spare quartz
#

and the JVM doesn't use try-catch either

timid quartz
#

Here you are being pedantic again

spare quartz
#

the reason exceptions are so common is because it's just agreed upon for implementors to use exceptions as they are more specific to the thing they deal with (possibility of error in a program)

#

it's not an intrinsic thing

timid quartz
#

“Erm the JVM doesn’t use exceptions it’s acshually the languages”

spare quartz
#

me being pedantic doesn't mean all my points are futile

timid quartz
#

When we all know that basically every common language that uses the JVM uses exceptions

timid quartz
#

And rather annoying actually

spare quartz
#

i don't know how else you expect me to respond then

#

exceptions are the most-specific facility provided by JVM-compilable languages in comparison to just returning a class wrapper

#

this doesn't mean java is inherently bad for using them, as all exceptions you're supposed to handle are shown to you very clearly

timid quartz
#

This entirely spawned from me mentioning that Go has errors as values where as Kotlin still uses exceptions

#

I wasn’t even referencing the JVM specifically

spare quartz
#

we're still on that exact topic so i don't see why that matters

timid quartz
spare quartz
#

especially since the reason kotlin uses exceptions is due to its origins on the jvm

timid quartz
#

We were originally on Kotlin and you generalized it to the JVM when I was not referencing that

#

Nobody (sane) programs in raw JVM byte code, so the fact that “oooh actually the JVM doesn’t have exceptions” practically doesn’t matter since Kotlin and Java do

spare quartz
#

i never said the jvm doesnt have exceptions

timid quartz
#

Ok then “ooh the JVM actually has errors as values”

spare quartz
#

what im not understanding though is like, what are you trying to say about exceptions that makes them worse then returning an error "wrapper"

#

since they're the same effectively in a JVM oriented language such as kotlin or java, with more flexibility

#

just with different handling semantics

timid quartz
#

Then you could have asked that rather than start this whole thing with you being pedantic about exceptions and errors and throwables and the JVM

spare quartz
#

i've been saying that this entire time

timid quartz
#

No? You’re the one who originally interjected about the JVM having errors as values

spare quartz
#

that is what i said

#

is effectively the big word here?

timid quartz
#

But the JVM itself, the actual VM, having errors as values doesn’t matter when the languages that you use implement the handling mechanism as exceptions

spare quartz
#

my big question here is how are exceptions worse than as-return-values?

timid quartz
#

The handling semantics for exceptions feel clunkier to me, exceptions feel “unnatural” in the code, literally “exceptional” state, which you could argue that they are, but having worked with Rust I vastly prefer having exceptions or errors or whatever the fuck name you want to be pedantic about being represented as normal data and normal program state feels a lot nicer

#

Additionally, while you can randomly panic or exit() in any program, exceptions are the primary mechanism for handling bad program state in Java et al., and unintentionally leaving them uncaught can cause your entire program to crash. Sure Java has to declare all the non-runtime exceptions which is good, but a runtime exception that you could feasibly could still be thrown with no warning, and yes this is a documentation issue but the fact is people don’t always write good docs, so it’s just another thing you might have to catch in production

#

Therefore the primary error handling mechanism in Java et al. leaves a lot to be desired imo

#

With Rust and other langs that do errors as values, you’re explicitly notified via the primary error handling mechanism that something could go wrong and you’re forced to handle it because otherwise you can’t access the underlying type that you want

#

In Go, not so much, but you’re still given an error as a “normal” part of the program

spare quartz
#

lemme go tackle this on a language level (Java) since there's no comparable analogue for rust (llvm doesn't count)

timid quartz
#

If you’re about to argue what I think you are, how the JVM and its bytecode handle this is nearly irrelevant to a programmer that doesn’t directly interact with it, and the original comment was made in the context of Kotlin and not the JVM

spare quartz
timid quartz
#

Just like how rust programmers usually don’t care about whatever the fuck llvm does

spare quartz
#

lemme write at lesat

timid quartz
#

Oh my god stop being pedantic

spare quartz
#

it is literally just a note

timid quartz
#

You and Richard Stallman should kiss

#

You’d make amazing partners for each other

#

Because you’re both insufferably pedantic

#

holy essay yapman

spare quartz
#

oh my god

#

i hate autmood.

#

you're still able to see that right

#

okay wow

#

i literally just cant show any of the psuedocode cause this automod is annoying

#

notepad then

timid quartz
#

Headers

#

Don’t use headers

#

It’s the headers

spare quartz
#

its the #?

timid quartz
#

And the small comment thing

#

Yeah

spare quartz
#

that's weird but okay

#

ill uh, prepend them in the future

timid quartz
#

Well because

spare quartz
#

ik ik its cause of the giant text

timid quartz
#

You could spam shit like this

#

Yeah

spare quartz
#

i thought it'd handle it being inside blocks though

spare quartz
#

hopefully i didn't lose coherentness

#

( i do that a lot )

timid quartz
#

I see what you’re saying

#

Personally I’d also argue against a giant try-catch block because what exactly failed can easily become unclear

#

Like if you call 5 fallible IO operations that all throw similar exceptions

spare quartz
#

thats fair, but thats what exception stack tracing is for

#

i didn't know what an analogue of that would be in rust so i didn't include it in the second example

timid quartz
#

Normally .unwrap() will include the erroneous line number

#

And column

spare quartz
#

ah

timid quartz
#

But ideally you don’t even need to use a stack trace because your issues are caught and dealt with at compile time

#

and then your program has how to deal with that error defined in the normal control flow

spare quartz
#

try/catch, at least the way i use it personally, is only supposed to handle completely unpredictable exceptions like an IO failure

#

if it's used to catch an NPE for example, that's bad design and just essentially letting you shoot yourself in the foot without a care for program integrity

#

(but java should have more in the way of safety to that regard)

timid quartz
#

Which is why I prefer Go and Rust because you can’t really resort to anything like that

#

“Do you want this function to possibly error? Express it via the type of the return value(s)”

spare quartz
#

the reason i suggested kotlin is that it's more similar to rust in it's scrutinization of error detection at compile time rather than runtime

timid quartz
#

There’s no distinction between “checked” and “unchecked”, just “fallible” and “infallible”

timid quartz
spare quartz
#

well yeah that's not something i'll argue against

#

i just have more of a heart towards kotlin personally

timid quartz
#

Yeah cause you used it more

#

And you’re just a JVM-kisser anyways

#

CLR ftw

#

I love Microsoft

spare quartz
timid quartz
#

Go is also just drastically simpler

#

Like…that’s one of the precepts under which Google designed it

#

To be simple and easy to pick up yet powerful

spare quartz
#

fair

#

kotlin is more geared towards being concise than simple

timid quartz
#

Anyways go find Richard Stallman and take him out to a nice dinner before he dies of cancer

spare quartz
#

didn't he play a big part in gnu

timid quartz
#

the chief gnuisance

spare quartz
#

i hate gnu

#

ill kill him

timid quartz
#

but all of his drama is over him being needlessly pedantic

#

like u ❤️

spare quartz
#

just to be clear i wasn't aiming towards being pedantic at all during the conv

#

just trying to lead you into using the right terms so i don't get confused

#

im very stupid as you know

timid quartz
#

mm yes

#

become smart

#

use your brain for things other than :3

spare quartz
#

oh right

#

i have to get my ass beaten by the idiot who made this modloader

timid quartz
#

Make the mod loader better

spare quartz
#

yeah you see i would do that

#

but the modding community on minecraft has a big problem of splintering every few or so years

#

and causing even more pain to the developers who actually make mods

#

so i would rather not contribute to that

#

unless you mean writing a PR in which i do not wanna touch that code with a 10 ft pole

#

i have no idea how they even made the urls automatically pick up a "union" scheme and would rather not find out why

#

im glad codev is getting great use out of this new interface though!

radiant slate
spare quartz
#

hi chady

timid quartz
spare quartz
#

yknow whats funny

#

i have an ada repo setup on my disk for that exact idea

timid quartz
#

dewit

spare quartz
#

ill do it one day.. for myself.. but not today

#

scpsl time

timid quartz
spare quartz
#

mrow

lyric mesa
#

the automod loves this thread

timid quartz
# spare quartz mrow

How about…you mod scpsl and get to know the CLR as well as you know the JVM

timid quartz
spare quartz
#

which is

lyric mesa
spare quartz
#

👻 C#!!!!!!

timid quartz
#

katsumi check your DMs for more Omori

timid quartz
spare quartz
#

WORSE java

timid quartz
#

Better

spare quartz
#

actually wait why am i supporting java

#

i hate the lanauge

timid quartz
#

Does Java have uh

spare quartz
#

JVM on top

timid quartz
#

Implicit get and set

lyric mesa
#

what happens when you put script in front of java

spare quartz
#

it becomes a legal issue

timid quartz
#

scriptjava

lyric mesa
spare quartz
timid quartz
spare quartz
#

what is the clr

#

clear?? cmd ??

timid quartz
#

Common Language Runtime

#

What C# uses instead of the JVM

spare quartz
#

does it have a specification and is it an ACM

lyric mesa
#

hehehhehehhehehe

timid quartz
spare quartz
#

programmer makes pun
asked to go amish

spare quartz
#

is this a thing i can write or not

#

i am a poison

timid quartz
spare quartz
#

then why're you prompting it to me 😭

timid quartz
#

Use that website find the spec find out what you can do

timid quartz
spare quartz
#

if it's really .NET i can't do much of it in the way of learning

#

aside from just "using it like a normal language" which is booooooorrrinnng

timid quartz
#

.NET is open source dummy

spare quartz
#

okay yes but what does that mean exactly

#

like if you were to write a .NET runtime in, i dunno, lua

#

could you reasonably run IR C# code on it?

timid quartz
#

And if you’d even read the website

spare quartz
#

yes but you're missing the point

timid quartz
#

ATP you’re literally blind

spare quartz
#

i AM BLIND

timid quartz
#

It says it’s all defined in public standards

spare quartz
#

okay yes i get that aera

#

but it also needs to be an ACM that i can reasonably write

timid quartz
#

so like read them ik you love reading standards

spare quartz
#

otherwise you're asking me to write gcc

timid quartz
#

I never said to write it

#

I just said study it

spare quartz
#

you're... asking me to read it..??

timid quartz
#

You could study it by writing it or writing IR for it or just reading the standards

#

I’m curious what a smarter person than me thinks about it

spare quartz
#

hold on

timid quartz
#

After like studying it

spare quartz
#

okay this is something i can work off of

timid quartz
#

there u go

spare quartz
#

i can't just "read a specification" without writing something for it

timid quartz
#

ok so like write byte code idk

#

write whatever u want

spare quartz
#

wait

#

how do you think i even made my jvm in first place

#

do you think i just wrote the jvm bytecode by hand

timid quartz
#

¯_(ツ)_/¯

#

You probably stole precompiled Java

#

Or made your own

#

By using javac

spare quartz
#

i compiled .java files into .class and read that into the jvm

#

now what im hoping i can do here is

#

use whatever this document describes in a compiler to turn C# into IR

#

and then feed that into an ACM with... this "CLR" thing

#

but thats later since acms are crazy complex

#

you guys gotta stop polluting acronyms

timid quartz
#

heheh

timid quartz
#

what is

spare quartz
#

abstract computing machine

#

fancy word for virtual machine

#

but not a virtual machine explicitly since it could also mean an embedded chip or whatever

timid quartz
# spare quartz but not a virtual machine explicitly since it could also mean an embedded chip o...

Common Intermediate Language (CIL), formerly called Microsoft Intermediate Language (MSIL) or Intermediate Language (IL), is the intermediate language binary instruction set defined within the Common Language Infrastructure (CLI) specification. CIL instructions are executed by a CIL-compatible runtime environment such as the Common Language Runt...

#

boo

#

Go to the example part

spare quartz
#

mobile wikipeid a ,,1,1,

#

example..

#

yeah this is something i can do

timid quartz
spare quartz
#

but not now .

timid quartz
#

now!

spare quartz
#

i might be able to write a jvm in a week but this??

timid quartz
#

make scpsl run in it

spare quartz
#

i dont even know what 99% of this is-

spare quartz
timid quartz
#

boo…

#

still C# so still CIL at some level id imagine

#

guess I’ll HAVE to make the exe reader also be an exe loader

spare quartz
#

well

#

noooooottt a loader

#

you'd need to make a decompiler from .EXE into CIL which

#

really i couldn't even tell you how you'd do that

timid quartz
#

to make it run

spare quartz
#

oh?

#

is that serious or j

timid quartz
#

since you couldn’t make it run in any CLR you make

#

or rather CIL interpreter

timid quartz
#

or figure out how to load it myself

spare quartz
#

well lmk how it goes if you do it

timid quartz
#

ngl I have no clue where to start

spare quartz
#

depending on how much control you're able to allot you could intercept some of the library loading and make a faux-wine

timid quartz
#

oh I was thinking of being cheap and just screaming at the windows loader to do it all

spare quartz
#

isn't that basically equal to just like

#

System.Os_Lib.ShellOrWhatever("./...exe")

#

... weeeeeellllllll

#

that could actually be a fun project, loading a EXE/DLL file, and being able to run a function in it or using the start position if available

#

something like RunDll32

timid quartz
#

I wanna see if I can talk more directly to the loader though

spare quartz
#

looks like you'll wanna link to IMAGEHLP.DLL

lyric mesa
spare quartz
#

no way

#

ancient code

#

#975913402453086228 message

timid quartz
#

@spare quartz there’s a pixel phone vending machine in the airport 😭

#

I could get an 8a for $399

#

Which is discounted

spare quartz
timid quartz
lavish dove
timid quartz
spare quartz
#

PHYSX WORKS!!!!

#

we had to pull a few hacks (this class is completely reflective) but it works

timid quartz
spare quartz
#

see lines 25-124 for classloader details

#

i don't think the codes harder to read as apart of the CL stuff we have to do, it's just... "weird"

timid quartz
#

What platform is this even for, fabric?

spare quartz
#

neoforge

spare quartz
#

because we cannot put our physx libraries in the mod classloader we have to make our own, then load the self reference in, and load the aforementioned class so it can use our classloader to see the physx stuff

timid quartz
spare quartz
#

... no??

#

normal forge was obsoleted in favor of neoforge by everyone

#

because the guy who made it acted like a dick and every developer left

#

and fabric is infuriating to develop for

timid quartz
#

At least you don’t have to do…whatever it is that you are doing

#

I thought fabric was supposed to be better to develop for anyways

spare quartz
spare quartz
timid quartz
spare quartz
#

thats not the problem

timid quartz
#

:333

#

Cmon if it’s ok for Ada

#

And Nix

spare quartz
#

"they don't give you much of anything to work on" means you have no source code

timid quartz
#

o…….h

spare quartz
#

you have to use the decompiled minecraft code

timid quartz
#

Ok there u go ^_^

spare quartz
#

which is annoying as hell cause microsoft just loves to do this thing where they scrub out all of the comments

#

and if you have no mappings/incomplete ones

#

the argument names also dont exist

#

ah yes please give me m_49324

#

m_14952 is surely good to use with m_53295

timid quartz
#

@spare quartz mfw

spare quartz
#

those aren't microsoft written javadocs

#

those are community made ones which

  • aren't complete 99% of the time
  • are conjecture
#

just understand this isn't as simple as what it looks like on the surface

#

adding a block/item... simple, doing anything more? figure it out

#

but something like

#

totally untyped

#

(dynamic call sites dont even have the proper names)

timid quartz
spare quartz
#

i will beat you to a bloody pulp

#

example of poor fabric documentation: the models have no simplifications like they do in neoforge, just stuff that only a microsoft dev would know

spare quartz
#

anywyas uh

#

what was the doing again

#

Blaze3D?

spare quartz
#

hmm

#

saving this here for a future project

#

(audio interception so my computer can use "bluetooth" without having a bluetooth card)

spare quartz
timid quartz
#

@lyric mesa

spare quartz
#

oh god

#

liking one post

#

algos thinking my life depends on it now..

lyric mesa
spare quartz
#

this answers based as hell

#

4th one is also based

timid quartz
#

@spare quartz should I host my own bluesky server

spare quartz
#

changing your handle or an ATProtocol server

#

hehe ATProtocol

#

:3

timid quartz
#

atprotocol server

#

like

#

a personal data server

spare quartz
#

sure if you can manage it

timid quartz
#

I don't think my hetzner vps has much more capacity left

#

between qso bot qiad bot and the matrix server