#ot1-perplexing-regexing

1 messages · Page 556 of 1

wraith hound
#

Yeah, DNS protection

#

I don't know what dns is either

#

I'll pretend I know what that means

lime maple
#

Lol

wraith hound
#

:o

#

No way

#

That's insane

lime maple
#

No way

graceful basin
#

there were a lot fewer internet devices back then

wraith hound
#

True

#

But that still had to be a lot

vapid nymph
#

bruh how to rewrite git history

graceful basin
#

rebase is generally the way

vapid nymph
#

basically i have a branch and i need to rename the first commit

wraith hound
#

Or you can screw it up with git push -u origin <branch> --force (don't do this)

vapid nymph
#

so do that?

#

maybe don't tell me what not to do 😂

graceful basin
#

that doesn't do anything until you actually rebase changes

vapid nymph
#

oh good

graceful basin
#

and yes, you have to force push if you change history

#

can't push 2 incompatible histories after all, that makes no sense

vapid nymph
#

i have this

#

and need to rename that first commit

#

like uhm

#

i hate it

#

but is there a way to change just that one and not the others?

tardy rain
#

Looks fine tbh

vapid nymph
#

meh this should just be squash merged

graceful basin
#

yeah, I wouldn't bother for that, maybe just as an experiment

vapid nymph
#

joe ded

#

the blurple destroyed him

wraith hound
#

Word of advice: If you're gonna screw with git, screw it up on your own repo first

vapid nymph
#

other word of advice: I don't care with this repo since I already screwed up twice

#

lol

bleak lintel
#

i'm writig my thing uo

#

the diagram

wraith hound
#

joe + devops + writing = essay that makes you smarter

bleak lintel
#

that's roughly what a request to our infra looks like

#

open original to zoom in

wraith hound
#

That's a lot

#

Oh

#

Traefik is like Traffic

bleak lintel
#

so, Traefik is running of one of Node A, B or C

wraith hound
#

Linode is a VPS service like DigitalOcean

bleak lintel
#

so if the request gets forwarded to Node A and Traefik runs on Node B then we need to call Node B to perform the request

#

Calico creates a network link between all three hosts, it's a mesh network

#

so node A can talk to B and C, B to A and C and so on etc etc

wraith hound
#

PyDis has so much going on in the background, it's pretty cool

bleak lintel
#

so that services on node A can talk to services on node B as if they were on the same machien

#

think like accessing an IP over your local network

#

traefik is used to forward each incoming request to the correct service

plucky ridge
#

That logo for it is amazing

bleak lintel
#

we don't want to create several IPs for each service, like paste, site, grafana, etc.

#

we want one load balancer under which all our services can be hit

#

so traefik looks at incoming requests and maintains a phone book of where each record should go

#

soooo

#

one sec

vapid nymph
#

right?

bleak lintel
bleak lintel
#

but

#

it actually is smart!!!

#

and figures it out before the host header

#

so okay, let's digress into TLS for a second

#

when I request foo.com over TLS, how does the server know to send me the foo.com certificate?

wraith hound
#

The domain?

bleak lintel
#

we've not got a HTTP connection open yet, so no headers have been transferred

#

so that Host header that @vapid nymph mentions doesn't work

#

(Host usually contains pythondiscord.com)

#

the server needs to present the right certificate for the domain before the HTTP transaction has started

#

and it's thanks to a nifty little thing called SNI that it works

vapid nymph
bleak lintel
#

SNI, or Server Name Indicator, is a component of a TLS ClientHello message (you opening a connection to the server)

bleak lintel
#

hahaha

#

alright

#

so

#

TLS is transport layer security

#

when you access a website over HTTPS, you are using TLS

vapid nymph
#

certificate is SSL which verifies that you are indeed yourself

bleak lintel
#

certificate is TLS, not SSL hopefully hahaha

vapid nymph
#

😂

#

Have I visited this site before today? Yes, 11,393 times

bleak lintel
#

Hypertext Transfer Protocol Secure

#

so, TLS just encrypts connections between you and a server, yeah?

#

i'm gonna skip over SNI and revisit that in a second

#

so, a certificate is used to verify that the server you are talking to is indeed a server

#

certificates are signed by trusted authorities which are hardcoded into your browser, so your browser knows which certificates to trust

#

think of it like a college diploma, but the college is a certificate authority and instead of your name it's the domain

bleak lintel
#

SSL is an old version of TLS

#

secure socket layer

#

SSL is deprecated and not accepted

#

anyway, so now we've covered what TLS is, how it ties into HTTPS and how certificates work, right?

#

so, let's take a brief look at SNI

#

when you open a connection to those, the server needs to know which certificate you want before it can open a TLS tunnel

#

so, to do that a little bit of data goes in your TLS hello, it's called an SNI

#

subject name indicator

#

or server name indication

#

whatever

#

so, that is a little bit of data before the TLS connection is encrypted that lets the server pull the right certificate out and send it

#

that means that you can serve multiple web properties with different domains off the same server

#

yeah, this is the step where it opens the connection to the server

#

but tell me, do you see any security flaws with SNI?

vapid nymph
#

don't even get into cnames yet

vapid nymph
bleak lintel
#

nope

#

the flaw is that SNI is sent unencrypted

#

before the TLS happens

#

hahah

#

yeah, so the problem is

#

people often say that HTTPS means people can't see which domains you are looking at, just the IPs

#

but due to SNI they very much can see the exact domain, in fact ISPs do collect that and in places like China they use SNI in the Great Firewall to block off it

#

and now we're kind of brought up to date, because things are changing right now

#

yep yep yeep!

#

SNI is being phased out, in favour of ECH, ECH stands for Encrypted Client Hello, and to sum it up briefly that means that the TLS connection from finish to end, there is no exposure of SNI or other information

graceful basin
#

how hard would it be to handroll TLS in an insecure way

bleak lintel
#

ECH works off keys stored in the DNS, and in fact pythondiscord.com is already compatible with ESNI!! (which is the stage before ECH where the SNI was encrypted)

graceful basin
#

implement instead of using a library

bleak lintel
#

we'll probably be ready to go with ECH as soon as it enters general use

graceful basin
#

as with everything that even remotely touches security, you should never ever write your own

vapid nymph
bleak lintel
#

well, right now the clienthello is unencrypted

#

so the SNI is exposed, becausse the SNI is in the clienthello

#

ECH will use encryption for that step meaning that you can't have SNI and other information exposed

#

the connection will basically be encrypted from step 1

vapid nymph
#

Don't do security as a side gig.

#

Either go all in or not, but don't work on it in your spare time

graceful basin
#

pretty much

bleak lintel
graceful basin
#

it is impossible to write it correctly on the first try, you need peers and some auditing stuff to ensure it is at least usable

bleak lintel
vapid nymph
#

just partially hides it

bleak lintel
#

it will fully hide it from you to your ISP

#

after cloudflare it's unclear

vapid nymph
#

if i go to duckduckgo.com with a search asking what my ip is, its 8.6.1.4

bleak lintel
#

yes

vapid nymph
#

or whatever

bleak lintel
#

yep

vapid nymph
#

if i go to a different site its not

bleak lintel
#

yeah

vapid nymph
#

its my actual ip

bleak lintel
#

that's... probably a kept alive conn or something

vapid nymph
#

i think its if they're on the cloudflare network they get the actual ip

bleak lintel
#

warp should not expose your legit IP

vapid nymph
#

if they aren't they don't

vapid nymph
bleak lintel
#

I haven't heard of that, I don't think it does

vapid nymph
#

and it wasn't a keep alive

#

since it was a new thing

#

a site i never had been to

bleak lintel
#

I'll look into this after dinner, might call on a CF friend

vapid nymph
#

sheet joe knows everyone

#

to be clear, warp. Not warp+

bleak lintel
#

lol

#

cf are great

modern haven
#

joe you are really active today lol

bleak lintel
#

hahahahaha

modern haven
#

im in awe

bleak lintel
#

balancing it out for @harsh tundra

modern haven
#

lmao

vapid nymph
#

lol

lime maple
#

Lol

bleak lintel
#

noice that's a good list

#

i've finished lol

rough sapphire
#

if joe is gonna answer all these I'm all ears too.

bleak lintel
#

hmmm

#

tempted to do them in voice

#

nah we'll do them in text

modern haven
#
  1. some shit to do with IP's and servers and stuff. That answer it?
rough sapphire
#

yeah 1 is simple.

graceful basin
#

give joe time

red elm
#

Why is there a Discord Server for a snake????

bleak lintel
#

How does a DNS Lookup work?
So, DNS is a question-answer protocol for resolving domain names into records, most usually A records which signify an IP. First your query starts at 1 of the 13 root name servers, if you ask for paste.pythondiscord.com first you go to the root servers and ask "which nameserver handles com lookups?", the root server then replies with the com nameserver, then you go to the com nameserver and ask "which nameserver handles pythondiscord.com?", which in our case is Cloudflare. Next you hit the Cloudflare nameserver and ask "where can I find paste.pythondiscord.com" and that's where you get an IP which you then use to visit. Most of this is totally abstracted away, if you use a public resolver like 1.1.1.1 or 8.8.8.8 then you only do one query and then the resolver does all the hops for you BUT! there is a neat tool at https://dns-lookup.jvns.ca/trace.html#pythondiscord.com which will actually take you through the whole request process. DNS queries are made up of questions (I want this domain), answers (here is this domains IP) and additional (I don't have this domain, but ask here, they might!)

