#dev-general

1 messages ยท Page 309 of 1

surreal quarry
#

very cool!

jovial warren
#

no reason why that should give me a 401

prisma wave
#

yes

#

only $59.99!

#

per project

onyx loom
#

๐Ÿฅฒ

prisma wave
#

per version

#

per day

surreal quarry
#

lmao per version charge

jovial warren
#

I mean, I already have an account on BM's repo, but I wanted to try out central for this

#

kinda regretting my decision now ngl

surreal quarry
#

coming soon to Komponent

#

also isn't 401 when your user/pass is wrong

onyx loom
#

just use jitpack ๐Ÿ™‚

prisma wave
#

depends

jovial warren
#

it ain't bloody wrong though

lunar cypress
#

Jitpack sucks though

ocean quartz
onyx loom
#

not on my watch!

#

have u ever seen how easy it is to use jitpack!

surreal quarry
prisma wave
#

epm repositories

jovial warren
#

might use Indra ngl

prisma wave
#

yes use jitpack

jovial warren
ocean quartz
#

Host nexus on your localhost open your port and share your ip ez

prisma wave
#

so smart!

jovial warren
surreal quarry
#

thats so smart!

prisma wave
#

do it in haskell

onyx loom
#

why has no one ever thought of that matt

surreal quarry
#

Wow! There's a docker image for sonatype nexus 3! Who would have imagined.

prisma wave
#

artifact <- fetchArtifact "elara"

jovial warren
#

epm fetch bombardygamer/minelara xD

prisma wave
#

imagine if every language had the bind operator

#

that would be good

lunar cypress
#

Repo that's only reachable when you're online sounds like an awesome idea

surreal quarry
#

Just leave your computer on all night

onyx loom
#

exactly!

surreal quarry
#

!!

prisma wave
#

just get a raspberry pi smh

onyx loom
#

not to mention that ur giving out ur ip directly!

prisma wave
#

or make a plugin to do it and then host it on server.pro ๐Ÿ™ƒ

lunar cypress
#

Oh my god

prisma wave
#

i wonder if that's actually possible

#

i guess the only issue would be a port

surreal quarry
obtuse gale
#

Windows 10 be like "How likely are you to recommend Calculator App to a friend or colleague?"

prisma wave
#

linux be like exists

jovial warren
#

mavenUsername='BomBardyGamer' well that might explain my issues

surreal quarry
#

docker volumes look very cool

#

might need to start using these

#

instead of paths in my home directory lmfao

onyx loom
#

mention docker and ull summon lemmo

jovial warren
#

guess what

#

it worked

surreal quarry
#

how do i summon a dad

onyx loom
#

๐Ÿ˜ณ

half harness
#

oof i restarted intellij but it didn't open

#

and hasn't been opening for like the past 5 minutes

#

welp

obtuse gale
#

log out and log back in

half harness
#

log out?

#

of what?

obtuse gale
#

windows user

half harness
#

oh

#

welp time to close all 10 apps

#

just logout?

#

not restart?

obtuse gale
#

mhm

half harness
#

k

#

thx

#

yay it works ๐Ÿฅณ

jovial warren
#

I've changed my mind, publishing to Maven Central ez

#

just gotta set everything up right

lunar cypress
#

yep keep telling yourself that

#

you will change your mind very quickly whenever you use a different language and deploy there

jovial warren
#

attempt #2 btw

#

attempt #1 failed because my key wasn't on a verified key server lol

#

and here we go, it's released

surreal quarry
#

over an hour to deploy lol

jovial warren
#

you mean over 2

#

over 3

surreal quarry
#

over 1 since i tried helping

#

but i guess more than that lol

jovial warren
#

I got the response that I was allowed to use this at 18:35 lol

surreal quarry
#

lmao

jovial warren
#

efe!

#

how's it going? lol

#

@ocean quartz btw, after you've posted a comment saying you've published your component, is it manual verification or what?

ocean quartz
#

Uh i don't remember

jovial warren
#

yours was automatic, but it took a couple of hours

#

just wondering

obtuse gale
#

what the fuck

jovial warren
#

tf?

#

you talk to some weird people

obtuse gale
#

Efe this is Development General

#

Not configuration help

ocean quartz
#

^

jovial warren
lunar cypress
#

call 110

jovial warren
#

110?

surreal quarry
#

its probably their emergency number

jovial warren
#

EU?

lunar cypress
#

112 is general emergency in all of EU

#

110 is not

ocean quartz
#

Yeah, for us it works for everything you call and explain and they'll send accordingly

jovial warren
#

ยฏ_(ใƒ„)_/ยฏ

#

we just have 999 for emergencies

surreal quarry
#

bruh

#

911 > 999 objectively

ocean quartz
#

911 works in EU too since tourists sometimes don't know the emergency number of the country

jovial warren
#

111 for non-emergency NHS, and 101 for non-emergency police

#

and then if you want to report something to the local police, you just ring their landline number

surreal quarry
#

emergency numbers seems like a thing that should be standardized lol

lunar cypress
#

yes but you can still call it for any emergency, they will redirect you

lunar cypress
#

mainly so you have a single number across many countries that people can memorise

jovial warren
#

get in there

#

Komponent now on Central

surreal quarry
jovial warren
#

welcome to the requirements

#

all your shit has to be signed with a GPG key

surreal quarry
#

yep

ocean quartz
#

I hate it

jovial warren
#

that's what the ASC files are for

#

I love the idea of signing your shit for verification

#

that's an amazing idea

obtuse gale
jovial warren
#

I just googled "Maven Central" and that's what I found lol

#

right, that's adventure replaced

#

time to replace adventure NBT lol

surreal quarry
jovial warren
#

lol

lunar cypress
#

switches to clojars

jovial warren
#

"clojars"?

surreal quarry
#

