#voice-chat-text-0

1 messages ยท Page 235 of 1

narrow salmon
#

like the ocean my friend

rugged root
#

At low or high tide

narrow salmon
vocal basin
#

the website back-end is a singular Rust binary, no microservices

rugged root
#

Wait what?

vocal basin
#

cost of writing a separate auth service is not worth it

whole bear
vocal basin
#

twice

#

it worked

#

both times

whole bear
#

what do u want to do ?

#

i dont get it

stark river
#

anybody know what create mask and directory mask values need to be set in samba config to make shared dir writeable?

frosty star
#

I love your puns hemlock they're the bestest

#

THE BEST

vocal basin
#

(if this wasn't clear enough for whatever reason, I'm adding it not trying to add, I don't need any help)

rugged root
stark river
whole bear
vocal basin
#

the hardest part was debugging an invalid client secret, because error messages from Discord are bad

#

I also managed to get Discord API to return 500

rugged root
#

500 is on their side, right?

vocal basin
#

yes

#

you're talking about token not secret

#

secret is server-side

#

even though it's called client secret

#

client_id and client_secret are app-specific (accessable by a developer)

#

app (server) sends requests with a client_secret

#

to get a token

whole bear
#

ya

frosty star
#

pfft

whole bear
#

so u do have a issue with that

frosty star
#

thats fuuny

vocal basin
#

the issue was that I had an invalid client_secret for whatever reason

#

but the API doesn't tell that

whole bear
#

oh

vocal basin
#

it says invalid_client

#

on most of its errors

whole bear
#

ya cause it dont find that client i think

frosty star
#

egh

vocal basin
frosty star
#

you can make a litmus strip from cabbages

#

oh

vocal basin
#

parser error likely

frosty star
#

ok bye guys it's been fun

whole bear
#

'grant_type': 'authorization_code',

vocal basin
#

yes

whole bear
#

or refresh

vocal basin
#

that's what makes one error go away

whole bear
#

u need to pass it

vocal basin
#

most all other errors are classified as invalid_client

whole bear
#
import requests

API_ENDPOINT = 'https://discord.com/api/v10'
CLIENT_ID = '332269999912132097'
CLIENT_SECRET = '937it3ow87i4ery69876wqire'
REDIRECT_URI = 'https://nicememe.website'

def exchange_code(code):
  data = {
    'grant_type': 'authorization_code',
    'code': code,
    'redirect_uri': REDIRECT_URI
  }
  headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
  }
  r = requests.post('%s/oauth2/token' % API_ENDPOINT, data=data, headers=headers, auth=(CLIENT_ID, CLIENT_SECRET))
  r.raise_for_status()
  return r.json()

check this

vocal basin
#

another non-invalid_client error is invalid_grant

half oxide
#

what this

vocal basin
#

and invalid_grant actually says what went wrong

#
{'error': 'invalid_grant', 'error_description': 'Invalid "code" in request.'}
vocal basin
#

compare to:

{'error': 'invalid_client'}
vocal basin
vocal basin
#

and the error is the same

whole bear
#

ya thats what im trying to say

#

ask chat jpt ๐Ÿ˜…

vocal basin
#

iirc, token-use errors are more descriptive

#

GitLab has CI

#

that's all I know

#

I use Gitea's CI because I'm a masochist Gitea uses less system resources

#

(that one is just act runner mentioned eariler here)

#
  • it's GitHub-compatible in parts
#

JS web frameworks often do SSR

#

yeah, jinja is server-side

#

Next.js and other do some both-sides logic

#

Next.js can render parts of the page on the server side, iirc

#

no idea either

#

haven't benchmarked which is faster

#

it's likely a trade-off

#

giant ignore-everything file

#

(except for .idea)

rugged root
#

Wait

#

You want the .idea to go with it?

vocal basin
#

.idea is partially ignored

rugged root
#

That always confused me

vocal basin
#

.idea is like .vscode
it has project-specific settings

#

Rust's log crate is still at version 0.4.20

#

I wonder how long it'll last

#

my employer likely doesn't know I have a GitHub account

rugged root
vocal basin
#

complete audit
self-host

#

Mattermost

#

that's what we had at school

#

that one is self-hosted

#

I completely forgot I used to host it too

rugged root
vocal basin
#

they shouldn't

#

at least in url

#

usually if it runs php, there is a way to have urls without .php render the php file anyway

#

and, iirc, that's default

rugged root
#

Ah right right

vocal basin
#

yes

#

and same for php legacy

#

URL: index.php
back-end: Next.js

#

quite common sadly

#

(because of using URLs with extensions at all)

#

I think it's okay-ish for .html/.htm
for static sites which can be opened from the filesystem

#

yes

#

webkit

#

jscore

#

Rust exists because of Firefox's web engine, iirc

rugged root
#

That sounds right

vocal basin
#

if it renders HTML and not only TeX it's probably quite new

#

TeX is, like, around 45 years ago, or something like that

#

"just imagine what web would look like if TeX won over HTML"