red elm
#

What do you mean? Python is a snake. Why do you need a Discord Server for that?

#

I'm joking. I know Python

#

But I don't know how to work with it.

#

I don't know how it works?

bleak lintel
#

What does Cloudfare do...? It has a cache of some sorts by looking at the diagram.
Cloudflare provides a cache/ddos/optimisation platform which brings your servers closer to your users. When you visit pythondiscord.com you're directed to an IP which is geographically close to you (see which one at https://pythondiscord.com/cdn-cgi/trace, the colo field is the name of the nearest airport to the datacenter you hit, I hit MAN which is Manchester). Cloudflare then delivers the request to the origin IP, so in our case the Linode load balancer. It also mitigates DDoS traffic to prevent it from hitting Linode and applies caching so that if you visit pythondiscord.com you might get a cached version of the page served from a geographically closer server, instead of having to head to frankfurt. https://www.cloudflare.com/en-gb/learning/what-is-cloudflare/ has some good details.

#

nameserver is any server that handles DNS queries. so the Cloudflare nameserver answers for Cloudflare domains like pythondiscord.com, the com nameserver answers for com domains and so on.

#

What is the purpose of this CF cache?
Brings content delivered closer to you. If I hit pythondiscord.com the edge server which is close to you will store it for a few hours, if anyone else hits it it will deliver that content instead of trekking to the origin.

rough sapphire
bleak lintel
#

How does a load balancer actually know which node has low traffic?
It's as simple as saying "okay there are 5 open connections to this node and 3 to the other, so I'll forward it to the other". Load balancers are smart! There are various methods as well as just congestion such as round robin which does A, B, C, A, B, C and so on and also just pure random.

rough sapphire
#

that is obvious but i mean how did cache server findout that data has changed.

#

yeah but joe said its hours

bleak lintel
graceful basin
#

cloudflare has a toggle called development mode which turns the cache off temporarily

bleak lintel
#

there are smarter ways such as cachebusters which is where you can update the URL fetched everytime you build a new one, therefore resetting cache

#