its a clojure artifact hosting site i think

#

possibly maintained by clojure?

jovial warren
#

wow, I didn't know trash languages made that sorta stuff

lunar cypress
#

it's a maven repo

#

reject evolution bardy

#

send me a fax tomorrow

#

after you've signed the maven central contract by hand

prisma wave
#

clojars ๐Ÿ˜

#

nuget is actually really good

jovial warren
prisma wave
#

so much more convenient than maven

#

or gradle for that matter

jovial warren
lunar cypress
#

I do wonder

prisma wave
#

also im 50 minutes through that haskell ivory tower video

lunar cypress
#

with clojars I just type lein deploy and I'm done fingerguns

prisma wave
#

i must say it's very interesting

jovial warren
#

also, anyone got any CI recommendations btw?

surreal quarry
jovial warren
#

debating whether to self-host Jenkins again or go for a cloud hosted one

surreal quarry
#

i assume you still need to configure some stuff

prisma wave
#

everything's easy compared to central

surreal quarry
#

yea ik

#

im saying compared to publishing on a self hosted repo for example

#

like if i wanna deploy an api for a plugin, i just run gradle publish. i had to do some minor setup initially so it knows my credentials and stuff, but now that its setup its just one command

#

im assuming clojars is similar

jovial warren
#

also, me using Central means I don't have to worry about allocating 4 cores and 8 GB RAM just to host Nexus lol

prisma wave
#

you just put username and password and url in ~/.lein/init.clj and it works

#

from what i can see

#

not speaking from experience

surreal quarry
#

yea this does look pretty easy

lunar cypress
#

yeah you just get a one time token and you're done

jovial warren
#

also, can I get some feedback on the Komponent DSL?

#

is ```kotlin
component {
translation("key") {
children {
text("I am text! I am part of the with of the translation component above!")
}
}
}

#

tempted to just have xComponent (e.g. textComponent, translationComponent, etc.) instead of component, to avoid having to throw an UnsupportedOperationException when someone tries to define 2 root components

#
textComponent("I am text!") {
    color = NamedColor.BLACK
    formatting {
        bold = true
        italic = true
    }

    text("I am a child of my parent!")
}
```thinking this is a bit cleaner
distant sun
#

translation as in text depending on the client language?

jovial warren
#

yeah

distant sun
#

nice

prisma wave
#

considering the focus on DSLs in kotlin, it is surprising that there's not much type safety with them

#

not type safety

#

you know what i mean

#

static checking

jovial warren
#

static checking?

#

wat dis

prisma wave
jovial warren
#

ah

#

feedback on DSL pls ๐Ÿ™‚

prisma wave
#

fine

#

i dont have much to say about it

jovial warren
#

top vs bottom

prisma wave
#

comparing apples and oranges

jovial warren
#

wdym?

#

how is that like comparing apples to oranges?

prisma wave
#

theyre different?

jovial warren
#

nah

lunar cypress
#

is "apples and oranges" a thing?

surreal quarry
#

yea people say that

prisma wave
#

i hope so

#

otherwise im gonna look like an idiot

jovial warren
#

maybe just a British thing

surreal quarry
#

we say it in the US

prisma wave
#

anyway, there's not an obvious difference between the 2, because they're different

lunar cypress
#

no, but I haven't picked up all the collocations native speakers use yet

prisma wave
#

o wtf my monospaced discord font just changed

jovial warren
lunar cypress
#

I was just interested here because it's "apples and pears" in my language

jovial warren
#

the land of the dummies

surreal quarry
#

๐Ÿฅฒ

prisma wave
#

i think it's said here sometimes though

surreal quarry
#

also bardy it seems like your dsl could get very "arrow codey," but i might be misunderstanding it

prisma wave
#

yeah that seems to happen pretty regularly with DSLs

#

consider using EDN instead ๐Ÿ™‚

jovial warren
#

that's why I suggested option #2

surreal quarry
#

could you do it similar to this where its like in order is how it gets added instead of each "node" has children

#

why am i doing my ifs like that

#

lmao

jovial warren
#

I don't like the Bungee component DSL

#

or whatever tf that is meant to be

#

the bungee component builder is horrible

surreal quarry
#

thats just calling .apply on a ComponentBuilder lol

jovial warren
#

.append().bold(true) always confuses me

#

and things like that

prisma wave
#

@lunar cypress Do you know if there's a reason why in clojure and many other FP langs, lists don't provide random access by default? (instead having distinct vector, array, etc types). I assume the reason is that the persistent implementations are something like a linked list, but could you confirm? not sure how to google this lol

lunar cypress
#

well they usually do, don't they?

prisma wave
#

not in constant time i mean

#

or do they?

#

if so, what's the point of vectors / arrays?

lunar cypress
#

yeah that's implementation detail

#

I suppose what you're asking is why linked lists are the default

prisma wave
#

yeah

jovial warren
#

@prisma wave btw, for commands, we gonna use Brigadier? or we going for our own custom systemโ„ข๏ธ?

prisma wave
#

idk lol

#

brigadier is probably easiest

jovial warren
#

I mean, used by pretty much every other impl

surreal quarry
#

brigadier is good

jovial warren
#

as I think just about everyone's said before, looking for an alternative to open-source software is just dumb

#

gonna need to add a DSL to that though

#

because builders ew

lunar cypress
#

well that's mostly because they're the most basic (and often cheapest) immutable data structure you can think of. But there's usually a bit more to this, most notably laziness

