#development

1 messages Β· Page 261 of 1

quartz kindle
#

divdivdivdivdivdivdivdivdivdiv

small tangle
#
if let Some(lock) = locks.get(lock_id) {
  if lock.locked {
      if let Some(owner) = lock.owner {
          if owner != event.thread_identifier {
              let error = AnalyzerError {
                  line,
                  error_type: AnalyzerErrorType::ReleasedNonOwningLock {
                      lock_id: lock.id,
                      thread_id: event.thread_identifier,
                      owner,
                  },
              };
              return Err(error);
          }
      }
   }
}

gotta love me some Rustℒ️

solemn latch
frosty gale
#

wait till bro discovers there are elements that do a lot of things from the box instead of having to code the CSS for them using a class

pearl trail
#

thats me but i still use div πŸ˜”

earnest phoenix
#

dunno, using a service that offers these classes, so yeah

frosty gale
#

exploiting the needrestart vulnerability on my unpatched server and it works

#

how did this even go unnoticed for so long

earnest phoenix
#

the same way as every other vuln do

earnest phoenix
radiant bramble
#

Yoo

tulip ledge
# small tangle ```rs if let Some(lock) = locks.get(lock_id) { if lock.locked { if let S...

Can't you do something like

if let Some(lock) = locks.get(lock_id) {
  if lock.locked && lock.owner.map_or(false, |owner| owner != event.thread_identifier) {
    let error = AnalyzerError {
        line,
        error_type: AnalyzerErrorType::ReleasedNonOwningLock {
            lock_id: lock.id,
            thread_id: event.thread_identifier,
            owner: lock.owner.unwrap(),
        },
    };
    return Err(error);
  }
}

The onwrap is safe because of the map_or

#

it saves some indentation at the price of being less readable

radiant kraken
#

i use that a lot in my projects and it's still readable

#

map*() helper methods help a lot

tulip ledge
#

but some people prefer more if statements to be able to follow the flow of the code easier

#

but I don't like to indent more then 4-5 times

radiant kraken
#

well i used to avoid them because i afraid that it might harm the performance

#

and now i use them everywhere lol

tulip ledge
radiant kraken
#

well... you lose a few microseconds, that's all

radiant kraken
small tangle
#

oh interesting PauseChamp

#

didnt know about that

#

i mean i could use let chains too, but they are still unstable

tulip ledge
#

Also the compiler should optimize these patterns no? I'm pretty sure the asm code is nearly identical

radiant kraken
tulip ledge
#

Option and Result types are what make rust so great

radiant kraken
#

yuuhhhh!

#

and also procedural macros

tulip ledge
#

I even made a custom lil library in typescript so I have typesafe Option and Result types in my typescript projects lol

radiant kraken
#

rust is literally syntactic sugar heaven

tulip ledge
#

yup

small tangle
radiant kraken
radiant kraken
#

not the pro language sadly πŸ˜”

small tangle
#

I solved it a bit differently, could reduce nesting by inverting some conditions to use them as guard clauses

radiant kraken
#

what are you working on btw?

small tangle
#

Its an analyzer for traces. These traces log the order of acquire/release events of locks and im checking if the traces are well-formed (by checking some rules they defined in the paper this is based on)

radiant kraken
#

oh interesting

small tangle
#

Yea, thats part of my master thesis

#

But i was running into lifetime issues when i tried to refactor the individual match arms into seperate functions so i need to look into that

#

Currently i have a for loop where i iterate over the events and fill a HashMap depending on the kind of event. But when i moved the logic into its own function i ran into the issue that i needed to borrow the HashMap mutiple times mutable to fill it. Any ideas on how to solve that?

#

I can send more context when im home again Lurk

radiant kraken
radiant kraken
small tangle
small tangle
radiant kraken
#

yippeee

#

lifetimes my beloved

neat mauve
#

typical rust conversation 🀣

earnest phoenix
#

me when my projects are boring af

radiant kraken
#

same

humble gyro
#

πŸ€“ ☝️ you could use <section> and <article> to help identify distinct parts of your website

humble gyro
#

fire sticker

sharp geyser
#

ty

humble gyro
#

I stole it

sharp geyser
#

not nice

humble gyro
#

very communist of u

sharp geyser
radiant kraken
bitter granite
#

How do i center a div
The div:

earnest phoenix
#

lmfao i swear

small tangle
#

@radiant kraken sooo PauseChamp The basic structure is:

pub fn analyze_trace<'a>(trace: &'a Trace) -> Result<(), AnalyzerError<'a>> {
    let mut locks: HashMap<&str, Lock> = HashMap::new();
    let mut memory_locations: HashSet<&str> = HashSet::new();
    let mut line = 1;

    for event in &trace.events {
        match event.operation {
            Operation::Acquire => { /* logic */ }
            Operation::Release => { /* logic */ }
            Operation::Write => { /* logic */ }
            Operation::Read => { /* logic */ }    
            _ => {}        
        }
        line += 1;
    }
}

I want to refactor each match arm into its own function but since im modifying the hashmaps in multiple places im not sure how would i achieve this

small tangle
#

meaning in multiple match arms

radiant kraken
#

shouldn't that be fine tho? afaik you can do that as long as they are inside each match arm

small tangle
#

hm, lemme try that again, maybe did i something else wrong

radiant kraken
#

also you're missing a ; after the line += 1

#

besides that, your code looks pretty good, nothing i would refactor myself

small tangle
#
Operation::Write => analyze_write(event, line, &mut memory_locations)?,
Operation::Read => analyze_read(event, line, &memory_locations)?,

e.g. this complains about cannot borrow memory_locations as mutable more than once at a time

small tangle
#
fn analyze_read<'a>(event: &'a Event, line: usize, memory_locations: &'a HashSet<&'a str>) -> Result<(), AnalyzerError<'a>> {
    let memory_id = expect_operand(&event, &Operand::MemoryLocation(""), line)?;

    if let None = memory_locations.get(memory_id) {
        let error = AnalyzerError {
            line,
            error_type: AnalyzerErrorType::ReadFromUnwrittenMemory {
                memory_id,
                thread_id: event.thread_identifier,
            },
        };
        return Err(error);
    }

    debug!("Thread '{}' read from memory location '{memory_id}' in line {line}", event.thread_identifier);

    Ok(())
}

thats the implementation of the second function

#

and its complaining about cannot return value referencing local variable memory_locations and im not sure how im returning a local reference

#

i mean in the end, the code compiles when everything is in one functions so im not too worried but im curious how i would make this work