so I might have ```html
<script src="/myscript?v=a34f23ad"></script>

#

so then that file + hash gets stored

rough sapphire
#

yeah i think builds in react do same.

bleak lintel
#

then when I change the script I change the hash ad the cache resets

#

yep, they do 🙂

harsh tundra
rough sapphire
#

they put this long hash at the end to handle cashing

bleak lintel
#

So Traefik runs on a single node and then forwards the request?
Yep, Traefik right now runs on one of our nodes, picked randomly when we schedule the deployment, eventually I might set up Traefik on every node so each node can answer queries.

#

yep, they can run on any node

#

[So Traefik runs on a single node and then forwards the request?] To where?
To the service running, so I might tell Traefik to forward pythondiscord.com requests to our internal service called site. Traefik is the border between the internet and our internal services.

#

yep

bleak lintel
#

so 10.10.2.3 might be Python Discord site, and Traefik forwards there (actually over DNS! we run a DNS server in the cluster to resolve domains like site.default.svc.cluster.local to their in-cluster IP, meaning we don't have to hardcode IPs anywhere)

#

Does each service run on a different node?
Yes, when we create a deployment of a pod/container Kubernetes finds a node that can host that service (we tell kubernetes a rough estimate of how many resources it needs).

rough sapphire
#

.bm 841383256938250310

bleak lintel
#

it's the exact same as the public internet, but inside our cluster, instead of resolving pythondiscord.com to a public IP we're resolving an internal domain to an internal IP

#

each service gets an IP so since we can run a DNS server each service can get it's own domain record as well

#

the domains are in the format {service}.{namespace}.svc.cluster.local and can be accessed from any pod on any node

#

yes, a pod is a single deployment within a cluster

#

so python discord site, hastebin, stats, even traefik, are all pods

#

What is mTLS?
mTLS stands for mutual TLS. Think about how regular TLS works where the server presents a certificate and the client verifies that it's legitimate. mTLS extends on this by not only having the server show a certificate but the client as well, so the server goes "I am pythondiscord.com, here is my certificate" and the client goes "I am Cloudflare, here is my certificate". We've preloaded the Cloudflare certificate so we can verify it very easily. It's effectively a form of authentication.

#

Where else can the request to Traefik come from apart from CF?
Other than when we're debugging stuff, nowhere. mTLS locks it down so that only Cloudflare or myself can ever reach Traefik and trigger a request.

#

How does Traefik apply the middleware, isn't that Django's job?
Django has middleware, but a different type of middleware. Some examples of the middleware we do at Traefik's side is things like redirecting git.pydis.com to our github page, verifying that a user has passed through Cloudflare Access and a few other things like applying security headers. We use them since we can apply configuration to web properties very easily.

#

Django middleware is Django specific, Traefik middleware can run across all ingressing web traffic is the TL;DR

#

What is meant by "proxied service"
The service we're communicating with, so the django site/hastebin/public stats in the pod is the proxied service, Traefik and Cloudflare are proxies and you are the client.

rough sapphire
rough sapphire
#

makes sense. but again, the certificates, they get auto generated?

#

on server side

bleak lintel
#

Traefik generates wildcard certs for *.pythondiscord.com

#

as for the client cert, Cloudflare provides one which we import

rough sapphire
#

.bm 841386502134300734

#

ah i see so it's basically user dependent. some may be doing manually too.

#

.bm 841386789716492298

bleak lintel
#

yep, you can manually do it, but LetsEncrypt uses short expiry times to encourage automation of certificate renewal

#

Why can't you just do pythondiscord.com/paste instead of paste.pythondiscord.com
If we wanted to, we probably could, it's just easier for users to use subdomains as opposed to paths under our root domain, and it's easier to configure subdomains as well.

#

if you have some understanding of docker and want to get more into CI/CD/DevOps then yes

#

ECH works off what "keys stored in the DNS"?
ECH is switching to a record type called HTTPS instead of using A records. In this HTTPS record type there is not only an IP but a public key. When the client connects to the server it can encrypt that first payload with the public key it found in the DNS, meaing that the whole transaction is encrypted.

#

so you'll lookup the HTTPS record of pythondiscord.com, get back an IPv4, an IPv6 and a public key in addition

#

yes 🙂

#

What does ESNI have that SNI doesn't?
It's encrypted 😄. ESNI was an implementation before ECH which looked up the TXT (text) record on a domain located at _esni.pythondiscord.com or similar.

Once it had the value of this domain it did the exact same as the HTTPS record key and encrypted just the SNI field in the ClientHello (as opposed to ECH which encrypts the whole packet).

#

so, here is a regular TLS handshake

#

you can see SNI is before encryption begins in that ClientHello

#

yep

#

okay so

#

then this is ESNI

#

wait

#

no

#

this is ESNI

#

you can see the ClientHello is still unencrypted, but the SNI is

#

and then here is ECH

#

the implementation of ECH is a bit different from what you'd expect, because it's trying to maintain back compatibility with routers

#

but that ClientHello inner where sensitive information is located is encrypted using that key in the HTTPS record

#

What is CF "warp"?
https://blog.cloudflare.com/1111-warp-better-vpn/

WARP is Cloudflare's take on a VPN, built from the ground up and encrypts all payloads to the Cloudflare Edge

The Cloudflare Blog

Today we're excited to announce what we began to plan more than two years ago: the 1.1.1.1 App with WARP performance and security technology. We built Warp from the ground up to thrive in the harsh conditions of the modern mobile Internet.

#

lol

#

you're welcome

#

let me know if anyone has further questions, questions about my answers are also happy to be answered, it's fun stuff 🙂

rough sapphire
#

thanks a lot joe.!

bleak lintel
#

no problem 🙂

small fossil
#

Joe why my server slow

bleak lintel
small fossil
bleak lintel
#

not enough sharding

#

sharding is the secret ingredient in the web scale sauce

small fossil
graceful basin
#

too much state

small fossil
#

where has my bloblul gone

bleak lintel
#

lol

#

very context dependent

small fossil
#

basically, you get a pane of glass

bleak lintel
#

lmfao

small fossil
#

and you hit it with a hammer

#

and you get these shards of glass that you then throw at your servers

#

until they work

bleak lintel
#

well, as an abstraction, say I have 1,000 requests coming in per second, sharding would be directing these requests to several instances of a service to prevent a single instance being overloaded

#

a goodish example is Discord, where when you reach a certain number of servers they make you run multiple connections to the websocket and then split up different servers into different socket connnections

#

hahahaha

#

enjoyy

small fossil
#

ah yes latency

bleak lintel
#

lol

small fossil
#

I swear that postman's added latency though is poop

#

Like postman reads 800

#

then you do the same from the browser

#

and get 200ms

bleak lintel
#

latency moment

bleak lintel
small fossil
#

cURL to be powered by rust™️

#

soon we'll call it rURL

bleak lintel
#

lmfao

small fossil
#

this is the only problem with our setup

#

is when it's not being used

#

it goes quite cold n slow

#

which for development is fine and all but it makes bench testing a nightmare

bleak lintel
#

rock solid

#

17

#

hahaah

small fossil
#

wait @bleak lintel What month were you born?

small fossil
#

miku_yay Am the elder

harsh tundra
#

I feel old with so many teens here in chat. it reminds me I'm no longer a teen :c

bleak lintel
#

lul

harsh tundra
#

I miss my high school days :c

rich moon
#

when u realize ur becoming a boomer

harsh tundra
#

I'm not that old

#

but I don't even remember I'm 25 unless I think... or see people here .-.

brisk spoke
#

you decide what to do with this

honest star
brisk spoke
#

.

#

no

honest star
#

then what are you trying to say?

brisk spoke
#

that it's funny he said he was a dev but didn't know what the err was

honest star
#

so... yes to making fun of the user then?

brisk spoke
#

idek cursed

honest star
#

let's not make fun of people for not knowing stuff, okay?

brisk spoke
#

yeah, my b

vapid nymph
#

@bleak lintelcf update?

royal lakeBOT
#
I don't think so.

Sorry, you can't do that here!

bleak lintel
#

hmmm

#

the update was

#

that shouldn't happen

#

lol

vapid nymph
bleak lintel
#

yes

vapid nymph
#

in your own opinion from what you were told, comparable to some of the paid ones?

bleak lintel
#

yes, comparable

vapid nymph
#

welp time to make an issue

#

huh

#

on second thought

#

i need to check smth

#

how to do a tracert?

#

uh

#

with tracert LOL

#

traces the route from you to the place

#

uh joe can you help me with this for a moment

harsh tundra
#

it literally pings with "discard me after x steps" going from 1 to 30 (by default)
[normally this field is so that undelivered packets do not trash the connection by eventually being dropped]
this means 1st jump goes back to you with "oh, sorry, I didn't reach the end result",
then with other ping packet it passes but 2nd jump replied that it didn't deliver...
with 3rd ping it gets passed by first 2 but 3rd one replies...
and so on until you find the correct server and it correctly returns the ping, or until you hit the limit of 30 jumps

vapid nymph
#

OH MY GOD LOL

#

i was so confused for a moment

bleak lintel
#

tracert is so cool

vapid nymph
#

wtf

#

how can i see my actual public ip

#

navigating to a bunch of sites i get 3 different ips

harsh tundra
# vapid nymph

lol. google just showed you suggestion from its search results... which was scrapped by google bot, of course, so the ip is its XD

#

if you're behind NAT, then no

vapid nymph
#

although i'm curious what my own device is

vapid nymph
#

comcast

#

yes

#

actually no

harsh tundra
#

NAT is the private network to one public ip thing

vapid nymph
#

yea ;-;

harsh tundra
#

so if you have wifi at home and can connect with multiple devices, then you're behind NAT and your router translates the stuff between private subnet it created for you and its public address

vapid nymph
#

yuh

#

what's the tracert equal at home

vapid nymph
#

i thought you meant the nat nat

#

the one where the ISP puts you on their subnet

#

not actually called that

#

so you don't have a public ip address and are part of comcast's network

#

internet service provider

#

what's the linux equal?

harsh tundra
#

and only when you go out of the ISP's NAT you have one public address with hundreds of other people

vapid nymph
#

yeah

harsh tundra
#

I think I have this kind of stuff with one of my ISPs because tracert shows some private addresses at further steps... or was it only 2nd step which is still our router? I don't remember XD

vapid nymph
#

wild

#

@bleak lintelthis is wild

bleak lintel
#

what's wild

#

Comcast is pretty likely on a NAT

#

Hm maybe not actually

vapid nymph
#

its not afaik

bleak lintel
#

yeah likely not, moment of madness

#

starlink is a NAT interestingly

vapid nymph
#

i go to a site

#

it says an ip that isn't my own

#

i do a no cache refresh with ctrl f5

harsh tundra
#

it's from private range

vapid nymph
#

and now its my own ip 73.xxxx

vapid nymph
harsh tundra
#

it shouldn't be visible anywhere outside that subnet

vapid nymph
frozen coral
#

172.16.0.0/12 is a private range

#

so that website is odd

vapid nymph
#

yeah that's actually not my home ip

#

i think that ip is on the cloudflare internal network and that website probably is too which is why it happens

twilit shore
#

people can’t do anything with ur ip, right?

vapid nymph
#

it is

#

so the 172.xxxx is a cloudflare internal ip

#

i think that's genius

#

8.6.144.188 is an outbound facing cloudflare ip

#

the problem is my 73.xxxxx my ip from comcast is publicly exposed to a few sites

trail juniper
twilit shore
trail juniper
#

More general location, so maybe like city or area, but it highly depends on your setup

#

Also, it depends on where you live. If you get a general location in Antarctica, well there are only so many places with internet there

vapid nymph
#

@bleak lintelso you think i should report cloudflare exposing me?

bleak lintel
vapid nymph
#

you think that's better than feedback in the app?

#

windows app fwiw

bleak lintel
#

uhh either is good

vapid nymph
#

huh

#

aside from not being able to choose a country

#

i think cloudflare warp > other vpns

#

oh and occasionally leaking ur ip address

harsh tundra
# twilit shore How specific can they find ur location? like an address on google maps specific?

it depends on how your ISP has the addresses arranged
I had dynamic IPs located at whole region, I had static public ip pointing to the ISPs office (local, city ISP), I had static ip at my high school dorm (Nicolas Copernicus University in Toruń, Poland, apparently has too many public addresses...) pointing at some university terrains... but my friend's server in one faculty had almost correct location? or was it that school servers were pointing at this faculty? I don't remember if both are correct

harsh tundra
vapid nymph
#

that's showing my actual ip address

#

even after no cache refreshes

#

it shows the cloudflare ip

#

then it shows mine

harsh tundra
#

and you're behind some cloudflare vpn?

vapid nymph
#

yes

#

cloudflare warp

harsh tundra
#

weird shit

vapid nymph
#

aside from this and not being able to choose server location i would say its the best vpn lol

harsh tundra
#

although I've seen weirder

#

some online shop started bugging the cart for me as I was browsing it and adding stuff for the future but not buying it yet

#

so since it was bugging and the cart's state changed from tab to tab, from url to url...

#

I tried clearing the cookies and stuff, but something was still off, it was still weird

#

so I opened an incognito tab

#

and it still sometimes had my cart history, sometimes part of it 😮

#

then I tried a different browser, on the same computer... and same shit

#

I don't want to know how they kept user sessions - IP based or what? but at the same time it somehow kept multiple sessions for me and switched between them?

#

it's a shame because after going through covid I wanted to buy some oil diffuser for mum, she loves nice smells and stuff, and this website had the best designs, tbh EDIT: checked the website and it doesn't seem bugged anymore but the design I was browsing then is sold out atm, so I won't test the sessions again, lol

vapid nymph
#

U must be on a NAT then

#

A ISP NAT

harsh tundra
#

"u must be"
it was both my carts, just from different days. I often browse shops and add things but then buy after a few days

#

so when it showed empty cart, I went on to add the things again... but during that, it started sometimes showing my old full cart and sometimes the new partial one

vapid nymph
#

Wild

latent scaffold
#

I think I'm kind of lucky it's nearly impossible to get my real location by IP

#

Our internet comes from a different city

wraith hound
#

What the…

#

Angular and React use node stuff

#

They aren't alternatives

gritty zinc
#

Geez, I hate Node.js...
Why not use JavaScript instead?

#

perfectly normal conversation between human beings

tardy rain
#

Imagine considering php in the current year

wraith hound
#

Sadly, that's normal

#

I will never learn PHP

lunar crescent
tardy rain
#

I thought php was only a thing for legacy reasons now

#

Are people actually considering building new stuff on php?

misty dew
wraith hound
#

PHP is used a lot cause Laravel

tardy rain
#

Abominable

#

Rather use spring haha

wraith hound
#

But there are now Laravel alternatives in js

tardy rain
#

Heh

#

For webdev my uni did JSP

#

And fucking tomcat

#

I wanted to scoop my eyes out with a spoon

wraith hound
#

JSP?

#

Imagine using jQuery in the modern day

tardy rain
wraith hound
#

Oh

latent scaffold
#

I don't

lime maple
#

I don't trust stairs because they are always up to something

latent scaffold
lime maple
#

I found that online

latent scaffold
#

what about the sky? the clouds? buildings? your TV?

lime maple
#

Lol

lime maple
latent scaffold
#

me? my cat? this table?

lime maple
#

Because

#

Stairs are "up" to something

#

Get it?

latent scaffold
#

no

lime maple
#

Ok i should stop with the dad joke

latent scaffold
#

stairs are not special

#

anything can be up to anything

lime maple
#

You don't get it

#

It's a dad joke

latent scaffold
#

I do get it

#

and it's not funny

lime maple
#

How do the celebrities stay cool all the time?

#

Get ready this is a dumb one

latent scaffold
#

no

lime maple
#

Because they have fans

#

Ok I should stop

edgy crest
lime maple
#

I am the second one

inland wolf
#

same

lime maple
#

Heheh

inland wolf
#

ok

edgy crest
#

same

#

\n{ is cringe

lime maple
#

The Day of the Programmer is an international professional day that is celebrated on the 256th (hexadecimal 100th, or the 28th) day of each year (September 13 during common years and on September 12 in leap years). It is officially recognized in Russia.[1][2]

inland wolf
#

\t*

lime maple
#

Did you know it before?

inland wolf
#

officially recognized in russia

last mantle
lime maple
#

It should be global

latent scaffold
edgy crest
solid pollen
#

!mute @rough sapphire

royal lakeBOT
#

:incoming_envelope: :ok_hand: applied mute to @rough sapphire until 2021-05-11 08:12 (59 minutes and 59 seconds).

solid pollen
#

!warn 548876479337857025 Please keep it appropriate

royal lakeBOT
#

:incoming_envelope: :ok_hand: applied warning to @rough sapphire.

solid pollen
#

!unmute @rough sapphire

royal lakeBOT
#

:incoming_envelope: :ok_hand: pardoned infraction mute for @rough sapphire.

rough sapphire
#

That message was for the group of friends PepeHappy

raven birch
#

i wake up today, open up my laptop, and one half of the space key is harder to press down and the spacebar doesn't work when pressed from the side >_<

#

Has anyone ever experienced anything similar, or know of some sort of solution?

#

Thanks in advance.

#

(The space key isn't "clicky" from the right side and i can feel some slight resistance, I have to "clack" it quite hard to get an input)

topaz aurora
#

@raven birch Check for debris/clean it out maybe?

raven birch
#

I've never tinkered with hardware as such, always been working with software

#

and I have no idea where to even begin with this laptop, other than completely dismantling it and risking breaking something

latent scaffold
#

oh. laptop... cleaning the keyboard isn't going to be very easy

#

Most laptops don't have a straight-forward way of cleaning the keyboard

#

Most I can suggest is looking through manual, maybe seeing about separating the keyboard and cleaning it separately or just using compressed air or something

#

iirc removing the keys is not a good idea because putting them back isn't going to be trivial

mellow spire
#

both of them

#

piston-cli recording with asciinema

acoustic moss
#

poggers

lucid moon
#

can you guys help me fix these corrupted .fla files

solid pollen
#

!warn @lucid moon you have just been asked to not bypass our filters using mediafire

royal lakeBOT
#

:incoming_envelope: :ok_hand: applied warning to @lucid moon.

inland wolf
#

sad

lucid moon
#

i just wanted help

ancient minnow
#

Hey

#

Why would one prefer XOR EAX, EAX above MOV EAX, 0

#

Is the xor instruction faster than mov?

graceful basin
#

as far as I know, yes

ancient minnow
#

Ohh okay ty

twin charm
#

hmm why are mentions white

#

this is cringe

last mantle
#

yeah

mellow spire
acoustic moss
#

yes

quick ledge
#

yes

wraith hound
#

yes indeed

twin charm
#

yo wtf the reactions look cringe too

mellow spire
#

the reactions which you give are cringe

#

and pings which are given to others are cringe

twin charm
rough sapphire
#

Wow

mellow spire
#

imo this looks good

#

this looks 🥴

rough sapphire
#

Rounded corners

mellow spire
#

looks weird

latent scaffold
#

They were always rounded

rough sapphire
#

You sure?

mellow spire
#

looks ok

quick ledge
#

Looks like bold text lemon_unamused

carmine niche
edgy crest
inland wolf
vapid nymph
#

I CAN'T UNSEE IT

#

||The new logo is like a Chinese knockoff||

acoustic moss
#

lol

rough sapphire
#

This seems like a "designer had to justify their pay" type of deal

#

Because the new design doesn't seem very necessary and it doesn't look good either

vapid nymph
#

mmmm new childish font

#

OH NO

inland wolf
#

WOAH

#

yep it looks like a chinese knockoff

vapid nymph
#

what the ever loving fuck is that

inland wolf
#

that logo

#

i do not like

vapid nymph
inland wolf
#

especially the font

vapid nymph
#

explain that to me

last mantle
vapid nymph
#

DiSCORD

last mantle
#

ikr

inland wolf
tardy rain
#

Discord is a corpo now, this is what current corpo branding looks like

#

Idk why yall surprised

wraith hound
#

CRINGE

vapid nymph
#

normal corps are not that bad

#

DiScord is just being really really really bad

tardy rain
#

Look at slack, linkedin, twitter, etc

#

They all have the same look

rough sapphire
rough sapphire
#

It looks uglier than the old design

vapid nymph
#

that's their new branding video

#

for youngins

wraith hound
#

I hate this

#

I hate this I hate this I hate this

vapid nymph
#

we bouta get swarmed by dumb kids I was a dumb kid too but still

vapid nymph
sterile sapphire
vapid nymph
#

unfornately i've been working on discord bots

#

yeet

last mantle
#

i gave up on dpy bots early

#

good for me

vapid nymph
#

AnYwaYs tHis seRver shoUld probablY rebrand

#

they need their new fonts and ugly colors

wraith hound
#

No

#

PyDis colors are PyDis colors

rough sapphire
#

I agree though that this seems pretty corpo

wraith hound
#

Screw Discord's rebranding

vapid nymph
#

(i'm kidding don't rebrand)

#

(keep the 7289da alive as long as fucking possible)

wraith hound
#

You should just remake Discord

#

Easy

vapid nymph
#

reddit

rough sapphire
#

Can you link it?

vapid nymph
#

the entire reddit is talking about this shit

inland wolf
#

and is this a leak or somethin?

plucky ridge
vapid nymph
#

literally any post

plucky ridge
#

Just is what it is

wraith hound
vapid nymph
wraith hound
#

The colors are fine

plucky ridge
#

I'm not even seeing it

#

Where is this?

vapid nymph
#

at minimum one month

vapid nymph
plucky ridge
#

Like it's for some reason not updated on mine

inland wolf
plucky ridge
#

Oh right right

wraith hound
#

This logo

vapid nymph
#

may 13th is their birthday

verbal glen
#

why does reddit always hate redesigns lol

vapid nymph
#

oof

verbal glen
#

first the reddit redesign then spotify then discord

vapid nymph
#

the blurple discord

#

everyone hates it

tardy rain
#

Idk i like that blueish colour

vapid nymph
#

it celebrates discord's bday with blurple

tardy rain
#

Whats it called

vapid nymph
#

NOT THIS YEAR

vapid nymph
tardy rain
#

Lmao

vapid nymph
tardy rain
#

Looks good, vibrant blue

vapid nymph
#

the reply accent color is different on mobile and not

inland wolf
#

THEY REMOVED WUMPUS?

#

surely not

verbal glen
#

nah the got rid of blurple

vapid nymph
#

@plucky ridge tell me, how are we gonna forget this wumpus replacement?

wraith hound
inland wolf
#

agree

rough sapphire
vapid nymph
#

i have so much to say about that and nothing that i can say in a under 18 server

#

but why the fuck does it have teeth

inland wolf
#

goddamn that font looks shit

plucky ridge
#

I'm glad you're able to restrain yourself

inland wolf
#

lol

verbal glen
vapid nymph
verbal glen
#

wumpus is still here

vapid nymph
verbal glen
#

i think

#

no thats wumpus

vapid nymph
#

but fwiw

wraith hound
#

Rise Wumpus, the supreme lord of blurple

vapid nymph
#

they can't remove those

#

because legal reasons

wraith hound
#

Screw Clyde

vapid nymph
#

you paid for it to have it for the entirety of your account

#

so those will not be going away

#

@wraith hound ur pfp is out of date

#

wrong blurple

wraith hound
#

No

#

I'm keeping it this way

vapid nymph
#

yes

#

that blurple is ded

wraith hound
#

We must make Project Blurple v2

vapid nymph
wraith hound
#

Where we protest to keep blurple

vapid nymph
#

yummy DiScord

#

@plucky ridge due to the app icons its gonna be at least a month

#

because you have to see the shit every single day at sign in

#

and have to find it too

#

yeet

rough sapphire
#

I don't think this will go away though

#

Very unfortunately

sterile sapphire
#

say sike rn

vapid nymph
#

its white now

sterile sapphire
#

oh my god

tardy rain
#

My god that font is atrocious

sterile sapphire
#

that looks amateurish

vapid nymph
sterile sapphire
#

that looks like that special version of discord you get

rugged echo
#

PEP 8 4 LIFE

sterile sapphire
#

with hacks and all

vapid nymph
#

DO YOU SEE THAT ICON

wraith hound
#

Uni Sans Heavy > this stupid font

plucky ridge
#

Well actually

sterile sapphire
#

like a discord ++

#

if it existed

plucky ridge
#

If we think about it, they're living up to their name

sterile sapphire
#

it would look like that

vapid nymph
# plucky ridge Fair

i will be telling myself that i'm not using a fucking chinese knockoff every day

plucky ridge
#

They're currently sewing discord among the masses

tardy rain
#

The icon doesnt look that bad next to the text

sterile sapphire
wraith hound
#

Dont bring logic into this

vapid nymph
#

Ik what a discord is but what is DiScord

last mantle
vapid nymph
#

mmmmmm

vapid nymph
last mantle
#

oh fk

#

yeah

inland wolf
vapid nymph
last mantle
#

yeah i got canary

vapid nymph
#

OH THEY KNEW THIS WAS COMING

#

when they rebranded partners and verified

#

to the green

solid pollen
vapid nymph
solid pollen
#

I need one of those joke book written by hemlock

#

Like, I actually need it

vapid nymph
#

someone made a new icon and put it on reddit

#

imo i think its really nice and we should use it

vapid nymph
#

more serious again: this sucks

vapid nymph
#

quick count the mentions in that screenshit

wraith hound
#

Crap

acoustic moss
#

they are the same picture

#

were

wraith hound
#

Discord is being mean

vapid nymph
#

second one is bold

#

oh

wraith hound
#

Discord is being dumb

vapid nymph
#

identical

wraith hound
#

Yeah

#

It turns it into a channel mention

#

And escaping it doesn't work

acoustic moss
vapid nymph
#

python-general

#

welp peace

wraith hound
#

Dont

#

Dont cancel your account

vapid nymph
#

😏

wraith hound
#

You wouldnt

rough sapphire
#

Damn

wraith hound
#

I know you wouldnt

rough sapphire
#

I mean, that's the nuclear option, but I won't stop you

vapid nymph
#

i wish microsoft had been able to buy microsoft

#

*discord

rough sapphire
#

I think I've mentioned this before, but I doubt that that could've prevented this design change

vapid nymph
#

eh

#

it wouldn't be as bad imo

vapid nymph
#

hell, its been rumored that windows 10 is getting a makeover and few people have been complaining about it

rough sapphire
#

That's a fair point

#

It's more about how this design change seems planned somehow

vapid nymph
#

yeah

#

@rough sapphire although to give them the benefit of the doubt, do you like anything that's been changed so far about Dᵢscord?

rough sapphire
vapid nymph
#

i am going to regret this pfp change

#

EMBRACE THE 7289DA TRUMPET

rough sapphire
rough sapphire
#

With an arguably unnecessary caveat

vapid nymph
#

i changed it to the non blurple one first and then did it

rough sapphire
vapid nymph
#

yay!

#

CORE features

#

LOCKED

#

please microsoft buy discord i'll give you a lunch

edgy crest
#

are those legs of someone inside the trumpet or is that a tongue

rough sapphire
#

's a tongue

rough sapphire
inland wolf
#

at least mobile discord is blurple

vapid nymph
#

i can tell you that its changed a lot so far

harsh tundra
harsh tundra
wraith hound
#

On Android Alpha

harsh tundra
#

Ugly

wraith hound
#

Yes

harsh tundra
#

Like I recognise people I know on WoW server's discord, or on PUG/guild servers

#

Even if they have a different username set there (multiple characters) or have a fun nickname set in guild server

rough sapphire
#

Yeah, I think it's more of an issue about being able to do so, not about wanting to

#

Although I agree that people are visual

vapid nymph
#

the icon is just the orange stuff

#

the rest of it isn't part of the icon

wraith hound
#

Yeah ik

#

It's part of my phone theme

#

But the orange stuff is ugly

rough sapphire
#

Hello

#

so is this the place of getting answers to permission denied errors? 👀

tardy rain
#

No?

rough sapphire
#

damnit

tardy rain
rough sapphire
#

it's not really that python related that's why

tardy rain
#

Ok then you can ask here i guess

rough sapphire
#

okay I'll take a try

#

I just installed ffmpeg then tried to play a sound

loop = AudioSegment.from_mp3(f"{cwd}\\hello.mp3")
play(loop)```
But it's showing me that I have no permission to a fully different folder and a fully different file
```PermissionError: [Errno 13] Permission denied: 'C:\\Users\\User\\AppData\\Local\\Temp\\tmpvo9y4974.wav'```
#