jovial warren
#
LiteralCommandNode<?> timeCommand = LiteralArgumentBuilder.literal("time")
        .then(LiteralArgumentBuilder.literal("set")
                .then(LiteralArgumentBuilder.literal("day"))
                .then(LiteralArgumentBuilder.literal("noon"))
                .then(LiteralArgumentBuilder.literal("night"))
                .then(LiteralArgumentBuilder.literal("midnight"))
                .then(RequiredArgumentBuilder.argument("time", IntegerArgumentType.integer())))
        .then(LiteralArgumentBuilder.literal("add")
                .then(RequiredArgumentBuilder.argument("time", IntegerArgumentType.integer())))
        .then(LiteralArgumentBuilder.literal("query")
                .then(LiteralArgumentBuilder.literal("daytime"))
                .then(LiteralArgumentBuilder.literal("gametime"))
                .then(LiteralArgumentBuilder.literal("day"))
        ).build();
```๐Ÿคฎ
#

beautiful in Java, disgusting in Kotlin

lunar cypress
#

In Haskell lists are lazy, and in clojure you typically don't deal with lists but rather lazy sequences which are very similar in structure

prisma wave
#

i see

surreal quarry
prisma wave
#

is there not a persistent list implementation that also provides constant random access? or is there just no point

lunar cypress
#

but one of the most beautiful thing about them is definitely that you get an immutable data structure where insertion and removal is O(1) for both time and memory

prisma wave
#

yeah that's very cool

lunar cypress
prisma wave
#

huh okay

lunar cypress
#

I don't know what haskell has to offer, but Clojure uses a tree-like structure for vectors to make immutability cheap. It's "good enough" in most cases but not technically O(1)

prisma wave
#

Haskell possibly has something more efficient

lunar cypress
#

I believe in the case of vectors it's O(log n), but in practice the base of the logarithm is 32 so you pretty much approach constant time

prisma wave
#

oh yeah I think I remember watching a video on that

#

okay that makes sense, ty

#

in that case it would probably be a very good idea for Elara to have some sort of native lazy sequence, right?

jovial warren
#
literalCommand("time") {
    literalArgument("set") {
        literalArgument("day")
        literalArgumen("noon")
        literalArgument("night")
        literalArgument("midnight")
        requiredArgument<Int>("time")
    }
    literalArgument("add") {
        requiredArgument<Int>("time")
    }
    literalArgument("query") {
        literalArgument("daytime")
        literalArgument("gametime")
        literalArgument("day")
    }
}
#

now that's what you call a DSL

lunar cypress
#

some sequence interface would be good, yeah

prisma wave
#

alrighty

#

i think i had a small idea for them, but i didn't realise just how important they were

lunar cypress
#

I actually think clojure data structures might beat haskell ones

prisma wave
#

oh interesting

#

how come?

lunar cypress
#

just a guess because a lot of research and time went into Clojure's data structures to make them practical and able to compete with mutable ones

#

while haskell focuses more on purity

prisma wave
#

yeah i've heard there's some overhead from some of the things they do

#

makes sense

#

i would've guessed Haskell's are faster because they aren't tied to a VM so there's more potential for optimisation

#

but maybe not

lunar cypress
#

but idk. Haskell can perform pretty well and it's hard to compare because of the different runtimes

prisma wave
#

yea there's probably not a huge difference either way

#

haskell would have the advantage of being native + statically typed though

jovial warren
#

Elara should be native

#

screw the JVM

prisma wave
#

JVM first

#

i wanna try do a native impl at some point

#

but that would require a lot more thought

jovial warren
#

I write assembly for it xD

#

or C

#

one of the two

lunar cypress
#

writing an entire runtime is not an easy thing to do

prisma wave
#

yeah definitely not

#

and we would have to consider a lot of the finer details too

lunar cypress
#

and it most definitely should not be done before the reference implementation is mature enough

prisma wave
#

^^

#

native once we're out of ideas and all the dust has settled

lunar cypress
#

i.e. never

prisma wave
#

๐Ÿฅฒ

#

maybe in like

#

10 years

lunar cypress
#

If you write to existing runtimes there's usually ways to do native anyway

#

GraalVM works pretty well for Clojure as an example

prisma wave
#

yea

#

that's boring tho

jovial warren
#

hopefully I'll have learned x86 assembly by then

#

and/or C

prisma wave
#

learn rust ๐Ÿ™‚

#

serious conversation is over, it's circlejerk time

lunar cypress
#

yeah have fun writing a compiler for every target out there bardy

jovial warren
#

NASM's pretty nice

prisma wave
#

Elara on ARM

#

that would be cool

lunar cypress
#

that's why you scratch assembly and write to LLVM

jovial warren
#

I'd have to write NASM Linux x86, Linux ARM, MASM and AT&T

#

I think

#

AT&T though

#

fuck that

prisma wave
#

"Not configuration help"

jovial warren
prisma wave
#

i have had an idea that might be cool

#

currying but for all of the parameters

#

"total application"?

#

for example f :: a -> b, totally applying f would return a function () -> b

lunar cypress
#

foo(bar, _, baz, quz, _)

prisma wave
#

hmm?

lunar cypress
#

just jamming here

#

arbitrary currying

prisma wave
#

is that already a thing

lunar cypress
#

idk, I mean it's all just a lambda with extra steps

prisma wave
#

yeah true

lunar cypress
#

or with less steps lol

prisma wave
#

yeah i guess it's not that useful

#

especially not in a pure lang

#

in haskell couldn't it just be a "variable" of type b?

#

since it would be lazily evaluated

lunar cypress
#

no

#

you wouldn't get a function back if you passed all params

prisma wave
#

if, for example it was a random number function rand :: Int -> Int, hs randInt = rand 30 would be the same thing as ```hs
randInt () = rand 30

lunar cypress
#

I don't think so

#

yeah it's what I meant

#
Prelude> foo x = x + 5
Prelude> foo1 = foo 5
Prelude> :t foo1
foo1 :: Num a => a
Prelude> foo2 () = foo 5
Prelude> :t foo2
foo2 :: Num a => () -> a
prisma wave
#