radiant kraken
small tangle
#

uh

radiant kraken
#

is the error stack pointing exactly at those two lines?

small tangle
#

these are the two error messages

radiant kraken
small tangle
#

im returning Err inside the match and an empty Ok(()) at the end of analyze_trace

small tangle
radiant kraken
#

OH

#

AnalyzerError<'a> this is why

small tangle
radiant kraken
#

memory_locations has the lifetime of 'a

#

you're returning a data with the lifetime of 'a as well (in this case, the error)

small tangle
#

mh okay pikathink

#

so AnalyzerError needs to live longer than 'a?

radiant kraken
#

yeah

radiant kraken
#

also, replace that if let None = ... with if memory_locations.get(memory_id).is_none()

#

also, why are you referencing event again when it's already a reference? (expect_operand(&event, )

small tangle
#

oh true pikathink

#

hm, how would i annotate the analyze_trace. im a bit lost with lifetimes .-.

radiant kraken
#

hahaha it's alright

#

you will get used to it!

#

you'll love em eventually

small tangle
radiant kraken
#

what do you mean?

small tangle
#

like from the understanding of lifetimes, what is the relation between the two lifetimes

radiant kraken
#

those two lifetimes are just... different lmao

#

they don't affect each other

small tangle
#

hm okay Note

radiant kraken
#

telling the compiler that the lifetimes differ should help with that compiler error iirc

small tangle
#

i removed every lifetime annotation to start new .-. why is that the case: this function's return type contains a borrowed value

#
pub struct AnalyzerError<'a> {
    pub(crate) line: usize,
    pub(crate) error_type: AnalyzerErrorType<'a>,
}

pub(crate) enum AnalyzerErrorType<'a> {
    MismatchedArguments {
        operation: Operation,
        operand: Operand<'a>,
    },
    RepeatedAcquisition {
        lock_id: &'a str,
        thread_id: &'a str,
    },
    RepeatedRelease {
        lock_id: &'a str,
        thread_id: &'a str,
    },
    ReleasedNonOwningLock {
        lock_id: &'a str,
        thread_id: &'a str,
        owner: &'a str,
    },
    ReleasedNonAcquiredLock {
        lock_id: &'a str,
        thread_id: &'a str,
    },
    ReadFromUnwrittenMemory {
        memory_id: &'a str,
        thread_id: &'a str,
    },
}

because of the string slices? should that be owned strings instead?

pearl trail
neat mauve
#

Just a quick question... is it currently weekend on topgg in terms of votes? or not? I am so tired.... but i checked the code and should be fine... it seems to return True for the is weekend status with the topggpy client. tell me i am wrong... πŸ‘€

radiant kraken
radiant kraken
#

therefore you must explicitly add a lifetime annotation whenever you want to use it

#

i don't think you should remove the explicit lifetime annotations tbh

dapper quarry
#

so only two of my cogs are syncing slash commands and none of my other commands are syncing. How long does syncing typically take?
Its been over 10 minues since the restart

civic scroll
warm surge
#

No

warm surge
civic scroll
warm surge
#

no slash command or prefix commands

civic scroll
#

anything on audit logs

warm surge
#

but right now nothin

#

later maybe

#

@ivory siren

warm surge
ivory siren
#

-b 1308601169332928577 spam account

gilded plankBOT
#

upvote gulshan120#0 was successfully banned.

civic scroll
#

oh

#

i c

radiant kraken
civic scroll
#

hi

radiant kraken
#

i'm a huge fan

#

:)

civic scroll
#

me too

radiant kraken
#

can i have an autograph

pearl trail
#

mme too

unreal plank
civic scroll
civic scroll
radiant kraken
#

this is the best day of my life

#

😭

civic scroll
radiant kraken
#

i'm your #1 stan :)

quartz kindle
#

your biggest fan, this is stan

radiant kraken
#

fr

neon leaf
#

Any good npm libraries for basic OCR?

quartz kindle
#

anything that is backed by native code

#

i wouldnt trust pure js to do OCR

neon leaf
#

Yeah, I wasn't able to find anything

quartz kindle
#

tesseract.js looks alright

#

its based on a wasm port of tesseract

pearl trail
#

tesseract ocr?

neat mauve
pearl trail
#

o my bad, alr answered

pearl trail
neat mauve
neon leaf
#

I mean I mainly need to get text from terminal screenshots

#

Nothing complex

neat mauve
#

] and j was a problem with tessaract for sure. even google vision had problems smtimes

neat mauve
#

easy, good. shouldnt do any mistakes on that end. and free

neon leaf
#

Alright, thanks everyone

quartz kindle
#

it uses libtesseract directly, which is better than wasm

#

or you can make your own libtesseract wrapper with n-api

#

or testdrive node's new ffi when it comes out

worldly flax
#

I don't know if I can ask something like that, does anyone know how to get your domain up? Can't figure it out.
how to connect discord bot domain to my website

deft wolf
#

You add a record to the DNS records of your domain so that it directs to the IP address of the server where you host your website

lyric mountain
#

in simple terms it's basically a global alias to whatever you point it to

worldly flax
deft wolf
#

Then you select the DNS tab, then select Records and Add Record

#

For example

worldly flax
#

Arg okay

neat mauve
#

Have you bought the Domain yet?

worldly flax
#

I don't know, I bought a domain last night, but they made a web server there, but I made one for my bot.

neat mauve
#

might be a default site with the A record pointing to their webserver for such default sites

#

There must be some option to adjust your domain

neat mauve
neat mauve
# deft wolf For example

so you just need to see where the option to adjust your domain is... And then you need to change the top most A record, like proposed here

#

maybe its calld 'advanced DNS'

worldly flax
neat mauve
#

Another example of my domain. this is a bit more complex and not for website purpose

neat mauve
worldly flax
neat mauve
# worldly flax

Also changes need to propagate through the network... which the ttl says how often you suggest domain servers to querry for your address (they not obligated to do in that interval)...

neat mauve
neat mauve
worldly flax
#

Oh

neat mauve
#

if i can't reach it via the above... you wont see any results with your propr domain

worldly flax
#

2 sec try straight

neat mauve
#

thus:

  1. Start your webserver
  2. open up at least port 80 to be open for public
  3. let th webserver listen to por 80 on incoming request
  4. respond to port 80 with a website or json object or whatever
  5. test again with http://109.176.202.68/
#

might as well open up port 443, because you will most likely also do secure connections via https soon

worldly flax
#

How do I make it a port 80?

neat mauve
neat mauve
#