but why

inland wolf
#

whats cwd?

rough sapphire
#

oh my bad

#

cwd = os.getcwd()

#

so like C:\app

inland wolf
#

it looks like it made a temporary wav file

#

to play

#

but it doesnt have access

#

but thats the temp folder

#

it should have access

rough sapphire
#

I tried to run a cmd as administrator and then

cd C:\app
Python3 app.py
#

still don't work

inland wolf
#

hmm

rough sapphire
#

I also tried to download simpleaudio

#

but it gave me so many errors I just couldn't handle it

inland wolf
#

im not sure why it doesnt work

rich moon
#

i think windows is just python app.py

#

dont need to tell it the version number

graceful basin
#

py app.py should work if that doesn't

rough sapphire
#

yeah py is not recognized, python started but it's still the permission denied error

#

what happens if I pull the whole folder in the Temp folder? 👀

inland wolf
#

then it can get deleted

rough sapphire
#

oh nvm

inland wolf
#

can

rough sapphire
#

not gonna take that risk

#

and if I change it, so it doesn't make the temporary file in that folder?

graceful basin
#

essentially, bad library

rough sapphire
#

isn't this gonna change the whole computer

graceful basin
#

you can change env variables only for the current shell session

#

but that isn't the actual problem

#

scroll to the very bottom and try those things