ah yeah i see

#

they have slightly different semantics

lunar cypress
#

not just slightly

#

one defines a function because of the empty parameter list

#

the other calls a function and defines a variable with the returned value

prisma wave
#
a1 = 3
a2 () = 3
``` these are both functionally equivalent though, right? the only difference is that `a2` requires `()`
#

would something like replicateM 10 a1 evaluate 3 every time?

lunar cypress
#

isn't that for monads

prisma wave
#

yeah it is

#

i keep forgetting lol

jovial warren
lunar cypress
#

they're still different types, I don't think you can pass a scalar as a function

prisma wave
#

map a1 [1..10] wouldn't compile then

#

actually neither of them do

lunar cypress
#

yeah

#

If you made a2 take one parameter that is discarded it would be equivalent to const 3

prisma wave
#

yeah

#

i guess take 10 $ cycle a1 works

#

whereas with a2 it doesn't

lunar cypress
#

yes bcs types

prisma wave
#

mhm

#

okay i see

#

do you know if there's a reason why the language actually distinguishes between the 2? since a scalar could be converted to a function taking unit and vice versa

#

i think

#

i guess in the case of stuff like random numbers where there would be a noticeable difference, that's covered with monads

lunar cypress
#

because there is no benefit to convoluting those concepts

#

it only creates ambiguity

prisma wave
#

fair enough

lunar cypress
#

at least the way the language is structured wouldn't profit from it

prisma wave
#

i see

#

i am starting to understand / appreciate this

#

it's very clever

obtuse gale
#

still need help setting the module sdk through gradle

forest pecan
#

for some reason my intellij is freaking out and cant recognize dependencies

#

like it cant recognize import statements either

surreal quarry
#

invalidate & restart

forest pecan
#

i already tried that

#

lmao

ocean quartz
#

That moment when your code works fine, you stop working on it for a bit to add another part then go back to it and it no longer works

distant sun
#

:))

jovial warren
#

familiar feeling

#

trying to think if ```kotlin
textComponent("I am text!") {
color = NamedColor.BLACK
formatting {
bold = true
italic = true
}
clickEvent = openURL("https://example.com")
hoverEvent = showText("I am hover text!")

text("I am child text!") {
    color = NamedColor.WHITE
}

}
better than kotlin
component {
text("I am text!") {
color = NamedColor.BLACK
formatting {
bold = true
italic = true
}
clickEvent = openURL("https://example.com")
hoverEvent = showText("I am hover text!")

    children {
        text("I am child text!") {
            color = NamedColor.WHITE
        }
    }
}

}

distant sun
#

if you can add showItem without having to deserialize the item then you are gud

#

@jovial warren look at this smh

jovial warren
#

wdym without having to deserialise the item?

#

the way I serialise and deserialise any type of hoverevent content is proper hacks.exe

#

lemme show you

distant sun
#

well

#

last time I was looking at how to show an item on hover

jovial warren
distant sun
#

I had to use nmshit

jovial warren
#

but I've left that out for now

#

until me.bardy.nbt is made lol

distant sun
#

nike

#

I kinda like exposed tbh

jovial warren
#

good

#

@prisma wave stfu

#

just because you prefer Hibernate over Exposed

#

because somehow Hibernate is better for Kotlin

prisma wave
#

I prefer raw SQL queries to whatever tf exposed is trying to be

jovial warren
#

Exposed is amazing

prisma wave
#

It's so ugly

jovial warren
#

and?

#

since when did you give a fuck about ugly?

distant sun
#

how does hibernate looks like

prisma wave
#

Since always

jovial warren
#

Mr. <$> .:

distant sun
#

fr

prisma wave
#

Those aren't ugly

jovial warren
prisma wave
distant sun
#

yes, that's hideous

ocean quartz
#

Actually been using exposed and quite like it

jovial warren
#

see

#

Exposed good

distant sun
#

example bm

jovial warren
#

Hibernate (for Kotlin and non-Spring) bad

prisma wave
#

I'm on mobile

distant sun
#

that's so bad

prisma wave
#

Cba to find an example

jovial warren
#

gimme a min

prisma wave
#

You just write a data class and add a few annotations

#

That's it

jovial warren
#

I'll do it for you

prisma wave
surreal quarry
#

Thats a VERY good guide.

prisma wave
#

I know right!

ocean quartz
distant sun
#

@get:GeneratedValue what's up with the @get:

jovial warren
#
@Entity
data class Player(
    @Id val id: Int,
    val uuid: UUID,
    val name: String,
    val kills: Int
)
```iirc
#

but Hibernate is massive

prisma wave
jovial warren
#

says Mr. <$> .:

surreal quarry
#

$<#>@:: :.

#

good

jovial warren
ocean quartz
#

Exposed:

object Users : Table() {
    val id = integer("user_id").autoIncrement()
    val name = varchar("name", 50)

    override val primaryKey = PrimaryKey(id, name = "pk_user_id")
}
prisma wave
#

That's not really a fair comparison

distant sun
#

yeah let's just use all symbols we have

prisma wave
#

.: comes from a library

distant sun
#

they are there for a reason

prisma wave
#

That's not a standard thing

distant sun
#

and what does it mean bruh

prisma wave
#

idk

jovial warren
prisma wave
#

Some sort of custom operator for serialization

distant sun
#

why do people hate themselves and write languages like that

jovial warren
#

also, why you defining an id there?

ocean quartz
prisma wave
#

<$> probably comes from the mathematical definition of a functor, since that's what it operates on

jovial warren
#
object Users : IntIdTable() {

    val name = varchar("name", 50)
}
#

what are you doing with your life Matt

#

honestly

#

get on my level

ocean quartz
distant sun
#

that low?

#

๐Ÿคฃ

jovial warren
#

IntIdTable ain't deprecated

surreal quarry
distant sun
#

:))

surreal quarry
#

never used it but it looks like thats how they want it done

ocean quartz
#

I prefer to have my pk declared

jovial warren
#

IntIdTable automatically declares your ID field and PK for you

distant sun
#

unacceptable!

ocean quartz
#

Like i said i prefer to have it there visible lol

jovial warren
#

fair

jovial warren
#

lol

prisma wave
#

how exactly is this better than a data class + an annotation

ocean quartz
#

Hell yeah

jovial warren
#

more idiomatic

distant sun
plain sleet
#

Hello, I wish I could reload my plugin by storing a Multimap in a config.yml file and retrieve them afterwards, but I can't ... please help me.

jovial warren
#

actually it's not more idiomatic, that's a lie

ocean quartz
#

I find it ugly but i like it more than hibernate

prisma wave
distant sun
#

where is the ugly party

prisma wave
jovial warren
#

us normal people don't mind a bit of imperative programming

distant sun
#

return Answer(LongLong.MAX_VALUE times better)
happy now?

prisma wave
#

This is literally declarative

distant sun
#

c has long long iirc

prisma wave
#

Pretty much anything SQL based is declarative

#

SQL itself is a declarative language

distant sun
#

lanfguags

steel heart
#
let x;
if (you) {
  x = me
} else { 
  x = you

}```
prisma wave
#