woeful salmon
# vocal basin usually if it runs php, there is a way to have urls without .php render the php ...
        location / {
            root   html;
            index index.html index.htm index.php;
            try_files $uri $uri.html $uri/ @extensionless-php;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

         # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

        location ~ \.php$ {
           root           html;
           fastcgi_pass   127.0.0.1:9123;
           fastcgi_index  index.php;
           fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
           include        fastcgi_params;
        }

        location @extensionless-php {
          if ( -f $document_root$uri.php ) {
              rewrite ^ $uri.php last;
          }
          return 404;
        }
#

that's how i did it in nginx

vocal basin
#

that also removes .php from URI, if I understand correctly

woeful salmon
#

yep

woeful salmon
#

using php with a next.js backend? o-o

vocal basin
#

(common web situation)

woeful salmon
#

does it need to end with .php or both work?

#

cuz i don't see why having both be valid wouldn't work

vocal basin
woeful salmon
#

if it was me i would probably just make it so its valid both with and without .php

vocal basin
#

@rugged root allegedly, there's also a problem that US has traffic circles as a more common thing

rugged root
#

Yeeeeeeep

#

Most of ours are traffic circles, actually

#

Looking at this

vocal basin
obsidian dragon
woeful salmon
#

i can see that being a thing but i do think its a bit dumb
pithink from a user experience perspective its always easier to not use an extension on the url and its also it feels lesser like accesing a website from 2001, meanwhile any other piece of code that might be trying to access an old url with .php or something it would work too

vocal basin
#

yes

#

oh, Nextcloud finally doesn't have .php in the URLs

#

I just noticed

#

might've been changed a couple of couples of versions ago

woeful salmon
#

nice

vocal basin
#

meanwhile a project that I help hosting:

stark river
#
[win_shares]
    path = /home/sazk/win_shares
    browseable = no
    create mask = 0775
    directory mask = 0700
    valid users = sazk
#

still can't write from win vm

vocal basin
woeful salmon
#

btw i recently learnt that all opengl and glsl i learnt till recently and made projects with were all legacy opengl as people still teach legacy opengl for the sake of ease in courses even to this day so i just learnt how to convert all my code for my physics engine to opengl 4 and spent hours already and it looks shit and now i have to figure out how to make it so you can choose between opengl and direct3d for rendering T-T

stark river
vocal basin
#

or, rather 20 years + however outdated it was at the time

frosty star
#

Hi noodle

#

Yeah

#

๐Ÿ˜„

woeful salmon
#

how are you?

frosty star
#

Im good tryna sleep but cant

#

My sister just gave birth so im stoked to meet the baby tmroww

rugged root
#

Daww

#

Boy? Girl? Other?

woeful salmon
rugged root
#

Hamster?

frosty star
#

Boy

rugged root
#

Probably ha- ah okay

woeful salmon
frosty star
stark river
#

why browse when u can curl

vocal basin
#

> everything they like
and everything they don't like

woeful salmon
vocal basin
#

tsatan

#

(latin c in some languaes is pronounced ts)

peak depot
stark river
#

i still use the links browser ๐Ÿซฃ

rugged root
vocal basin
#

web Vim

woeful salmon
stark river
#

just use tridactyl

vocal basin
frosty star
rugged root
#

Did you fail
Dude, how would we be talking to her otherwise

stark river
#

tridactyl ext + ff is better.. more options and has dns over https

frosty star
#

XD but nah its more like i out-waked my biological clock curfew so now i cant sleep. U know. One of those things.

stark river
#

qutebrowser doesn't have dns over https

vocal basin
woeful salmon
#

i personally have this weird thing i do when i can't sleep where i listen to any horror game playthrough by someone while trying to sleep xD its kinda fun

vocal basin
#

for everything Linux I just use VS Code anyway

#

(remote)

frosty star
#

Wont jump scares awakens you?

woeful salmon
#

for me if i am working on a linux machine i just pull my config file in and i have nvim just work out of the box
if i am deploying on a machine i try not to leave anything i have to do on the server machine or if i have something i need to fix i do it on my maching, push it to git remote and then pull on server

woeful salmon
vocal basin
#

can't sleep => work
can't work => sleep

#

PySide

#

PySide is by Qt

frosty star
#

Oh gosh that accent ๐Ÿ˜ณ

rugged root
vocal basin
#

"can't pick a framework => use all frameworks"

rugged root
woeful salmon
stark river
#

fuck frameworks

woeful salmon
#

want to learn for === job ? look at jobs around you and learn according to that : try all and pick what you like or don't use any

vocal basin
stark river
#

i've been recently getting work from clients who don't want a bunch of node_modules in their workspace.. so vanilla js it is

woeful salmon
vocal basin
#

for front-end-only frameworks node_modules is only compile-time thing

woeful salmon
vocal basin
#

"full-stack" ones

woeful salmon
#

ye probably

frosty star
#

Here in Malaysia if you give birth in a gov hospital itโ€™s gonna cost u like rm60 which is 10usd ish. But in private hospitals its gonna cost rm3k at least.

vocal basin
#

well then that's just server-side JS
nothing to do with frameworks

#

I use Next.js with 0 server-side JS

#

(static export is a thing)

woeful salmon
#

so just ssg?

frosty star
#

I heard travelling nurses can make a lot of money in the states

stark river
vocal basin
vocal basin
#

react is closer to libraries than frameworks

#

and Next.js there does the frameworky things

frosty star
#

Oh i should rly just sleep now. Bye everyone. Nice seeing u again @woeful salmon

vocal basin
#

Angular is by default client-side too

#

and that's a very frameworky thing

woeful salmon
#

after the thread thing

woeful salmon
# vocal basin yes

i think its not the same no? pretty sure it populates the html with all the stuff that isn't dynamic?

vocal basin
#

apart from just react it only does layout logic, if I understand correctly

#

and routes

#

I don't use dynamic (parameterised) routes at all

woeful salmon
#

oh ๐Ÿ˜ฎ

#

i mean they are needed for certain things tho

vocal basin
#

for client-specified parameters -- query string

frosty star
#

Ok i will sleep now forreallz

vocal basin
#

@mystic lily Python thread?

#

!d queue

wise cargoBOT
#

Source code: Lib/queue.py

The queue module implements multi-producer, multi-consumer queues. It is especially useful in threaded programming when information must be exchanged safely between multiple threads. The Queue class in this module implements all the required locking semantics.

The module implements three types of queue, which differ only in the order in which the entries are retrieved. In a FIFO queue, the first tasks added are the first retrieved. In a LIFO queue, the most recently added entry is the first retrieved (operating like a stack). With a priority queue, the entries are kept sorted (using the heapq module) and the lowest valued entry is retrieved first.

woeful salmon
# stark river did u try zig in aoc?

i paused on aoc, i got side tracked hard, learnt 3d modelling, learnt pixel art and basic animation and art principles, got better at making sound tracks for my games and then updated my opengl knowledge and found myself implementing another physics engine

vocal basin
#

yes then queue

#

definitely

vocal basin
#

if you have producer-consumer logic, queue

woeful salmon
vocal basin
#

and share no state across threads

#

... apart from whatever the runtime requires you to share

#

also

#

why not async

#

since it's still Python <=3.12 with GIL

woeful salmon
#

๐Ÿ’€ imagine doing atomic reads and writes to a json file at runtime from multiple threads

vocal basin
#

you can lock a file

#

and never unlock it
so it never breaks
"problem solved"

woeful salmon
#

does it matter if your reads and writes are atomic tho? ๐Ÿ˜ฎ

#

idk if you were saying that to me or not tho

vocal basin
#

"the only atomic write you're going to get is truncate/delete"

#

iirc, Python doesn't provide proper atomic writes for files

woeful salmon
#

pithink or writing to a temporary file and just doing a single write to the file?

#

we do have tempfiles in python

vocal basin
#

write on whatever is returned from open is not atomic

rugged root
#

!stream 249616904254128148

wise cargoBOT
#

โœ… @viscid scaffold can now stream until <t:1703868869:f>.

woeful salmon
vocal basin
#

write can partially succeed

#

if it's threading in Python, it's probably better to have a singular fd, I guess

#

but it's impossible to store data reliably in a single json file, as far as I know

#

it requires auxiliary files for durability

woeful salmon
#
with open(tmpFile, 'w') as f:
    f.write(text)
    # make sure that all data is on disk
    # see http://stackoverflow.com/questions/7433057/is-rename-without-fsync-safe
    f.flush()
    os.fsync(f.fileno())    
os.replace(tmpFile, myFile)  # os.rename pre-3.3, but os.rename won't work on Windows
#

found this

vocal basin
#

yes, that's using an extra file

rugged root
#

There's a temp file library built in I think...

woeful salmon
#

yeah when i said atomic write i meant using a temporary file

rugged root
#

Oh right right

vocal basin
rugged root
#

Oh der

#

It's legit just called tempfile

woeful salmon
rugged root
#

Dude

woeful salmon
#

xD

rugged root
#

HOW AM I FAILING SO BAD

vocal basin
#

if I understand correctly:
flush flushes program (user) buffers
fsync flushes filesystem (kernel) buffers

woeful salmon
#

happens

vocal basin
#

in Rust, drop fsyncs, I think

woeful salmon
#
os.fsync() method in Python is used to force write of the file associated with the given file descriptor. 
In case, we are working with a file object( say f) rather than a file descriptor, then we need to use f.flush() and then os.fsync(f.fileno()) to ensure that all buffers associated with the file object f are written to disk. 
vocal basin
#

(I think)

rugged root
#

What makes the descriptor different?

vocal basin
#

?

rugged root
#

Well what I mean is like... doesn't the object have the descriptor as a part of it?

#

I'm just not understanding why it needs the double action then

vocal basin
#

they serve a different purpose
flush commits the application buffers, so app crash doesn't lose data
fsync commits the kernel buffers, so system crash doesn't lose data

rugged root
#

Flush tosses it to the kernel buffer?

#

So it's just scooting it down the chain

vocal basin
#

I'd expect so, yes

rugged root
#

Okay, that makes sense

vocal basin
#

well, filesystem buffer
which is normally kernel-space, I think

rugged root
#

Sounds right

vocal basin
woeful salmon
vocal basin
#

CORS:
just use a proxy. just use a proxy. just use a proxy.

woeful salmon
vocal basin
#

this reminds of the time someone tried to convince me smtp.js is a good library

#

for context of how bad it is: it's in-browser

#

it's sending all credentials through XMLHttpRequest to smtp.js servers

woeful salmon
#

i know what it is

#

i saw a medium article on it a while back

#

instantly did not care cuz it sounds useless

#

even if it was secure

vocal basin
#

it's not just useful
it's actively harmful

rugged root
#

Yarp

vocal basin
#

sharing credentials with both smtp.js and all users

woeful salmon
#

i gotta go now ๐Ÿ™‚ cya guys

viscid scaffold
#

ty lego

#

i'll keep trying by my self

vocal basin
#

who is db person
there shouldn't be a db person

#

-- said not Oracle

rugged root
#

Right?

amber raptor
#

What's the issue?

viscid scaffold
#

this is the current output from the browser

#

it comes as a apigateway event, is a post request

#

a form, in the frontend

#

i'm working with the frontEnd guy rn ty so much

rugged root
#

Well of cors you would have that

amber raptor
#

someone should build multi node container management system

rugged root
#

Your pain from my puns feeds me

amber raptor
rugged root
cinder dawn
#

afternoon

rugged root
#

How goes it

cinder dawn
#

it goes great, moved onto learning java. did you just get admin?

rugged root
#

Nah, been admin for a while. Stepped down for a time due to life stuff, but I'm back

#

For a long while

#

Been admin most of the time I've been on the server, come to think of it

cinder dawn
#

i got confused by your nickname ha!

rugged root
#

Yeah there was a joke that just carried on to most of the admins

#

(context is talking about enterprise bs)

hearty plinth
#

whats happening btw

scarlet halo
#

helo

lavish rover
#

some hot takes here LOL

somber heath
#

@stable geyser ๐Ÿ‘‹

stable geyser
#

Hello

#

I do not have permission to speak

somber heath
#

!voice ๐Ÿ‘‡

wise cargoBOT
#
Voice verification

Canโ€™t talk in voice chat? Check out #voice-verification to get access. The criteria for verifying are specified there.

dreamy relic
#

hello

somber heath
#

@dreamy relic ๐Ÿ‘‹

dreamy relic
#

I need some help understanding something with print not working

#

im trying to automate some simple tasks

#

all of them lol

#

I had to add time sleep in order for it to print in console

#

no errors when i run the scrips

#

they print when I add sleep

#

here

#

correct

#

yes

#

3.10.1 py btw

#

what/

#

?

#

oh, VSC

#

I just run it with python console

#

the sleep 4

#

the first one, if you remove the time sleeps

#

second one is still a work in progress

#

when you remove the time.sleeps?

limber copper
#

pass: game
welcome gamer
music started

dreamy relic
#

huh....

#

I am, yea...

#

I run it in py.exe

limber copper
#

pass: game
welcome gamer
music started
Discord started
google opened
CPU Execution time: 0.0 seconds
Have fun!

dreamy relic
#

thats... frustrating lol

#

ill give that a try

#

from vsc?

#

ohh, idk how to do that

#

I just run the file

#

thats the file open with python

#

ill remove the times and see

#

its working now.... wft lmfao

#

maybe I have to close the VSC instance before trialing my stuff

limber copper
dreamy relic
#

right? lol

#

trust, I was using subprocess and that was a nightmare to do this simple task

#

I mean... yeah lmfao

#

ahhhh

#

ty

#

cause the next question is why there is a space between the webbrowser.open and os.startfile()

#

in the terminal

#

like as if theres a \n

#

it does it with both os.startfile and subprocess

#

lmfao

#

facts

#

try with what?

lavish rover
#

python -U

limber copper
#

pass: game
welcome gamer
music started
Discord started
google opened
CPU Execution time: 0.0 seconds
Have fun!

dreamy relic
#

AAAAAAAAAAAAAAAAAAAA

#

lol

dreamy relic
#

im having a hard time hearing you sorry

lavish rover
#

when running the script, python -u script.py or whatever

#

lowercase u, sorry

dreamy relic
#

sorry, talk to me like im 4years old... where does that -u go?

lavish rover
#

in the command when running the script

dreamy relic
#

ohhhh

limber copper
#

so open your folder that contains your script and then run cmd promt from that folder and then use the cmd that segfault mentioned

lavish rover
# dreamy relic

you see the command being run here at the top, looks like

C:/Python310/python.exe "..."

just add a -u after python.exe and run it manually

C:/Python310/python.exe -u "..."
dreamy relic
#

still space

#

itd be so much easier to talk lol

#

is what it is

#

im going to fix the pathing for the elif and see if that space happens there too. be back

#

np, will do!

#

looks like every time I open an aplication I get a space inbetween. dothe \ characters act like special characters? I read that somewhere, but putting two \ would cancle the character format?

#

@limber copper

#

sorry for ping ;-;

limber copper
#

np \ does

#

the \n creates a new line

#

the \ alone may not sure

dreamy relic
#

os.startfile('C:\\Users\\jayda\\AppData\\Local\\Programs\\Microsoft VS Code\\Code')

#

im so confused about this stupid space

limber copper
#

try using / instead of two \ it should work also the same but only the \ once usually will be considered as special not two \

dreamy relic
#

good ole discord formatting

#

lol

limber copper
#

yeah lol

#
# \\
# /
``` lol
dreamy relic
#

the double space moved to the bottom now. changed the \\ to /

#

oh well.

#

at least the prints are working

#

that was my main issue lmao

#

VSC for the win

#

by chance, have you ever worked with selecting open windows/key use(like a macro)? my plan for this project is to start on boot once you login. I want to format the different programs and pages between three monitors. just not sure what direction to head for that.

I found subprocess and was a complete dumpster fire for this specific application

somber heath
#

@young beacon ๐Ÿ‘‹

#

What's a one-eyed kitten's favourite toy?

#

||Yarrn.||

#

!voice ๐Ÿ‘‡

wise cargoBOT
#
Voice verification

Canโ€™t talk in voice chat? Check out #voice-verification to get access. The criteria for verifying are specified there.

wind raptor
#

Welcome @naive obsidian ๐Ÿ‘‹

naive obsidian
#

hey

#

i coudnt talk

wind raptor
#

!voice

wise cargoBOT
#
Voice verification

Canโ€™t talk in voice chat? Check out #voice-verification to get access. The criteria for verifying are specified there.

naive obsidian
#

bc it needs some permisson trouble

vocal basin
#

open-sourcing parts of it

wind raptor
#

nice. did you get reconnects going?

scarlet halo
#

my snek has pooped :(

vocal basin
#

other than that, I added:
Elo rating
Discord auth
flags
chords

vocal basin
#

and, as a consequence of how it works it syncs across all tabs within a session

vocal basin
#

feature

#

state is event-sourced

wind raptor
#

noice

vocal basin
#

I'll soon publish a generic version of that system

#

(it replays all events whenever a new connection appears)

vocal basin
wind raptor
#

Just ask your question here @languid rose

naive obsidian
scarlet halo
#

i dont think it pings if you edit but im not sure

wind raptor
scarlet halo
#

you can google it dont trust me

vocal basin
#

iirc, it renders as ping but doesn't notify

naive obsidian
#

i got this message from a bot about voice trouble :Voice Gate failed
You are not currently eligible to use voice inside Python Discord for the following reasons:

You have been on the server for less than 3 days.
You have sent less than 50 messages.

scarlet halo
naive obsidian
#

i couldnt speak i guess

scarlet halo
wind raptor
vocal basin
scarlet halo
#

rust, cool.

vocal basin
#

.concurrent, .multicast_buffered, .multicast_bufferless, .echo are provided by the library

scarlet halo
#

i kinda wanna make a text editor LIKE neovim but also like nano

#

so it doesnt have modes

vocal basin
#

!voice

wise cargoBOT
#
Voice verification

Canโ€™t talk in voice chat? Check out #voice-verification to get access. The criteria for verifying are specified there.

scarlet halo
#

imma brb for a min

#

before i go

#

say goodbye to snek

#

snake

#

YEAH

#

she says goodbye to u too :)

#

:)

vocal basin
#

it uses a linked list instead of a VecDeque for queuing messages

#

singly-linked with writable tail

#

likely not

#

I try to avoid allowing any user-generated content (nicknames, messages, etc.)

#

it is a website, and it was playtested a bit already

#

it's very non-scalable for now

quasi heart
#

guys if u are a good py programmer or know about hacking dm me
im making a team โค๏ธ
Fuck Bug ๐Ÿ‘พ

vocal basin
#

distributed matchmaking and ratings is the hard part, I think

#

(for scalability)

#

Elo is already there

#

synchronising it is difficult

#

MacOS is closer to Unix, I think

#

Elo, from DB's point of view, is a series of change-two-values transactions

#

it's easy to express if there's already a system to handle them

#
read rating_1 rating_2
calculate
write rating_1 rating_2
#

so, yeah, that seems simpler than matchmaking

#

there must always be a single server handling a (player, lobby) pair

#

so, I guess, multi-server setup would be like this:

ask the cluster for a server already dealing with the pair
if not found, claim it
if the claim failed, start over
#

lobbies themselves can be distributed

#

whenever a pair is found, one of two servers would become responsible for handling the game

#

"gambling investing"

#

it's closer to what hedge funds do

#

which isn't exactly investing

#

too volatile

neat bramble
vocal basin
#

miners are guaranteed to lose money, so I guess that's where the "gains" are coming from

#

there are ways to make mining beneficial through making the process depending on validating the chain
i.e. to make an algorithm which (probabilistically) breaks down if there's a lost block

#

miners rn aren't really validating anything

#

(not required)

#

they're just signing the thing with "I've spent work trusting this chain, please prioritize it"

#

well, finance generally too

vocal basin
vocal basin
#

I need to find the properly formatted meme

#

I can't find it

#

I've sent it once here and once in another server

#

but getting through thousands of messages would be suboptimal

#

likely very high margin

#

because demand

#

cloud was high margin from basically the beginning

#

with AWS financing the success of the rest of Amazon

vocal basin
#

and in the end the cryptocurrency aspect of it became less important for me

#

implementation in Rust rn has nothing to do with c.c.

#

(unlike Python implementation)

eager thorn
#

i hate talking about crypto cause it gives me flashbacks to that one time i dabbled in it.

vocal basin
#

I guess (lobby,player) nodes should be connected to match nodes too

wind raptor
#

Hey @rugged tundra ๐Ÿ‘‹

wise loom
#

@vocal basin have you ever been part of a reading group on Discord?

vocal basin
#

idk what qualifies as such

#

specialised server/group -- no
temporary "event" -- yes

wise loom
#

@abstract rock bro, i've muted you

abstract rock
wise loom
#

i'm trying to remember life before discord

thin fox
#

Hi, people around the world, I would like to know how is your region doing regarding hiring in Software industry, specifically with the fresher (with 0yr Full-time experience)

dreamy relic
#

hello

wind raptor
wind raptor
dreamy relic
#

are you familiar with os.startfile()?

wind raptor
#

What did you want to know about it?

dreamy relic
#

im using it in a simple automation script, however when I launch discord with it, blackbox takes over and doesnt complete the loop

#
import webbrowser
#import subprocess
import time
import os

st = time.process_time()
et = time.process_time()
res = et - st

tries = 3

while True and tries > 0:
    choice = input("pass: ")

    if choice == 'game': 
        print("welcome gamer")
        webbrowser.open('https://www.youtube.com/watch?v=EUQe85b5VgQ&list=UULFJBpeNOjvbn9rRte3w_Kklg')
        print('music started')
        os.startfile("C:\\Users\\jayda\\AppData\\Local\\Discord\\app-1.0.9028\\Discord")
        #subprocess.Popen("C:\\Users\\jayda\\AppData\\Local\\Discord\\app-1.0.9028\\Discord")
        print('Discord started')
        webbrowser.open('https://www.google.com/')
        print('google opened')
        print('CPU Execution time:', res, 'seconds')
        print('Have fun!')
        time.sleep(10)

    elif choice == 'code':
        print("welcome coder mem")
        time.sleep(4)
        webbrowser.open('https://www.youtube.com/watch?v=EUQe85b5VgQ&list=UULFJBpeNOjvbn9rRte3w_Kklg')
        print('Music started')
        webbrowser.open('https://stackoverflow.com/')
        print('Hecking started')
        os.startfile("C:/Users/jayda/AppData/Local/Discord/app-1.0.9028/Discord")
        print('Discord started')
        os.startfile('C:/Users/jayda/AppData/Local/Programs/Microsoft VS Code/Code')
        print('VSC opened\nCPU Execution time:', res, 'seconds''\nHave Fun!')
        time.sleep(10)

    
    else:
        tries = tries - 1 
        print("incorrect")
wind raptor
#

blackbox?

dreamy relic
vocal basin
#

does the Discord UI open too?

dreamy relic
#

if its not allready open yes

#

VSC starts a new instance

vocal basin
#

yeah, you should probably be using subprocess.Popen with proper parameters

wind raptor
#

It doesn't block the rest of your script

vocal basin
#

no stdout, no stder, no stdin

#

and no wait

dreamy relic
#

I was using that, however blackbox still takes over... tho, I wasnt using parameters

vocal basin
#

Popen detaches by default, iirc

dreamy relic
#

while going over the subprocess docs I came to the conclusion it was more for sourcing info and relaying that back, or thats what I took from it?

vocal basin
dreamy relic
#

also, is there a way to hand off those programs back to windows?

#

for example, when running this and those programs start in py, when you close the py UI, it closes the programs

vocal basin
vocal basin
#

start_new_session=True to avoid closing everything when the script is interrupted

dreamy relic
#

with subprocess?

#

oh

#

I see it

wind raptor
#

you can also run the process headlessly using a -headless flag

#

if you don't want the window popping up

vocal basin
#

bot and Django?

#

how are you connecting them? @whole bear

cursive gust
dreamy relic
#

the idea is to eventually use something like a key input to win+dir to place the windows in different monitors

vocal basin
#

does the bot do requests to the API or is there a message broker in between?

#

okay

#

for interactive requests to the bot, there are message/work queues (rabbitmq, beanstalkd)

#

at which point it's probably a good to have already been having the bot and web as separate containers

#

it took me some time to find this

#

because I didn't know what to look for

#

AQMP has support for RPC itself

#

via reply-to and correlation-id

#

yeah, just remember this when you need anything more complex~~, so Rabbit doesn't get angry at you~~

#

well, if it's a dashboard, it might make sense to send requests to the bot

#

so the reply is up-to-date

whole bear
#
profile = await sync_to_async(Profile.objects.get)(discord_id=interaction.user.id)
vocal basin
#

the bot can query the Django API

#

is the bot accessing the DB directly?

#

with Django ORM?

#

so just whatever SQL engine there is

whole bear
#
import asyncio
import inspect
from django.core.management.base import BaseCommand
from django.db import models
from accounts.models import *
from typing import Optional
from asgiref.sync import sync_to_async
import discord
from discord.ext import commands
from discord import Option

import json
import requests
from discordbot.models import *
bot = discord.Bot(intents=discord.Intents.all())

@bot.event
async def on_ready():
    print(f'Logged in as {bot.user} (ID: {bot.user.id})')
    await bot.wait_until_ready()
    total_members = 0
    for guild in bot.guilds:
        total_members += guild.member_count
    print(total_members)
    await bot.change_presence(activity=discord.Activity(type=discord.ActivityType.watching, name=f"{len(bot.users)}"))


class Command(BaseCommand):
    help = "Run the discord bot"

    def handle(self, *args, **options):
        print("Start running the bot")
        bot_settings.save()
        bot.run(
            '')
        
        
vocal basin
#

you should probably replace requests with httpx at some point

#

(for async support)

#

discordbot.models contains Django models, right?

#

so it is using the ORM

#

probably warning

#

not error

whole bear
#

Today I'm starting a new project to handle a discord community. It's going to use Python, Django and then later on discord.

In this episode we look at the database design, and I show how my thinking goes before I've even cut a line of code, in particular, a third normal form database diagram, and then straight into the models.py file to code ou...

โ–ถ Play video
vocal basin
#

the stricter approach would be to have internal API routes specifically for the bot to use them

#

so there's no Django-related code in the bot at all

whole bear
#
new_guild = await sync_to_async(Guild.objects.create)(
                guild_id= guild.id,
                guild_name= guild.name,
                guild_icon= guild.icon,
                guild_owner_id= guild.owner_id,
     

                )
vocal basin
cursive gust
#

!e crash

wise cargoBOT
#

@cursive gust :x: Your 3.12 eval job has completed with return code 1.

001 | Traceback (most recent call last):
002 |   File "/home/main.py", line 1, in <module>
003 |     crash
004 | NameError: name 'crash' is not defined. Did you mean: 'hash'?
cursive gust
#

!e import random

def generate_word(min_length, max_length):
letters = "abcdefghijklmnopqrstuvwxyz"
word = ""
for _ in range(random.randint(min_length, max_length)):
word += random.choice(letters)
return word

random_word = generate_word(3, 7)

print(f"Your random word is: {random_word}")

wise cargoBOT
#

@cursive gust :white_check_mark: Your 3.12 eval job has completed with return code 0.

Your random word is: xgndka
cursive gust
#

Xgndka

#

It's me Xgndka

wise cargoBOT
#
Bad argument

Unable to convert 'snekbox' to valid command, tag, or Cog.

vocal basin
#

!source

wise cargoBOT
wind raptor
#

!source e

wise cargoBOT
#
Command: eval

Run Python code and get the results.

Source Code
vocal basin
#

"not because of Java. because of Oracle"

#

I've never used Java for an actual project

whole bear
vocal basin
#

"managed to get out of working for Oracle -- already a success story"

dreamy relic
#
while True and tries > 0:
    choice = input("pass: ")

    if choice == 'game': 
        print("welcome gamer")
        webbrowser.open('https://www.youtube.com/watch?v=EUQe85b5VgQ&list=UULFJBpeNOjvbn9rRte3w_Kklg')
        print('music started')
        #os.startfile("C:\\Users\\jayda\\AppData\\Local\\Discord\\app-1.0.9028\\Discord")
        subprocess.Popen(
            r"C:\Users\jayda\AppData\Local\Discord\app-1.0.9028\Discord.exe",
            stdout=subprocess.PIPE,
            stderr=subprocess.PIPE,
            stdin=subprocess.PIPE,
            start_new_session=True,
        )
        print('Discord started')
        webbrowser.open('https://www.google.com/')
        print('google opened')
        print('CPU Execution time:', res, 'seconds')
        print('Have fun!')
        time.sleep(10)

I could have implemented it wrong tho

wind raptor
#

I thought the first param had to be in a list?

vocal basin
dreamy relic
#

the py file closes and discord doesnt open

wind raptor
#

I haven't used it in a long while

#

...\app-1.0.9028...

also, won't this break every time Discord updates

vocal basin
wind raptor
vocal basin
#

while looking for this

dreamy relic
vocal basin
#

try replacing PIPE with DEVNULL

vocal basin
# vocal basin while looking for this

context:
Bryan Cantrill calls both Oracle (or sometimes its ex-CEO, Larry Ellison) a "lawnmover" for the lack of care and other stuff
"no, lawnmover doesn't hate you, it can't hate you, it doesn't care"

whole bear
# dreamy relic

ุณู„ู…ู„ูŠ ุนู„ูŠ ุฌุงูŠุฏู‡ ุจุณ

dreamy relic
#

also, that file path name is pretty unrelated

wind raptor
#

future problem.. Discord updates quite often.

dreamy relic
#

I wrote a music bot in autocode (node.js with HTTPS handoffs), and it was every freaking month something was breaking. between yt, spotify, and discord.

wind raptor
#

The joys of using other people's shit ๐Ÿคฃ

dreamy relic
#
let currentInfo = await lib.discord.voice['@release'].tracks.retrieve({
    guild_id: guild_id,
  });

I just kept releasing the version lmao. fixed allot of my issues

#

then it was up to the lib to fix their stuff for discord

vocal basin
#

discord sometimes gets voice connectivity issues
(which~~, apart from usecases you shouldn't be asking for help on here,~~ affects stuff like TTS bots)

dreamy relic
dreamy relic
#

thank you again

dreamy relic
#

now im going to go figure out how what you implemented worked

scarlet halo
#

HELLO

#

@wind raptor hyd

vocal basin
#

hiding why?

#

@earnest crag
don't hide. put a token for the access

#

or don't create a route at all

#

or deny it in the proxy

#

from browser?

#

if it's from browser, you can't hide it

wind raptor
#

!stream 939245274126250015

wise cargoBOT
#

โœ… @earnest crag can now stream until <t:1703969303:f>.

vocal basin
#

the user sees all the traffic

#

@earnest crag this is browser-side, right?

#

the JS

#

then you can't hide the traffic

#

do you want to restrict which user sees what?

#

for that you need authentication

clear portal
#

no code highliting

vocal basin
#

@earnest crag where is sign-in/sign-up?

earnest crag
vocal basin
#

authentication for "who is who"
authorization for "who can do what"

earnest crag
#
int x = 5;
clear portal
vocal basin
#

ace editor

#

for web

clear portal
vocal basin
#

JS libraries

clear portal
#

yeah i publish all of my codes under AGPL :))))))))))))))))))

scarlet halo
clear portal
scarlet halo
#

more what

clear portal
#

more gpl stuff. idk ๐Ÿ˜‚

scarlet halo
#

cool

#

i totally understand

clear portal
#

@earnest crag cookis are browser based

#

the brower keeps track of them

#

yep

vocal basin
clear portal
#

js is easy

vocal basin
#

no, not their site

earnest crag
clear portal
#

thats even easier

vocal basin
#

they both provide an element that you can interact with

#

you can place it wherever necessary

earnest crag
#

@wind raptor screen share pls

wind raptor
#

!stream 939245274126250015

wise cargoBOT
#

โœ… @earnest crag can now stream until <t:1703969986:f>.

earnest crag
clear portal
#

@earnest crag quick question. where are you from. you sound like a eastern european

clear portal
vocal basin
#

what are you storing text in? <textarea>?

clear portal
#

div ๐Ÿ˜‚

earnest crag
#

js

earnest crag
clear portal
#

scss ?

vocal basin
#

just adding classes and scripts should be enough

<textarea class="prism-live line-numbers language-html fill" id="ihtml" style="--height: 50vh"></textarea>
<script src="lib/bliss.shy.min.js"></script>
<script src="lib/prism.js"></script>
<script src="lib/prism-live.js"></script>
clear portal
#

yes i know

#

i love it

vocal basin
#

you also need to download prism.js

earnest crag
clear portal
#

in the lib dir

earnest crag
vocal basin
clear portal
#

well actuly you have to put in static/lib/

vocal basin
#

wherever you chose to put them
you can change it something else

clear portal
#

select all

clear portal
vocal basin
#

worked fine for me

clear portal
#

๐Ÿ˜‚ thats awesome

earnest crag
vocal basin
vocal basin
clear portal
#

select all

earnest crag
#

<script src="lib/prism-live.js"></script>

#

where is prism-live.js

vocal basin
#

I don't remember where to download it from

clear portal
#

Prism Live: Lightweight, extensible editable code editors. A work in progress, try it out at your own risk (and report bugs!) ๐Ÿ™‚

vocal basin
#

it's a theme I think

clear portal
#

A work in progress

vocal basin
earnest crag
#

I GOT HIS

clear portal
#

U dont need the live thing

clear portal
earnest crag
clear portal
#

<link ...

#

<link href="themes/prism.css" rel="stylesheet" />

earnest crag
clear portal
#

<link href="../static/prism.css" rel="stylesheet" />

#

static

vocal basin
#

seems working

#
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <link href="prism.css" rel="stylesheet"/>
    <link href="lib/prism-live.css" rel="stylesheet"/>
</head>
<body>
<div class="box">
    <div class="editor">
        <textarea class="prism-live line-numbers language-c fill" id="ihtml" style="--height: 50vh"></textarea>
    </div>
</div>
<script src="lib/bliss.shy.min.js"></script>
<script src="prism.js"></script>
<script src="lib/prism-live.js"></script>
</body>
</html>
earnest crag
#

<script src="lib/bliss.shy.min.js"></script>
<script src="prism.js"></script>
<script src="lib/prism-live.js"></script>

vocal basin
#

prism you already have

earnest crag
earnest crag
vocal basin
#

missing styles

#

prism-live.css

#

then prism-live.js

clear portal
#
// The code snippet you want to highlight, as a string
const code = `var data = 1;`;

// Returns a highlighted HTML string
const html = Prism.highlight(code, Prism.languages.javascript, 'javascript')
clear portal
#

yeah

wind raptor
#

Be back in a bit.

vocal basin
#

just add classes to the existing textarea

vocal basin
#

I don't remember how to configure --height properly

#

in the original code I had it at 40vh because there it was fine

#

it may potentially be resizable without that parameter

earnest crag
vocal basin
#

add each class separately

#

it's 4 classes not 1

vocal basin
earnest crag
vocal basin
#

it might also not work because prism-live isn't live enough

#

okay, if that doesn't work, then use ace.js

earnest crag
#

<div class="editor">

vocal basin
#

I don't know

#

I don't think it's necessary

#

just used it to pull text out of it

#

!paste

wise cargoBOT
#
Pasting large amounts of code

If your code is too long to fit in a codeblock in Discord, you can paste your code here:
https://paste.pythondiscord.com/

After pasting your code, save it by clicking the Paste! button in the bottom left, or by pressing CTRL + S. After doing that, you will be navigated to the new paste's page. Copy the URL and post it here so others can see it.

clear portal
vocal basin
#

you can also

#

steal take editor code from there

#

whatever the specific language says

earnest crag
#

snake_case camelCase

vocal basin
#

for Python pep8 says

#

!pep8

wise cargoBOT
#
PEP 8

PEP 8 is the official style guide for Python. It includes comprehensive guidelines for code formatting, variable naming, and making your code easy to read. Professional Python developers are usually required to follow the guidelines, and will often use code-linters like flake8 to verify that the code they're writing complies with the style guide.

More information:

clear portal
#

class MyClass

#

my_class = Class

vocal basin
#

in Python, camelCase isn't used at all

earnest crag
vocal basin
#

PascalCase not camelCase

#

for classes

#

in JS it's fine-ish to use snake_case because JS has no rules

#

"try prism.js until you realise it can't work, then switch to ace"

#

Prims.Live might have stuff to reload

earnest crag
#
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>CodeChest</title>
    <link rel="stylesheet" href="../static/styles/snippet_editor.css" />
    <link rel="icon" type="image/x-icon" href="../static/assets/logo.png" />

    <link href="../static/lib/prism.css" rel="stylesheet" />
    <link href="../static/lib/prism-live.css" rel="stylesheet" />
</head>

<body>
    <textarea class="prism-live line-numbers language-c fill" id="ihtml" style="--height: 50vh"></textarea>

    <script type="module" src="../static/scripts/snippet_editor.js"></script>

    <script src="../static/lib/prism.js"></script>
    <script src="../static/lib/prism-live.js"></script>
</body>

</html>
vocal basin
#

as the kids say, "๐Ÿ’€"

earnest crag
#

async await

vocal basin
#

it's okay in JS

#

mostly

#

try to reduce it

#

JS isn't as smart as other languages which optimise useless async away

#

each (async()=>{})() creates a promise
and each promise is like a task (JS is proactive with handling running, even without await it will start)

#

eh

#

in hardware

#

close to it

earnest crag
#

while

vocal basin
earnest crag
#

if LIGHT a LIGHTBULB
10 sec DELAY
IF if LIGHT a LIGHTBULB2
10 sec DELAY
GO TO WHILE AGAIN

vocal basin
#

just because it doesn't allow multi-level sequential dependency

#

or something like that

#

Rust's futures are somewhat good for learning how async works/can work

#

parts of regulal C code may run in parallel
even if you use one thread

#

thanks to pipelining

#

C also doesn't really care what order you put statements in
it's almost free to do whatever it wants as long as it's logically correct in a single-threaded setting

earnest crag
clear portal
#

require('./utils.js');

#

require('./../static/lib/prism.js');
require('./../static/lib/prism-live.js');

vocal basin
#

do browsers support require?

#

or, rather how many do

clear portal
#

ammmmmmmmmmmmm

earnest crag
earnest crag
vocal basin
#

good enough availability

#

won't run on Internet Explorer though

#

it's minified

#

or add a script tag dynamically

#

(note: it almost never works)

#

((for security reasons))

clear portal
#

var my_awesome_script = document.createElement('script');

my_awesome_script.setAttribute('src','http://example.com/site.js');

document.head.appendChild(my_awesome_script);

vocal basin
#

var const

clear portal
#

!stream 939245274126250015

earnest crag
#

@mint fjord@cobalt fractal gimme steam perms

#

pretty please

#

all I want is stream perms for xmas

#

@sly jolt poke!

clear portal
#

wtf

#

click up

#

<@&831776746206265384> hello

#

is this an ad?

earnest crag
clear portal
#

its looks like one

desert vector
#

what's going on with y'all

clear portal
#

nothing apparently

desert vector
#

Looks like it to me

clear portal
#

its was very random. i though its an ad

#

gg

#

gg

earnest crag
desert vector
#

"Fire people who prefer languages like Rust."
Okay?
"Restrict backend languages to Python or C..."
Backend of what?
"Always use C instead of C++."
Also okay?

earnest crag
desert vector
#

the doughed nut

earnest crag
#

@whole bear run away it's OOP

#

@desert vectorGIMME SCREENSHARE PLS

#

sry CAPS have it on from minecraft

desert vector
#

I'd have to be there to make sure you weren't streaming anything bad
and I'm at work
so I can't really be there

#

sorry mate

desert vector
#

it may not be, but I can't join to verify that

whole bear
#

Join Vc I'll tell you

#

@muted hinge We need your help

earnest crag
#
        for(int y = 0; y < image.getHeight(); y++){
            String row = "";
            for(int x = 0; x < image.getWidth(); x++){
                int pixel = image.getRGB(x, y);    
                int a = pixel >> 24 & 0xFF;
                int hex = pixel & 0xFFFFFF;
                String s = "  ";
                if(!name.contains("rgb") || a == 0) colorArray[y][x] = "!!!!!!";
                else colorArray[y][x] = String.format("%06X", hex);
                if(a > 0) s = "โ–ˆโ–ˆ";
                row += s;
            }
whole bear
#

Really @rugged root

earnest crag
earnest crag
#

@whole bear^

somber heath
#

@acoustic urchin ๐Ÿ‘‹

earnest crag
#
export class snippet {
    constructor(
        snippet_id,
        name,
        code,
        short_desc,
        full_desc,
        favourite,
        snippet_list_id
    ) {
        this.snippet_id = snippet_id;
        this.name = name;
        this.code = code;
        this.short_desc = short_desc;
        this.full_desc = full_desc;
        this.favourite = favourite;
        this.snippet_list_id = snippet_list_id;
    }

    display(where, callback) {
        if (where) {
            const snippet_div = document.createElement("div");
            snippet_div.className = "snippet";
            if (this.favourite) {
                snippet_div.classList.add("favourite");
            }
            where.prepend(snippet_div);

            const name_div = document.createElement("h3");
            name_div.innerText = this.name;
            snippet_div.appendChild(name_div);

            const short_desc_div = document.createElement("div");
            short_desc_div.className = "short_description";
            short_desc_div.innerText = this.short_desc;
            snippet_div.appendChild(short_desc_div);

            const tags_div = document.createElement("div");
            tags_div.className = "tags";
            snippet_div.appendChild(tags_div);

            snippet_div.addEventListener("click", () => {
                callback(this.full_desc, this.snippet_id);
            });
        } else {
            console.error("Error: 'where' is not defined");
        }
    }
}

if (typeof module !== "undefined" && typeof module.exports !== "undefined") {
    module.exports = snippet;
}
#

response:

#

ADD TO PATH

clear portal
#

@rapid flame

python -m venv env
source env/bin/activate
pip freeze # should be empty
pip install numpy
pip freeze
earnest crag
#

@whole bear

rapid flame
earnest crag
earnest crag
rapid flame
earnest crag
#

B

wise cargoBOT
#

Longhouse.c line 4145

struct class {```
earnest crag
#

UINT size;
UINT style;
int extra_bytes;
int extra_window_bytes;
HINSTANCE icon_executable;
HICON icon;
HCURSOR cursor;
HBRUSH color;
LPCSTR menu;
LPCSTR name;
HICON small_icon;

#

while vs for

#

numpy.while

#

16

#

9

#

0.65

clear portal
#

sum

earnest crag
#

+-*/

#

99 + 1 =100

#

2 + 98 =100

#

1 - 100

#

1+ 2 +3 + 4

#

99+ 1 =100

#

2 +98

#

@rapid flame

whole bear
#

Yo @olive hedge What did we do?

rapid flame
earnest crag
#

SCSS

#

tkinter

#

@whole bear me gonna annoy you for projects and stuff in a month ^-^

wind raptor
#

!stream 717749310518722691

wise cargoBOT
#

โœ… @whole bear can now stream until <t:1703987766:f>.

somber heath
#

@thorn moon ๐Ÿ‘‹

#

@muted rune ๐Ÿ‘‹

muted rune
#

Apparently im suppressed -_-

somber heath
wise cargoBOT
#
Voice verification

Canโ€™t talk in voice chat? Check out #voice-verification to get access. The criteria for verifying are specified there.

wispy spade
#

Hi

#

Btw do you play genshin?

#

My phone just becomes like a hot pan when I play

#

My PC is potato ,so can't play

#

My phone is better than my pc

#

My pc is 1 year old

#

I got i5 11 gen maybe

#

But I don't have a dedicated GPU

#

Btw how long you coding?

#

Cool

#

Me coding from 1 year ,but I am not expecting to be in computer field

#

Hmm twice a week(

#

Imma play something,bye

#

Ye imma play genshin

#

Btw can I stream my game here?

#

Just wana share my experience

wind raptor
#

!stream 1057874033925967933

wise cargoBOT
#

โœ… @wispy spade can now stream until <t:1703994766:f>.

wispy spade
#

Imma rejoin

noble solstice
#

Hii @somber heath

earnest crag
#

A 30 minute video about opening up a text box and typing something into it for later, made for people who watch videos about doing that rather than just getting work done.

00:29 Requirements
4:10 Zettlr, VNote, and nb
5:48 Zim
7:50 QOwnNotes
12:31 The end of pretending this is about productivity
14:48 Emacs
21:18 Neovim
25:59 It never ends
27:1...

โ–ถ Play video
wise cargoBOT
#
Formatting code on discord

Here's how to format Python code on Discord:

```py
print('Hello world!')
```

These are backticks, not quotes. Check this out if you can't find the backtick key.

For long code samples, you can use our pastebin.

earnest crag
#

`123

#

5 + i

#

x = 5+i

#

y 3+xi

#

x + y

#

sum( x y)
return x.real + y.real "+" x.notreal + y.notreal

#

x = sum(x, y)

#

w3schools

hoary field
#

@earnest crag

earnest crag
#

class Main