rough sapphire
#

yeah that's where I got the simpleaudio solution from

#

you mean that by the last comment?

#

Yeah the problem is that I'm trying to learn these things right now, and I don't understand anything from that

latent scaffold
#

What do y'all think I should spent my DigitalOcean credits on?

low chasm
#

hm

last mantle
#

Make a site on how bad manjaro is and host it on digital ocean

#

Simple

low chasm
#

brilliant

latent scaffold
#

hmm

latent scaffold
vapid nymph
#

how do symlinks affecting the working directory ?

harsh tundra
vapid nymph
#

if i want to symlink a file and then i run that file, what directory did it run in

#

did it run in the ~./symlinkgobrr/ directory, or the ~./lol/wow/heythisiswhereimlocated/ directory

#

what is its cwd

harsh tundra
#

well, your cwd is wherever you was

vapid nymph
#

what is its

harsh tundra
#

even if you are in ~/whatever/ and run ./some_folder/some_file
then your cwd is ~/whatever, not ~/whatever/some_folder/

vapid nymph
#

but what is the file that is ran working directory

#

not my own

#

what does it use

#

if it was a python script and i got the directory what would it be

harsh tundra
#

working directory is always where it's run, as I said

#

in python it's the same

#

if you have relative paths like ./my_file.json in the main.py file's location
then you have to execute it from main.py's location