Shut

steel heart
#

noice

ocean quartz
#

Dgraph is what's hot

distant sun
#

Matt is hot

ocean quartz
#

๐Ÿ˜ณ

steel heart
#

graphql

distant sun
#

graphsql looks interesting but cant find an use for it rn

ocean quartz
prisma wave
#

graphql is overkill for a lot of projects

#

on the server side I mean

#

On the client side it's great

steel heart
quiet depot
#

whats graphql

#

I canโ€™t remember

#

lemmo suggested I use it on docdex and I briefly looked into it

prisma wave
#

a query language

quiet depot
#

well more specifically I looked into neo4j, I think theyโ€™re related

prisma wave
surreal quarry
#

those videos are so satisfying to me

prisma wave
#

Ikr

#

They're so good

surreal quarry
#

yea he does a great job

steel heart
#

fireship

quiet depot
#

aight iโ€™m gonna implement that for docdex

steel heart
#

pog

prisma wave
#

It's very cool

#

Particularly in static languages

#

Since you can do codegen with it

half harness
#

also they make 1 sentence like 20 lines

#

unreadable

onyx loom
#

?

half harness
#

๐Ÿ™„

celest phoenix
#

We're would I go for spigot dev support?

ocean quartz
celest phoenix
#

Gotcha ty

distant sun
hot hull
#

Butiful

prisma wave
#

Damn everyone in kyori discord trash talking pdm๐Ÿ˜”

#

It's valid criticism but still hurts

frigid badge
#

show them screenshots

prisma wave
#

of what lol

frigid badge
#

of them trash talking ๐Ÿ™‚

prisma wave
#

o right

frigid badge
#

make my morning good

regal gale
distant sun
#

cant do "012345".indexOf(c) == -1 or smth like that?

regal gale
distant sun
#

isnt like you download a dependency every 5 minutes

prisma wave
#

I mean if a big plugin used it, it might

#

But it uses central mirrors anyway

#

Me and glare both host one

distant sun
#

does it not download the dependencies on startup?

prisma wave
#

Yeah it does

#

But there are probably enough people using something like Essentials so it's equivalent

old wyvern
#

Not sure what they are complaining about tbf

prisma wave
#

Lack of relocation mostly

old wyvern
#

Ah

prisma wave
#

Which is obviously an issue

old wyvern
#

What do they mean about calling ClassLoading a "hack"

#

'apend to classpath hack'

prisma wave
#

Not sure actually

#

I asked them what a better option would be

old wyvern
#

ah

#

Also, any idea how hard erlang would be compared to haskell?

prisma wave
#

Probably easier

#

Erlang is designed to actually be useful

old wyvern
#

How about comparitive to Java?

prisma wave
#

But why not learn Elixir?

old wyvern
#

Is Elixir on BEAM?

prisma wave
#

BEAM ?

old wyvern
#

I was just asked to use Ejaberd so I assume any language on BEAM works

old wyvern
prisma wave
#

Oh yeah

#

As far as I know Elixir compiles to the same thing Erlang does

old wyvern
#

Also fully interoperable?

prisma wave
#

No idea

#

But there's probably some interoperability

quiet depot
#

was haskell not designed to be useful?

old wyvern
#

Its more of an academic language piggy

quiet depot
#

o

#

is that why you're learning it?

#

or just fp fanboy

prisma wave
#

it can be useful

#

It's just not designed to be

distant sun
#

any idea how can I design a config system that extends YamlConfiguration or something?

prisma wave
#

Most of the old fp languages were just made for academics to circlejerk over type theory

quiet depot
#

gaby yamlconfiguration is an impl

#

I don't think you're meant to extend it

#

and why would you want to?

#

this might be an xy problem

distant sun
#

was trying to get a config class that I can use without configClass.getYaml().getString()

old wyvern
#

Im just trying to learn something different

quiet depot
#

gaby simply don't use bukkit's config api

#

make your own objects

#

and use snakeyaml directly

distant sun
#

uhh

distant sun
#

for a chat filter, would be ok to have a list of regex patters and check if one matches instead of a big ass regex?

hot hull
#

Would it even affect the speed at all

old wyvern
#

I believe there is a limit per message?

distant sun
#

256

#

probably not as in is not good or it won't matter xd

#

@old wyvern

#

also, where would I run this benchmark ๐Ÿ˜ฎ

lunar cypress
#

jbench

#

random messages

#

if you're really interested

hot hull
#

Random message generator reversed_fingerguns