it depends on what you developing with... i can't easily answer this as i dont have enough infos

neat mauve
#

localhost?

#

127.0.0.1?

worldly flax
#

VPS

neat mauve
# worldly flax VPS

Yeah okay. Thats... uhm like if you bought a pc... lets just imagine this... but there is no webservr installd on that 'pc' yet

#

nothing configured for it

lyric mountain
neat mauve
#

you got to do it yourself

lyric mountain
#

are you using something as a webserver? like nginx or httpd

#

ah, right, you just rented your server

worldly flax
#

No, I have created a dashboard for my bot that is coded into it.

lyric mountain
#

is that dashboard accessible?

neat mauve
worldly flax
#
  DASHBOARD: {
    enabled: true, // enable or disable dashboard
    baseURL: "http://beaverbot.xyz", // base url
    failureURL: "http://localhost:8080", // failure redirect url
    port: "8080", // port to run the bot on
  },
neat mauve
lyric mountain
#

so I imagine you didn't attempt to access it yet right?

worldly flax
#

No

lyric mountain
#

also, dont set the failureURL to localhost, it wont work in any way

#

localhost means "here"

#

but my "here" is different to your "here"

worldly flax
#

What should it stand on then?

lyric mountain
#

well, some page to tell the user that the url is wrong/down

lyric mountain
worldly flax
#

Yes, haven't tried and gained access.

lyric mountain
#

ok, so you'll need to first a webserver to process incoming requests

#

doing it raw would be possible too, but it'd be complicated

worldly flax
#

So use godaddy

lyric mountain
#

no, I mean webserver like nginx or httpd

worldly flax
#

When no, I don't have it.

lyric mountain
#

are you intending to host your dashboard in linux or windows?

worldly flax
#

So have a VPS server with windows

lyric mountain
#

hm, with windows I'm not very experienced, but there are guides for it

#

skip step 2 since you plan to use cloudflare

worldly flax
#

Oay

#

Okay*

#

That's only with Nginx and not Windows.

lyric mountain
#

nginx is a webserver that stays between your code and the world

#

so when someone makes a request to your IP it'll go through nginx which will route to the appropriate place

worldly flax
#

But I have coded my web server in my bot

lyric mountain
#

yes

worldly flax
#

Can't figure out nginx

lyric mountain
#

...I think you'll need someone who has a windows vps to guide you through this

worldly flax
#

Yep

quartz kindle
#

windows doesnt usually run nginx

#

people mostly use windows vps to run something like WAMP/Apache

quartz kindle
earnest phoenix
#

@radiant kraken .chunk() my beloved

#

crazy useful util

radiant kraken
earnest phoenix
#

other languages you always have to compute that yourself

quartz kindle
neon leaf
#

okay the tesseract ocr is actually horrible

quartz kindle
#

lmao rip

neat mauve
neon leaf
#

doesnt seem to be available in germany for some reason

neat mauve
#

Then they changed it. my bad

#

was available in august

neon leaf
#

weird

neat mauve
neon leaf
#

assisting my support team by automatically providing solutions to common issues

neat mauve
#

how often used?

neon leaf
#

~5 tickets per day

#

so not that little

neat mauve
neon leaf
#

well probably 1-2 ocr per ticket

neat mauve
neon leaf
neat mauve
#

google vision better and still works for me

neon leaf
#

well in current testing its mostly fine (since I only need portions of text) but that second screenshot messes up the versions

neat mauve
#

the big screenshot?

#

ill test that

neon leaf
#

yes

#

it extracted 1.0.2 and 1.6.1

neat mauve
neon leaf
#

ah yes

neat mauve
#

would this even be useful to u?

#

should work in germany

neat mauve
#

there it is

neon leaf
#

bruh it works now

ashen scroll
#

how to manage from permissionOverwrites? discord js v14

neat mauve
earnest phoenix
#

was bored, made brainfuck interpreter

earnest phoenix
#

in the end it wasn't that hard

#

just the [ & ] were a bit more annoying

#

the rest is just doing +1 or -1 to a variable lmao

lyric mountain
#

now do a jsfuck interpreter /s

forest herald
#

Hey, I got a question What permissions does a bot need to set a voice channel status?

warm surge
forest herald
#

its code that uses node-fetch to set the status

warm surge
#

idk if you could

forest herald
#

?

radiant kraken
#

indentation rights are human rights

#

if people can be lgbtq why not code πŸ˜”

bitter granite
radiant kraken
#

like you can't say that this is good indentation, wtf is this mess

#

yes, this is the FORMATTED code

bitter granite
sharp geyser
#

Lot better than some shit i've seen in here

radiant kraken
sharp geyser
#

I dont mind it

sharp geyser
#

@prime cliff surely this isn't how I have to do it...

<RadzenText Text=@("Name: " + _name) />
#

This looks...terrible

#

Shut up

#

@clear plinth (person deleted their message)

prime cliff
#

What the heck was that...

sharp geyser
#

support scam

bitter granite
#

Bruh alot of support scam

deft wolf
#

They think they are smart KEKW

bitter granite
#

@steady hedge

prime cliff
#

Anyway yea that's how you do it, inline text and combined variable has to do that ( )

bitter granite
#

Got the id

sharp geyser
#

That looks so bad.....

prime cliff
#

I mean not really it's fine xD

sharp geyser
#

I mean maybe im just not used to concatenation

#

I usually use template strings

#

$"Name: {_name}"

prime cliff
#

You might be able to do that too inside the ()

sharp geyser
#

Nah I tried

#

Cannot use complex content

prime cliff
#

You can do it as Text="@( )" if that makes it any better :/

deft wolf
#

Bro

bitter granite
#

At this point

deft wolf
#

πŸ’€

sharp geyser
bitter granite
#

@oak cliff @clear plinth spammer scam

prime cliff
#

Yup

radiant kraken
#

oh pog

steady hedge
sharp geyser
#

Top tier auto mod

prime cliff
#

Ok that's a user doing it

radiant kraken
bitter granite
prime cliff
#

@steady hedge go away

bitter granite
radiant kraken
#

nah

sharp geyser
#

Auto mod works when you dont want it to

#

and doesnt when it needs to

#

πŸ’€

radiant kraken
#

we have plenty of mods living in eastern timezones

bitter granite
radiant kraken
#

but most of them are inactive

bitter granite
deft wolf
#

We need more (active) mods

radiant kraken
#

nope

bitter granite
#

At somepoint is raid ping a good idea

radiant kraken
#

nah this is just one guy

bitter granite
#