vapid nymph
#

so it could be in a different location and symlink to that

#

and it would use the directory of the symlink

harsh tundra
#

let's say it's ~/my_project/main.py
and it has open(./my_file.json) in its contents

if you are in ~ and do python3 my_project/main.py then you'll get an error because cwd is where you were - ~ - and ./my_file.json doesn't exist

#

it's the same with symlinks, when it comes to cwd

vapid nymph
#

ah okay

#

now.…

#

what happens if a program goes to edit a symlink?

#

that edits the original and doesn't remove the symlink, right?

harsh tundra
#

the think only changes when you get the current file's location, e.g. by import module and module.__path__ - because that's for the file's real location

harsh tundra
vapid nymph
#

yeet what did i do

harsh tundra
#

I know that some path-searching stuff like os.walk or glob might have a parameter whether to resolve symlinks

vapid nymph
#

@harsh tundrayeet pylance

#

do you use vsc?

harsh tundra
#

nope, mainly pycharm

vapid nymph
#

ah

#

wow

harsh tundra
#

uninstall and install

vapid nymph
#

needed the -U

#

oh wait no

harsh tundra
#

lol

vapid nymph
harsh tundra
#

lol

vapid nymph
#

directory is wrong

#

because they live in a seperate repo

#

that's why its symlinked