lunar cypress
#

doesn't matter though

#

it's not significant

distant sun
lunar cypress
#

and it's a reasonable change otherwise

frigid badge
#

@quiet depot interesting, we don't use aws at work so no worries gladly.

quiet depot
#

ah that's too bad

#

u could've hijacked ur company and held them for ransom

#

personally, it's one of my favourite pastimes

frigid badge
#

lmao

#

I already have access to everything anyway

quiet depot
#

perfect

#

what are you waiting for?

frigid badge
#

lmao

old wyvern
#

@prisma wave btw bm how does pdm remove the need to relocate?

#

I just noticed that while reading through the kyori logs a bit earlier

prisma wave
#

it doesnt exactly

#

i think i wrote that part of the readme before i realised how important relocation was

old wyvern
#

ah, I think that part is what led them to the 'classloader' hack part

prisma wave
#

probably

old wyvern
#

They seem to have assumed you use an isolated classloader

prisma wave
#

yea

old wyvern
#

so other plugins taking in dependencies from this plugin would have issues

#

or something similar

#

Actually that shouldnt matter hmm

hot hull
#

Yugi, do you plan on playing wf consistently? Cause if yes I got some shit for you

old wyvern
#

Yes

#

Ill play after class today

hot hull
#

K neat

unkempt tangle
#

Senpai

#

Make ur own gb game

#

TWITCH: https://www.twitch.tv/mortmort
Tools, Hardware, Software & Socials in the Description

โ™ฆ๏ธ โ™ฆ๏ธ โ™ฆ๏ธ โ™ฆ๏ธ โ™ฆ๏ธ โ™ฆ๏ธ โ™ฆ๏ธ โ™ฆ๏ธ โ™ฆ๏ธ โ™ฆ๏ธ โ™ฆ๏ธ โ™ฆ๏ธ โ™ฆ๏ธ โ™ฆ๏ธ โ™ฆ๏ธ

Website: https://www.mortmort.net/
TWITTER: https://twitter.com/MortMort_
INSTAGRAM: https://www.instagram.com/mortmort__
ITCHIO: https://mortmort.itch.io/
Discord: https://discord.gg/6qpKjzC
PIXEL MERCH: h...

โ–ถ Play video
old wyvern
prisma wave
#

that is beautiful

hot hull
#

hAsKeLl

prisma wave
#

what does the .: do? i saw it's from that json library

old wyvern
#

๐Ÿฅฒ Almost 2 days of work to finnaly understand how to resolve all that xD

prisma wave
#

is it just for getting an element in the json?

old wyvern
prisma wave
#

ah makes sense

#

looks pretty clean tbh

old wyvern
#

mhm

#

Was pretty large, had to rewrite the function to shorten it once I actually got it to compile

#

๐Ÿฅฒ

prisma wave
#

lol nice

#

better than unpredictable runtime errors i guess

old wyvern
#

yea I guess so

prisma wave
#

same with rust

old wyvern
#

this would just end up with a Nothing if any of the calls fail

prisma wave
#

very nice

old wyvern
#

(from a dummy acc ofc)

prisma wave
#

yea

#

looks good

#

and pure ๐Ÿ˜

#

mostly

old wyvern
#

xD

hot hull
#

cute

static zealot
#

xD

prisma wave
#

i alreayd got that one lol

static zealot
#

oh ok

#

oh it is that old xD

#

no one removed it

#

thought its new didn't even look at the hour

jovial warren
#

lol

old wyvern
prisma wave
#

wtf

#

dont disrespect clojure like that

old wyvern
#

๐Ÿฅฒ

prisma wave
#

also ruby is insanely easy

#

it's like python just slightly nicer

old wyvern
#

I have never used it tho ๐Ÿคท

prisma wave
#

me neither

#

apart from once for COC lol

old wyvern
#

xD

#

I have rubymine installed but never took the time to try it yet

prisma wave
#

yea i think ruby is dying anyway

#

it's not that popular anymore afaik

old wyvern
#

ah

#

What about elixir?

prisma wave
#

idk

#

still seems pretty popular

#

discord and whatsapp both use it afaik

old wyvern
#

I see

steel heart
#

its noice

half harness
#

๐Ÿ˜ฎ i have an awesome idea to do with my new javafx skills
||an app to make a minecraft server (just the files, nothing like a start/stop button)||