2 is dead now

radiant kraken
#

still 1

bitter granite
#

Fair point

sharp geyser
#

Just ignore em

radiant kraken
bitter granite
sharp geyser
#

Where's the swede

#

mf always on

bitter granite
radiant kraken
#

it's 11am for him

#

he's just not on discord atm

prime cliff
#

Time to report the server to ticket tool bot that they are using smiledoggo

sharp geyser
#

lol

bitter granite
#

^

pearl trail
#

^

deft wolf
#

^

neat mauve
#

^

spark flint
#

^

neon leaf
#

^

sage bobcat
#

One message removed from a suspended account.

sharp geyser
lyric mountain
#

v v v

#

500kg bomb incoming

warm surge
radiant kraken
#

wow that was a crazy convo

#

which one do you guys think is better? ```py

vs is a dict[int, ...]

vs = await ts.compare_bot_server_count(432610292342587392, 437808476106784770)

for first in vs[432610292342587392]:
print(first)

for second in vs[437808476106784770]:
print(second)
or...py

vs is an iterable, and can only be consumed once

vs = await ts.compare_bot_server_count(432610292342587392, 437808476106784770)

for first, second in vs:
print(first, second)

#

i'm writing a library and felt like latter would be a better syntax sugar, but realistically maybe the former

lyric mountain
#

well, from a performance pov the second is better

#

also arguably better usability

earnest phoenix
#

second better

radiant kraken
#

alright, thanks!

frosty gale
#

python try not to incur a performance penalty doing literally anything challenge (hard)

lyric mountain
#

pretty sure all langs that have enhanced iterators have some sort of overhead no?

#

tho the actual impact might depend on how it's implemented

#
for (Exmpl e : examples) {
  ...
}
``` is equivalent to ```java
Iterator<Exmpl> it = examples.iterator();
while (it.hasNext()) {
  Exmpl e = it.next();
  ...
}
neat mauve
#

talking about performance when it comes to python... mhhm thats like talking about being fast, where as you only got by foot and others go by car. πŸ‘€

wheat mesa
#

Python is fast in the same way that my 2013 ford focus was fast (compared to a horse)

radiant kraken
frosty gale
#

@quartz kindle ever heard of String.raw in js? Just found out about it

pearl trail
#

wow, thats interesting

civic scroll
#

nothing's wrong for getting the most out of something

#

just because something is not as fast doesn't mean you can make it run faster than the current implementation (it's rather naive to always assume the existing solution is the best one out there without reasoning)

neat mauve
#

so lemmy assume you think like this?

#

The big question is rather if its worth it

civic scroll
#

that's my response to 2nd clause of your sentence

neat mauve
#

and its definitely extra work to put into python when doing so

civic scroll
neat mauve
#

so if you are heavyily cpu based and cant go to other native languages to compute it all.. then dont waste your time with python...

#

but its good to get things going ^^

civic scroll
neat mauve
#

also by trying to refactor and optimize the shit out of it you may fall into a state where you not able to build some features ...

civic scroll
neat mauve
civic scroll
#

and not to mention python libraries can have c/c++ backend

#

people doing a bunch of ai/ml in python all the time

#

so this "performance" question depends

neat mauve
civic scroll
#

but most of the time we are talking about algorithm performance (the number of operations it takes to perform a computation)

neat mauve
#

Idk about you, but i am rather thinking about bigger programms and that being said how good python is to build bigger programms... mhhm i dont want to talk about it... but maybe not the best choice

neat mauve
#

I am also heavily into python. dont understand me wrong

#

I know the pros of it

#

and have also developd AI's and done research in Ai and such... the AI's i have developed where mostly developed in python

civic scroll
neat mauve
#

I am not dumb to now know that there arent any libraries

civic scroll
#

i'm not saying you are

#

nor implying

civic scroll
#

"be done" here means you have a working implementation, and given that it's totally reasonable to optimize
what not to do however is premature opt

neat mauve
#

you let it sound as if there is a straight way of doing things and the will work out... people will do it right the first time they do.. nothing is going to happen if you optimize the running project... you be working and finishing your project and done...
Thats the opinion i am getting from you xd

But let alone the human factor in this equation... its insane. idk about u if you have worked with other peoples code or co worked with people at the exact same code and areas.... but i know how it goes

civic scroll
#

the opinion you got from me is not even close to what i meant

neat mauve
neat mauve
civic scroll
#

theoretical stuff should be implementation-agnostic
if we talking pure theory, python wouldn't even be mentioned

neat mauve
#

and when talking about python... its not a theoretic model... its a practical implementation. so reviewing anything python related should be viewed in a broader space and on a practical view

civic scroll
#

*within python

neat mauve
#

so you not looking at the code as a whole... but just at small code pieces

#

and u want to optimize individual operations

#

if needed

#

thus you do not do so, unless you got a cpu heavy operation(for example) and then sit down and see if you can get it done by another language and or omite being inefficient

#

and not thinking of the surrounding stuff

civic scroll
neat mauve
#

Whereas this work is indeed more with python then other languages like c++;

civic scroll
#

which bring me back to the point... what are we even talking about?

neat mauve
civic scroll
#

ok, where is it then

#

talking about performance when it comes to python
i was picking on this, because python doesn't deserve this much hate πŸ˜”

#

that was my original point

neat mauve
#

now we discussing it out

#

and we agree in the point that you can opimize single isolated parts of code when needed.

neat mauve
civic scroll
#

i'm not talking about your intentions

#

it was a pun, i guessed most likely

#

perhaps my message was lacking emojis?

#

oh how silly me

neat mauve
civic scroll
#

but yeah my point is, when talking about performance some people would assume the absolute runtime performance of something when the context is about comparing relative performance of different algos in the same medium, and i picked your pun up as such

#

apologies for the confusion
and unless one is really good, the first solution might not be the best - it's not like "i could optimise this but this is known to be slow overall so meh why bother"
what i inferred from "make it work, make it right, make it fast"

neat mauve
#

I just don't encourage talking about python and speed and trying to argue that its fast. Thats the main point. It is NOT fast. It can theoretically be fast in 'code snippets'. But anyone arguing that python is fast is the worst thing one can do... not generalising things... also no need to defend python. If you want speed go with something else. Stop wasting your time optimizing stuff then. its simple.

If you want to start out fast and build something, where you most likely wouldnt ever hit your limits of the cpu and else... you more likely to just abandon the program... thats when i say go with python.

#

So I encourage anyon going for python! but not building anything big onto it... as there is many pitfalls and considerations... And defining 'big' is also a thing thats hard to do... My big is probably bigger then most people will code things on their own

civic scroll
#

my point is not "python is fast" (although it is fast enough depending on your needs)
it depends on the bottleneck, and it totally fine to optimise if it's not ridiculous (eg. the algo, or different impl within scopes of the language's intended design)
and "fast" comes with "relative to what exactly?"
(fyi for my context it's "the same python program but using the 1st snippet")

#

we talked for so long i lost context

neat mauve
# civic scroll apologies for the confusion and unless one is really good, the first solution mi...

I'd not agree with "make if work, make it right, make if fast".
You should decide by case... And see if you need to make it fast... maybe rather save up time. I think time you spend developing is way more worth then getting things properly done.. Just shit a test project and see how it performs... then you can build a solid ground when its on market and performing good... or you can easily change stuff up to see how next version performs... then spending insane times at things you would probably not need in the future... it all depends on how oneself judges it. so... That being said... I value crap code a lot, as well as good and efficient code. But what I do not accept is having crap code as a basis or having exceptionally well code as a start up... But if you just do it as a private project and its just for yourself or learning or such... then might as well do whatever u want. why not experience this sh*t yourself? xd go for it!

sharp geyser
#

what in the heck is going on

#

can someone give me the tldr

civic scroll
#

i'd say for learning experience, it's worth it to see how your algorithm can be improved, logic-wise and impl-wise
you gain more knowledge about the algorithm itself, and language/runtime-specific knowledge

neat mauve
civic scroll
#

we didn't even have the same view from the beginning then

neat mauve
neat mauve
#

you thinkpython fastest language? o.O

sharp geyser
#

Is this a language war or smth

civic scroll
#

i compared relatively to different implementation variants of the same python program
you compared python itself to other runtimes

civic scroll
neat mauve
# sharp geyser can someone give me the tldr

tldr: arguing if we should argue about python being fast in different contexts and making sidequests to get things cleared as what cases we really mean and agree on.... in the end we both do not want ayone thinking wrong about python as the people starting the debate here seemed to have not clearly stated what they compare so it could look like python is either crap or good to others reading

neat mauve
civic scroll
#

but then python could be the fastest language

neat mauve
#

I do not try to proof a point

#

I try to convince others to NOT talk about python when it comes to performance

civic scroll
#

we already have type hints

neat mauve
#

the thing that you try to do

#

its just because we public

#

and others dont know shit

civic scroll
neat mauve
#

and its too complicated for others to understand

oak plank
#

Ψ§Ω„Ψ³Ω„Ψ§Ω… ΨΉΩ„ΩŠΩƒΩ…

civic scroll
#

and well "others" only concern the active party that are related to the question
as long as the one who asks understands, i don't see a problem
we can choose to explain, if other wish to know

neat mauve
civic scroll
#

feed it to LLVM

#

and bam

neat mauve
civic scroll
#

i mean it's both and none right?
there are two kinds of opts, and one of which doesn't really care about what it runs on

neat mauve
civic scroll
#

nah that doesn't concern me

#

at least for me

#

if one doesn't know, one can ask

neat mauve
civic scroll
#

what?

#

if you don't want answers, what's the point of asking?

#

one asks because one wish to learn more about the very thing one asks for
(unless i get your message incorrectly)

neat mauve
# civic scroll if one doesn't know, one can ask

with the knowledge i got from the social activity i had and all experiences. I say no. PEople wish to have others ask. but thats not true. they do not accept that they do not ask. especially people in the area of informatics tend to not understand social actions/emotions /interactions and all very well. thus they are most likely assuming people will just ask. but thats a fatal assumption. They will most likely NOT ask. especially NOt if it gets to complicated

civic scroll
#

i'd say their lost
we can only assume so much about possible intentions

neat mauve
#

also someone asking or not doesnt make the point of asking obsolet

#

wtf

sharp geyser
#

Right, now to talk about whether or not asm is good

civic scroll
#

if someone doesn't ask, there are a bazillion reasons as to why that action was taken

#

we will never know

neat mauve
#

you ask because you feel the need to ask and you asking because you encouraged to do so any you are feeling confident about understanding the answer and not being shy and 100 other reasons that come into account here

civic scroll
sharp geyser
#

We need to make roller coaster tycoon 3

civic scroll
#

we don't even know who's looking at the chat rn, let alone their intentions

neat mauve
civic scroll
neat mauve
#

and you assuming the world around you acts like you... and shall act like you. you do not take repsonsibility for what you dont want to see

#

rather then seeing the whole picture

sharp geyser
#

Is this turning into a philosophy lesson tf

neat mauve
#

its okay

civic scroll
#

the main point is to explaining to the one who asks
putting them in words that 3rd party can understand, is good, but it's extra

#

it appears that you overthink

neat mauve
civic scroll
#

yes.

neat mauve
#

viewpoint: you refue to think further

#

xd

#

Bro refuses xd

civic scroll
#

i think based on what i see

neat mauve
#

just simply refuses

civic scroll
neat mauve
#

yeah... but you right. i am overthinking things..

civic scroll
#

perhaps you think so much further that your words clipped out of bounds

neat mauve
civic scroll
#

don't think for what you can't see
saves your head some power

#

i tried the same before and ended up not doing anything

#

i might appear like an ignorant (insert profanity here) to you, but that's what i see

sharp geyser
#

Im like genuinely confused

civic scroll
#

i'm the main participant and i'm very perflexed

#

anyway if you are interested in roller coaster tycoon 3 in asm, i'd recommend MSIL
someone made a horror maze game with it

neat mauve
# civic scroll don't think for what you can't see saves your head some power

yeah, that doesnt help anyone... not even the company i need to lead with 5 employees which is suffering from decisions where i do not take into account all stakeholders and yet i got virtually no control of the cash income and or mood of anyone, only by complex thinking... let alone other things i got to manage besides that....

So yeah. I am definitely overthinking this here and should stop. and save power for other things. But it was fun talking to you ❀️

neat mauve
civic scroll
civic scroll
#

have a nice day, and may your company prosper

radiant kraken
earnest phoenix
#

@radiant kraken is rust being dumb or me?

#

then i remove and obviously

#

nvm, it was me

#

could've said i forgot the #[cfg(test)]

radiant kraken
#

lol

quartz kindle
#

i dont understand those tagged functions shit at all lol

radiant kraken
#

this is actually really useful

#

it's like python or rust's r'thing\escaped'

neon vault
#

β€˜

frosty gale
#

using string raw lets you paste it in and JS will treat them as literal backslashes so helpful in windows paths for example

#

sort of a developer only helpful thing

earnest phoenix
#

@radiant kraken i think i am doing too many things in threads?

#

oh lmao understood the chunks() method wrongly, woops

#

thought it would create 8 chunks of equal number of elements

#

but it creates x chunks of 8 elements

#

so i created like 450+ threads instead of the 8 i wanted for testing

frosty gale
#

linux when you try to open more than 1024 files at the same time 😠 😠

civic scroll
#

iirc you can override limit

radiant kraken
#

@civic scroll @pearl trail @covert gale @earnest phoenix the ultimate rust experience

civic scroll
#

so much memory safe

earnest phoenix
small tangle
#

i love exact file format descriptions: "The first few bytes store metadata [...]" what is few??

sharp geyser
#

probably the first 4

knotty belfry
#

What's the api to get auth token for top.gg

lyric mountain
#

none

#

the whole idea behind oauth2 is literally requiring human approval

shut cobalt
#

where can i ask for someone to make me a discord bot?

gilded plankBOT
#

@shut cobalt

You seem to be asking for something you don't have experience for or something that hasn't been done yet, but really need for your bot/server.
You can hire developers from Fiverr or Freelancer to code the things you need for your bot/server.

ionic schooner
#

ngl rust is too safe

solemn latch
#

I feel like thats the point of rust

earnest phoenix
radiant kraken
#

r/programmerhumor ahh post

earnest phoenix
turbid crest
#

Hello i hava a question im using discord hybrid sharding and now top gg displays me 145 servers but my bot has 430 servers when i remove sharding its working how can i fix that i need to use await client.cluster.broadcastEval('this.users.cache.size'); to get the total guilds?

frail tinsel
#

Only showing my own personal information but I love making these kinds of programs.

earnest phoenix
#

Looks privacy invasive, congrats

frail tinsel
#

its my admin bot only in my server. its not public.

earnest phoenix
#

Would also propose to make the background red and text yellow though

#

Will be as readable as now poggythumbsup

frail tinsel
#

yellow?

#

ill give that a go

earnest phoenix
#

Don't forget the red background

frail tinsel
#

im tryna squint as hard as i can this is working

earnest phoenix
#

pog

frail tinsel
#

i opted for white background with yellow text

earnest phoenix
#

even better

amber rose
#

Hello, how do I advertise my application on top.gg for free?

amber rose
sage bobcat
#

One message removed from a suspended account.

#

One message removed from a suspended account.

#

One message removed from a suspended account.

warm surge
#

pretty much what she said

amber rose
#

Alright, I'll add a command for that

#

😐

pearl trail
pine willow
#

Or lock commands

bitter granite
austere linden
dense glade
#

Can anyone give me the node_modules file, please?

spark flint
#

you don't get 'sent' the node_modules folder, you need to run the npm i command in the directory of your bot

dense glade
spark flint
#

please send a screenshot

dense glade
spark flint
#

i meant of the error message saying you have an old version

dense glade
#

I no longer have the error that I was looking for that folder.

dense glade
#

Can someone help me with that folder?

#

Please

deft wolf
#

Wouldn't it be easier to ask the support of the hosting you use?

dense glade
#

Can't you give me that folder?

bitter granite
#

Via npm i

deft wolf
#

node_modules is a folder that contains all the npm packages your project requires. I don't know what packages and versions your project requires, that's why there is a packages.js file where all the packages and their versions are placed. They are then installed automatically using the npm i command

bitter granite
spark flint
#

package.json*

bitter granite
deft wolf
#

πŸ€“

bitter granite
dense glade
bitter granite
dense glade
dense glade
lyric mountain
#

did you delete it or smth?

#

cuz every node project will have one

dense glade
#

I just left the package 'package.json and it gives me these errors

bitter granite
sage bobcat
bitter granite
#

There is a reason I have it in my fr list

sage bobcat
#

One message removed from a suspended account.

#

One message removed from a suspended account.

bitter granite
sage bobcat
#

One message removed from a suspended account.

crystal wigeon
#

has anyone used oracle cloud hosting?

#

wtf they giving 36 Cpus and 200GB RAM in their free tier

#

but its arm based tho

lyric mountain
#

do note it's oracle

wheat mesa
quartz kindle
wheat mesa
#

They have a β€œlimited capacity” of those and everyone and their mom is running scripts to snipe them 24/7

deft wolf
#

Sad reality when it comes to free stuff

crystal wigeon
#

Hmm

earnest phoenix
lyric mountain
#

yep, same here

#

tho in my case it was warranted lmao

#

got 24h cloudflare ratelimit when I accidentaly caused too many 4xx errors, so I set up a proxy server on oracle's

quartz kindle
#

i had a minecraft server on it

#

with 0 players most of the time

pearl trail
#

when you don’t know what to host on vps:

solemn latch
#

Lmao, facts

#

I wonder if mine is still up

solemn latch
crystal wigeon
#

scammer?

#

@solemn latch might wanna ban@abstract raven looks very sus

solemn latch
#

We dont ban for friend requests

crystal wigeon
#

he created his acc on uh 17th nov 2024

#

jsut letting you know anyway

warm surge
#

so

#

also they did same thing to me

#

but @solemn latch is right mods cant ban people because someone sent a friend request

sage bobcat
bitter granite
sage bobcat
#

One message removed from a suspended account.

#

One message removed from a suspended account.

surreal sage
#

hi chat

#

trying to set up

#

next auth and trpc

#

and i keep getting this zzz error and idk how to fix it

#

it's beautiful I know

#

nevermind

#

transpilePackages: ["next-auth"],

frosty gale
#

rust users realising the language doesn't protect them from race conditions or bad code

earnest phoenix
#

unwrap them all

frosty gale
#

it forces you to face the fact youre choosing not to handle a possible error properly

quartz kindle
#

and wrap it back with js

prime cliff
#

Wooo fully working roles and permission system vibecat

lyric mountain
#

add some dividers lul

#

but looking neat already

prime cliff
#

Dividers where? XD

errant wave
#

Hello πŸ€—

neat mauve
prime cliff
#

For my own website project

#

Django is ok at best but i don't really want clutter

#

πŸ™‚

#

A bunch of developer tools and server/docker management

lyric mountain
#

unless that's a text box

prime cliff
#

:/ very informative

lyric mountain
#

I'm bad at straight lines

prime cliff
#

The magnifier glass is a search box

#

Ah that yea i could do something like a slight background with space or something

neat mauve
prime cliff
#

It wouldn't really work well with how custom i made this anyway

#

Asp.net identity, mongodb, outh support and 2FA with webauthn support too

neat mauve
#

couldnt do better with django nor anythign else ngl

pearl trail
#

@radiant kraken is yew good?

#

or you got any recommendations

radiant kraken
pearl trail
#

oke

radiant kraken
#

you're learning rust??

pearl trail
#

nah

radiant kraken
#

so pro

pearl trail
#

nah

radiant kraken
#

now you dont have a reason to call me pro anymore

pearl trail
#

wdym

#

rust is hard

radiant kraken
#

nah

#

at least you dont have to style things visually in rust πŸ˜”

halcyon igloo
#

γ…Žγ…‡

#

μ–΄

#

λ¨Έκ³ 

#

λˆ„κ΅¬μ„Έμš”λ“€

pearl trail
#

annyeong

sage bobcat
#

One message removed from a suspended account.

eternal osprey
pearl trail
frail tinsel
#

not to be confused with
https://runescape.wiki/w/Yew

RuneScape Wiki
Yew

Yew trees are one of a variety of trees that are interactive scenery found in various places. Players with level 70 Woodcutting can chop a yew tree to obtain 187.5 experience and yew logs, which are used in Fletching or Firemaking. The respawn rate of yew trees is 15 seconds. As with all trees above normal trees and achey trees, yews can yield m...

solemn latch
#

I was confused, thanks

sage bobcat
frail tinsel
#

πŸ˜‚

real rose
warm surge
lament rock
#

jokes on me

#

what?

surreal sage
#

holy shit

#

io operations in node

#

are so bad

#

10 minutes to do something

#

write it in go

#

and invoke from node

#

done in 10 seconds

#

bye

wheat mesa
#

That’s either a problem with how you’re doing the IO ops or a β€œthis is too much data to process” problem, in which case that’s not an IO problem

surreal sage
#

38141378 times 2 ish operations

#

.<

lament rock
#

@surreal sage are you using fs promises, fs sync or fs write/read streams

#

it all heavily depends on how you're doing it. reading and writing data in a loop with either fs promises or fs sync would be the slowest but most memory efficient. Doing a Promise.all would be the fastest but take the most memory and using fs write streams could be a good balance assuming you manage how many ops you're trying to do depending on data size

#

nodejs actually has really good IO and I use node as a backend for my website and wherever possible, I use fs read streams and pipe those to the response body

neon leaf
#

Fully agree, read streams are crazy fast

#

They can easily fill my 10gbit network without issue

lament rock
#

I am writing the most cursed number logic known to man

#

Writing a pure JS lib for essentially 64bit floats and the way it works is how a normal human would do arithmetic

#

Will have all the js operators support (in the form of class members)
think BigFloat(1).add(1000).mult(2).pow(2).div(5).sub(10)
(also supports modulus, but wanted a cool output which is 801590.8)

This only shows regular numbers, but the base would be able to exceed the Number.MAX_SAFE_INTEGER and reasonably any limit on the max number representable by BigInt as it's backed by strings, but has a hard cap on the precision of the mantissa of 16 characters.
Can convert int, float, bigint, string and undefined to this intermediary representation. string obv gotta be in the format of an int or a float

#

Performance might be ass so I don't expect to use it for anything other than what I intend which is my bots economy to calculate any final value from multipliers.
It's already overflowed the max safe int a long time ago

sharp geyser
#

Can someone explain to me what an ECS is and how its used? I've looked at several sources online but no one seems to be able to really give a good explanation on how its used, but rather how to implement one yourself

#

Im still confused on topics like, how to use a ECS to interact with game logic, like unity for example.

They have game objects, or UI, or anything physically in the game, but that doesn't make it an Entity, it only becomes an entity when you "spawn" it with DOTS.

Problem is I dont understand how to interact with the game world, from the ECS "world". This goes for any engine with an ecs as well, I dont get how you are meant to mesh the two. Since it seems to me an entity is meant to be separate from this "game world", and not have any actual behaviour

dry topaz
#

I am going to be adding my bot to your website directory but in the step 2 create your bot listing it has a field "Top.gg Server URL" what is this as I can not find anything on the site about these servers?

deft wolf
#

You can ignore it

#

This is an optional field and previously allowed you to add a server that was listed on top.gg to your bot's page, but the servers were removed from top.gg

dry topaz
#

thank you

sharp geyser
#

Entity Component System

pearl trail
#

in unity? or general

sharp geyser
#

In general

surreal sage
#

go cpu usage is also better

#

won't be switching

wheat mesa
#

Components are what provide behavior, the entities themselves can sometimes have some custom behavior, but most of the time they’re just shells for the components to act on

sharp geyser
#

Well yea I understand the basics

#

but not how to actually use one

wheat mesa
#

Why’s that

#

The idea is that components are sets of reusable behavior that can be applied to as many or as few entities as you wish

lyric mountain
#

it's basically OOP

sharp geyser
#

Well, take unity for example. You don't have to use their ECS, you can function normally without it.

Though if you use their ECS its not like it replaces everything, its just an addon. You still want to use game objects and such, but not everything is an entity.

So how would I interact with those game objects from the ECS

wheat mesa
#

Game objects are part of unity’s ECS. Their whole engine is centered around ECS

sharp geyser
#

Modify their transform properties, mess with their physics etc etc

sharp geyser
#

until you bake them

#

but either way, im wondering what the role of an ecs is

wheat mesa
#

An ECS is primarily used for performance reasons

#

Iterating over tons of objects that are not living in contiguous memory blocks is very expensive

sharp geyser
#

How do you interact with say the player from an ecs, without getting all players? Systems I know are a thing, but that seems to function on every thing that has X component(s)

wheat mesa
#

You create a script component that runs a script on the object it’s put on, that’s one solution

#

That’s Unity’s typical approach

#

Even scripts in Unity are technically components, that’s why you can drag them onto your game objects

sharp geyser
#

Then how does the ecs know game state?

#

or more specifically

#

For example a player takes damage, how does an ecs handle this and update the component data accordingly? As the stuff that happens in the "game world" is separate from the "ecs world". At least from my understanding

wheat mesa
#

Usually the systems are updating every frame, some less than others. The systems are what update components

#

This is starting to get out of my realm of experience so I don’t want to mislead you on accident lol

sharp geyser
#

Nah its all good

wheat mesa
#

It’s been a hot minute since I’ve done game engine dev

sharp geyser
#

Im honestly probably jumping into the deep end

#

Im not even trying to make my own engine

#

just understanding how ecs works so I can apply it in unity or any other engine I end up using

wheat mesa
#

Here’s a good read on the implementation of an ECS, it might give you a better understanding of how it works: https://austinmorlan.com/posts/entity_component_system/

lyric mountain
#

most games have FPS and UPS, the latter is how often game state is updated

wheat mesa
#

Obviously this is massively simple for an ECS, and real ECSs have other problems to solve like signals, events, etc

lyric mountain
#

so there's a secondary thread going over your entities and updating things

#

usually fixed at 60/s

sharp geyser
#

hm

#

Honestly

#

Unity is hard

#

πŸ’€

wheat mesa
#

There’s a point when it just clicks

lyric mountain
#

the scrubbers are the update thread

#

the sliding thing is the renderer

#

ecs allows the update thread to be very efficient at running over everything doing calculations

sharp geyser
#

icic

#

Honestly im just not sure what I should make an entity with DOTS and what not to

lyric mountain
#

waffle had a ship game using ecs iirc

#

could take a look at it if it's open source

sharp geyser
#

I dont think it was made with unity tho right?

lyric mountain
#

nope, it was raw ecs

wheat mesa
#

You made the ship game :p

#

I made a different game that sucked ass bc I had to meet deadlines

lyric mountain
#

nah, it didnt suck

wheat mesa
#

You can take a look at my PhysicsSim GitHub though

#

That one is a very basic ECS implementation stolen from that article

#

It shows you how systems act upon components and how entities are tied to components

sharp geyser
#

idk if this is a dumb question

#

but how do I know when I need to make something an entity / component

wheat mesa
#

Entities are just IDs

#

That’s an oversimplification but in simpler ECS systems, entities are literally implemented as integers

#

Components are the data associated with an entity

#

Systems act upon the components to change their state

lyric mountain
#

"Aaron" (the name) is the entity, yourself as a person is the component

wheat mesa
#

Entity = object
Components = instance variables
Systems = methods

If you want to think about it in terms of OOP, this is a decent analogy

sharp geyser
#

I see

#

So my player would be an Entity, and Health, Stamina would be Components and then i'd have systems that act on these components?

wheat mesa
#

Yes

sharp geyser
#

Well

#

Then when im querying for the Health component, how do I not accidentally get enemies if I want to only get the player

#

cause enemies also have health

#

would I make Enemy and Player components (or just Enemy) to better differentiate?

wheat mesa
#

You can query components for only a specific entity in some implementations I’m sure

#

I’m not entirely sure how you’re β€œsupposed” to do it, since I haven’t done enough of that to really explain it well

sharp geyser
#

ic

#

I will continue my research then

lyric mountain
#

like, class Player extends Actor and class Enemy extends Actor

#

actor would be whatever is shared between both, like life, stamina, gear, etc

wheat mesa
#

I think usually this is why scripting starts to get involved

prime cliff
#

vibecat Audit logs with nice filtering and extra info

eternal osprey
#

Heeya, yall favourite cat is back

const voiceChannel = interaction.member?.voice.channel;

    const connection = joinVoiceChannel({
      channelId: voiceChannel.id,
      guildId: interaction.guild.id,
      adapterCreator: interaction.guild.voiceAdapterCreator,
    });

    const player = createAudioPlayer();
    const resource = createAudioResource(
      path.join(__dirname, "./music/audio.mp3")
    );

    player.play(resource);
    connection.subscribe(player);

    player.on("error", (error) => {
      console.error(`Audio player error: ${error.message}`);
    });

the bot joins, no errors, yet no music playing

untold vortex
warm surge
untold vortex
untold vortex
warm surge
untold vortex
#

i have

warm surge
#

no

untold vortex
untold vortex
#

ok

sharp geyser
deft wolf
#

Commandd

sharp geyser
#

if not a prefix I wonder what you use

lament rock
sharp geyser
#

slash commands? mentioning?

lament rock
#

Thats weird. Just write the command straight up

#

Though that's awful design. People could trigger the bot unintentionally

deft wolf
#

The power of your mind. You think about the bot using a command and it does it

sharp geyser
#

ong

#

need a nerualink to use it

#

oh god

deft wolf
#

Hell nah

sharp geyser
#

πŸ’€

solemn latch
#

Theres a lot of bots that do this, my favorite ones dont filter out bots messages.

sharp geyser
#

get two of em, and cause a loop

solemn latch
#

IIRC there was a bot a long time ago in the bot reviewing server that responded to another bots commands.

sharp geyser
solemn latch
#

yeah

warm surge
#

Bruh

warm surge
#

ok

#

@sharp geyser that bot got over 400 servers

sharp geyser
#

ok?

warm surge
#

just imagine saying helo me guys and the bot responded first before the boys

#

hell na

#

yea that will be annoying thing

radiant kraken
pearl trail
deft wolf
#

The funniest thing is that it looks like their website is 1:1 the website of another bot

#

They even forgot to remove the link to their Patreon KEKW

untold vortex
brazen violet
#

anyone know why my bot description looks weird in top.gg but looks fine any other html preview?

#

any reasons for it to be happening?

untold vortex
sharp geyser
#

I know what it means

pearl trail
#

hmm

#

fake server count?

#

it is listed as it is in 806 servers while the actual one is 422

#

idk idc

deft wolf
warm surge
#

but

#

tf

brazen violet
lyric mountain
warm surge
#

indeed

lyric mountain
lyric mountain
#

I must not

lament rock
#

Slash commands are the greatest thing to grace bots

surreal sage
#

scale from 1 to 10 how badly do i want to kill myself: 10

prime cliff
#

vibecat Making some really good progress

raven nexus
#

is there any module recommand to do TTS?

lament rock
lament rock
raven nexus
#

I have try the google tts but I scare when upload to the host and it won't work

eternal osprey
#

hey is there a way to check if a song is copyrighted?

surreal sage
pearl trail
#

do better next time /j

lyric mountain
raven nexus
#

Tts in general @lyric mountain

lyric mountain
#

well, there are quite a bunch of options out there, you could select 4 or 5 and give them a try

surreal sage
#

dependabot my opp

prime cliff
sharp geyser
#

Is this like portainer

prime cliff
#

Server, docker, website and project management with other dev tools so yea a bit like portainer but more features and control πŸ™‚

#

Portainers roles and access sucks and other annoying things

sharp geyser
#

Sounds cool

pearl trail
#

there's no more <@!user_id> in discord's message?