graceful basin
#

found a font that has all lines equally thin

golden walrus
#

there's a cat trapped in your prompt

#

no one asked for it but here's a recent picture of my cat

#

ruining my dad's plants

#

and I just let her be

vapid nymph
#

WAIT ANOTHER UI CHANGE AAAAAAAAAAAAAH

vapid nymph
#

sorry for reply i forgot to remove it

#

and now a gap

graceful basin
#

oh, nice

vapid nymph
#

oh that gap is annoying

graceful basin
#

I have literally never used that window

vapid nymph
#

lol

#

fwiw

#

its the same modal as emojis and channel mentions

#

and slash

#

/sucks for all of them

harsh tundra
#

Cat tax

golden walrus
#

little devils

#

is that a huge place?

harsh tundra
#

In his defense, some time before there were tomatoes there, a bird was annoying him from the outside...

harsh tundra
golden walrus
#

the one your cat is in

#

like an orchard or what

harsh tundra
#

Ah. Those bushes are just a line of lilacs

#

It's just perspective

#

It's basically:
::::|::::::: where dots are the lilacs and line is the cat, lol. The whole tree line is like 3 meters long?

golden walrus
#

i c i c

harsh tundra
#

But we have more than those lilacs

#

Perks of living in the countryside with family

#

That's from last year

#

He was helping us get the late/last pears :D

young shoal
#

:o

latent scaffold
vapid nymph
#

i use android windows and linux

wraith hound
#

Imagine using Apple /hj

vapid nymph
#

never use iPhone or iOS or iMac or Mac or any of it except at school and then i hate it

latent scaffold
#

That was mostly a joke because Apple people are obsessed with rounded corners

#

for whatever reason

#

nothing can truly have a corner

vapid nymph
#

i'm obsessed with the fucking gap between the chatbar and the modal

#

WHY DOES IT EXIST

#

showing unflip there is ironic

latent scaffold
#

oops

#

(╯°□°)╯︵ ┻━┻

low chasm
#

lmao

wraith hound
#

No flipping Cypheriel ┬─┬ ノ( ゜-゜ノ)

low chasm
#

haha

latent scaffold
#

you're not my dad

low chasm
#

pfft

latent scaffold
#

well. I don't know that

#

maybe you are

low chasm
wraith hound
latent scaffold
#

we did not see nothing

low chasm
#

huh

latent scaffold
#

Grammar, Aboo. Grammar.

low chasm
#

lmao

latent scaffold
#

lmao beans

low chasm
#

i like beans :P

distant hazel
#

captain fisher!