jovial warren
#
text("I am text!") {
    color = NamedColor.BLACK

    text("I am child text!")
}
```how dis look
#

actually lemme edit that

#

how dat look

#

having text on the top level seems like it could take away from other functions

hot hull
#

This would be applied to which text?

color = NamedColor.BLACK

half harness
#

uhhhhhh

#

||nooooooo||

#

||i need to use javafx skills||

#

do u have an idea for a project?

prisma wave
#

use both

#

make a program with a CLI then add a GUI to it

half harness
#

uh

#

how

prisma wave
#

how what

half harness
#

like

#

would there be like a gui cmd?

prisma wave
#

up to you

half harness
#

do you really like cli that much

prisma wave
#

depends what it's for

#

but for certain things cli is much nicer, yes

half harness
#

then you'd love cli minecraft ๐Ÿ‘€

prisma wave
#

๐Ÿ‘€

half harness
#

๐Ÿ˜

prisma wave
#

the benefit of CLI is that if you know what you want to do and how, you can do it much quicker than a GUI

half harness
#

how

#

but

#

1 second faster?

#

how is it faster though

prisma wave
#

sometimes significantly faster

#

depends on the task

#

i cant really think of a good example lol

half harness
#

i just want to put in values

#

like paper or spigot

#

then version

#

etc

prisma wave
#

i could type ./start-server --spigot faster than i could open a GUI, put in the values in different text boxes and click a start button

#

i think most people could

half harness
#

ohhhhhhhhh

#

so thats what u meant

prisma wave
#

yea

half harness
#

i thought u meant like

prisma wave
#

what did you think i meant lol

half harness
#

create-server

#

spigot

surreal quarry
#

cli very good

half harness
#

etc

#

not args

prisma wave
#

o right

#

they can be nicer

#

npm init is pretty nice

#

you have a prompt to input project name, author, github url, version etc

#

rather than doing it all at once

surreal quarry
#

gradle init is also very nice

prisma wave
#

yeah that too

#

the gradle command line is good

#

often faster than navigating through a bunch of menus in IJ

surreal quarry
#

real ones run gradle in a docker container

prisma wave
#

๐Ÿฅฒ

surreal quarry
#

realest ones run their whole computer in a docket container

half harness
#

i dont like cli bc u have to memorize the cmds

prisma wave
#

intellij docker

#

memorising them really isn't hard

half harness
#

ok

#

ill quiz you

prisma wave
#

you definitely know the gradle ones off by heart for example

half harness
#

lol

prisma wave
#

gradle shadowJar, gradle build, gradle init, etc

surreal quarry
half harness
#
  1. how do you delete all files in windows cmd prompt
prisma wave
#

idk

half harness
#

by all files i mean wipe the hard drive

surreal quarry
#

fuck windows

prisma wave
#

i barely use batch

half harness
#

oh

#

then what do u use

prisma wave
#

something like del /R C:\ i think

#

shell wherever possible

#

rm -rf /

surreal quarry
#

sudo rm -rf / โ€”no-preserve-root in linux

half harness
#

wow

#

ok i cant test right now

#

anyways

prisma wave
#

lol

half harness
#

#2

surreal quarry
#

lmao

half harness
#

oh

#

hi yugi

prisma wave
#

im not sure you should test that anyway

half harness
old wyvern
#

We just got asked to install wamp. Php is coming ๐Ÿ˜ซ

regal gale
#

F

prisma wave
half harness
#

php bad or good?

old wyvern
#

php bad

prisma wave
#

very bad

half harness
old wyvern
#

very very bad

#

hell

prisma wave
#

PHP and COBOL are the only 2 languages i would say are objectively "bad"

regal gale
#

Lua also ๐Ÿ‘€

half harness
#

lua

#

roblox?

prisma wave
#

never used lua but i've heard lua is good

half harness
#

gtg byee

prisma wave
#

adios

half harness
#

๐Ÿ‘‹

#

sorry i couldn't finsih ur quiz

prisma wave
#

ill live

half harness
#

no u wont

prisma wave
#

oh

#

ok

#

๐Ÿ’€

half harness
#

sorry

#

mb

#

๐Ÿ‘‹

prisma wave
#

ciao

regal gale
#

I hate lua on the way they are executed on runtime (thread)

#

Not too sure what are after that thonking

old wyvern
#

ffs c#'s sealed classes mean its final ๐Ÿ™ƒ

#

Great terminology microsoft

narrow geyser
#

I have CompleteableFuture<Person>

#

Person has level

#

And xp

#

I want to put placeholders for level and xp

old wyvern
narrow geyser
#

R u kidding

#

I will not rewrite

old wyvern
#

No?

half harness
#

This channel isn't for coding help

#

#dev-general

old wyvern
#

Ask in the right channel if you want help

narrow geyser
#

Ok someone go to support channel and help me

half harness
#

._.

#

im out

#

busy

old wyvern
#

I mean if you dont care enough, why should we

#

ok there we go

jovial warren
#

lol

#

also, me working on a Brigadier DSL

#

rate pls

#
literalArgument<Player>("time") {
    literalArgument("set") {
        literalArgument("day")
        literalArgument("noon")
        literalArgument("night")
        literalArgument("midnight")
        requiredArgument("time", integer)
    }
    literalArgument("add") {
        requiredArgument("time", integer)
    }
    literalArgument("query") {
        literalArgument("daytime")
        literalArgument("gametime")
        literalArgument("day")
    }
}
#

thinking about it, maybe those extension ones don't need to be suffixed with "Argument"

#

consistency though amirite

old wyvern
#

you could possibly do better with infixes maybe

#

That doesnt look very diff from how brigadier already is

jovial warren
#

no but it's better than using a builder in Kotlin

#

also, how would I use infixes here?

regal gale
old wyvern
#

They form a left derivative tree when used in sequence I think

#

You could probably have people specify the whole command tree that way maybe?

jovial warren
#
literalArgument("time") then "set" then {
    "day", "noon", "night", "midnight", required("time") type integer
}
```that wouldn't be bad, but likely wouldn't work
hot hull
#

That is ew

jovial warren
#

ooo

#

Frosty

#

rate my DSL

#

(not that one, the one above)

hot hull
#

ew

jovial warren
#

top one ew?

prisma wave
jovial warren
#

yeah that won't compile lol

old wyvern
#

why not? hmm

jovial warren
#

why would it?

prisma wave
#

the random strings + commas

jovial warren
#

you would probably need to use a collection there instead of a lambda

prisma wave
#

The rest is fine

jovial warren
lunar cypress
#

tfw no macros

prisma wave
#

๐Ÿฅฒ

old wyvern
#

Could possibly improve that a lot

jovial warren
#

that link just seems to send me to my own playground btw

old wyvern
#

oh wait

compact perchBOT
surreal quarry
#

Worked for me

ocean quartz
#

Same here

jovial warren
#

oh yeah, worked in different browser

old wyvern
#

You would have to replace the comma and stuff with something else I guess but it mostly works

jovial warren
#

not 100% sure on this DSL

#

because the trees would still turn out looking about the same

ocean quartz
#
infinx fun Any.`,`(any: Any) {}

There i made the comma work ez

old wyvern
#

It looks fairly better than what brigadier has I think

lunar cypress
#

why would you want to make this a sequential thing if you end up with a tree structure anyway

#

consider multiple layers of sub commands

jovial warren
#
literalArgument("time") then {
    then "set" then {
        then "day"
        then "night"
    }
    then "query" then {
        then "daytime" type integer
    }
}
#

or something like that

ocean quartz
#

Too many then

lunar cypress
#

yeah

#

doesn't add anything

old wyvern
#
literalArgument("time") then {
    "set" then {
        "day"
        "night"
    }
    "query" then {
        "daytime" type integer
    }
}``` could be reduced to this I think
jovial warren
#

yeah maybe

surreal quarry
#

Or Bardy. Have no DSL for it, build it into the commands system of minekraft directly.

jovial warren
#

MineKraft doesn't have a command system lol

#

not sure if I want to make one yet or not

surreal quarry
#

make one fingerguns

#

how else are people gonna have commands?

jovial warren
#

Brigadier

hot hull
#

Disgusting

jovial warren
#

that's what this is a DSL for

surreal quarry
#

oh i was thinking brigadier was only for the colored arguments and stuff

#

thatโ€™s gross donโ€™t make it only brigadier lol

jovial warren
#

nah Brigadier is the full monty

hot hull
#

Make sure you add colored arguments support somehow

jovial warren
#

if Brigadier supports it, Admiral supports it lol

surreal quarry
#

j think a command system as a part of minekraft similar to mattโ€™s lib maybe that automatically does brigadier colored arguments for you

jovial warren
#

@prisma wave what do you think? Brigadier or custom?

hot hull
#

Custom

old wyvern
#

Built in mfcmd

#

๐Ÿ™‚

jovial warren
#

we ain't using MF CMD

hot hull
#

Noone is gonna fuck around with brigadier constantly

#

It's a fucking mess

surreal quarry
#

custom for sure

jovial warren
#

you know Brigadier won't be for the frontend right btw?

old wyvern
jovial warren
#

this isn't for the frontend

#

you won't be using this on the frontend (in plugins)

surreal quarry
#

oh then do whatever you want lmao

jovial warren
#

we'll come up with a custom system for the API ofc

surreal quarry
#

i thought you were saying your solution to plugin commands was brigadier lol

old wyvern
#

Why two different systems?

jovial warren
#

but this is just for parsing and dispatching on the backend

old wyvern
#

Use the same one

surreal quarry
#

just use brigadier then

jovial warren
#

and also, using existing free and open-source libraries > making your own

prisma wave
#

the server doesn't really need to worry about this

jovial warren
#

because I don't want plugin developers to have to do dispatching on the backend

prisma wave
#

again, this is something that should be down to individual plugins to use

old wyvern
#

What dispatching on the backend do you mean?

jovial warren
#

Brigadier

old wyvern
#

So you dont want plugin developers to access brigadier?

jovial warren
#

I want them to be able to optionally access it, but not be forced to

#

Brigadier isn't designed for the frontend anyway

old wyvern
#

They dont need to be forced to anyway tho

#

If you have a proper interface set up to create commands you could use the same for internal purposes and allow developers to use that in plugins

jovial warren
#

maybe

old wyvern
#

Just

#

๐Ÿฅฒ

#

(Haskell meme)

jovial warren
#

that means I gotta create my own dispatcher from scratch though lol

old wyvern
#

Sure

jovial warren
#

project Admiral is a go I guess (name derived from lucko's commodore lol)

#

trying to think how I want this to work

#

also trying to resist the temptation to look at Brigadier source code for ideas lol

#

might make something similar to the way BungeeCord's command stuff works for the frontend

ocean quartz
#

These names lol

jovial warren
#

e.g. ```kotlin
class MyCommand : Command(name, permission, aliases) {

override fun execute(sender: Sender, args: List<Argument>) {
    // do some thingys
}

}

#

or one better, suspend operator fun invoke

prisma wave
#

we do not need a separate project for every single thing

jovial warren
#

no but this is going to be separate

#

because it's mine xD

#

and because I want to make more standalone libs

prisma wave
#

ok but don't expect it to necessarily be used

#

we can just use brigadier on the server side and any other frameworks that people want can build upon that

jovial warren
#

that's literally what I said

distant sun
#

^

onyx loom
jovial warren
#

but Yugi said bad

prisma wave
#

brigadier with an interface

#

like the vanilla server does

distant sun
prisma wave
#

literally just something as basic as bukkit CommandExecutor would be fine

prisma wave
jovial warren
#

yeah no that's trash BM

#

I want my method of defining commands, it better xD

#

Command(name, permission, aliases)

prisma wave
#

bukkit has that too

jovial warren
#

yeah but you're not really meant to use it

prisma wave
#

i didnt say a carbon clone of bukkit's system

#

but it's not the server's responsibility to provide an overengineered framework for very simple things

jovial warren
#

as long as we don't have ```kotlin
override fun onCommand(sender: Sender, command: Command, label: String, args: Array<String>)

jovial warren
#

the reason why we use Komponent is because it's lightweight for example

prisma wave
#

on the server layer you don't even need that

jovial warren
#

literally it's only purpose is easy serialisation and deserialisation to and from JSON with kotlinx.serialization

#

we are not writing raw JSON strings

#

that's a pain in the ass

prisma wave
#

why not?

#

no it's not

#

it's literally buf.writeString

jovial warren
#

it is when you gotta escape everything

#

and it's barely readable at the best of times

prisma wave
#

kotlin has raw strings, and i didn't say hardcoding

#

but there are very few situations where the server implementation ever needs to handle json data

jovial warren
#

I guess

prisma wave
#

the implementation should just take some json or some low level abstraction and send and receive it

jovial warren
#

except for chat messages, which the text gets wrapped

prisma wave
#

yes