I had to go through react-router 1-5 (iirc) and it is no joke the first example that comes to mind when I think about some of my top developer frustrations. It might even rank up there as one of 'core memories' that led to me burning out on web dev. I don't want to blame the dev themselves though. it was endemic in the culture and I'd probably have done the same if I had the fortitude to build libraries :).
I'll add that even though the elixir ecosystem is still my favorite, my forays into some of the more recent js-based stacks were very different from those memories.
@RyanFlorence is the reason Tech Twitter is the way it is. If you dont like it, dont use it. Stop trashing peoples work just because you dont prefer it, talking about "its shit", "i can break it", blah blah blah. if you dont like it, dont use it. if you do like it, use it. stop acting like a child, its software for christs sake, lets just make stuff, make money, and have fun.
he didnt call anyone website's shit he said "garbage" because he was responding to another tweet which said that RyanAir website is trash yet they make billions he's demonstrating a ceiling for sevrer-centric frameworks which is silly to deny - "oh, you can always use alpinejs with htmx". yes, that's a ceiling to what your framework helps you to do. and yes, he agrees that React has a ceiling too so he's not just being a hater to the server. "lets just make stuff and money" - his literally first tweet is that he hates that mentality. thats not how you build a Linear
@@huge_letters But also, who cares? What's the point of the first tweet? Whatever RyanAir is has a product that people want to pay to use. End of story. People have agency to choose what they want to use. You can think it's terrible all you want, but a random tech chad's opinion of it means nothing.
Oh. My. God... I see this soooo often. Developers being imprisoned by their chosen framework thinking that doing anything outside of it is "impure" and wrong. They don't even dare to write a simple class that is not extending/inheriting some concept from that framework.
@@wahidislamlinad Elixir provides a set of tools that solve really hard problems, most starting devs don't really understand the problems Elixir and Erlang were designed to solve, you start talking telephone switches and junior devs are like wtf... yes we can talk about fault tolerance, concurrency, functional programming and how Erlang was designed to be 'not pure' like Haskell but actually a productive language... or the concept Joe Armstrong used to talk about, that a dev should be able to reason about the whole system, or even how Erlang replaces a slew of 3rd party tools like Redis. A large section of the elixir community are senior devs who understand what Elixir and Erlang bring, I think that's why it doesn't stream well, it often requires alot of experience in other languages, and also an understanding of some really hard problems, devs who have experienced serious scaling issues, or required massive concurrency, and realise auto scaling docker clusters is often a lazy easy solution that isn't about efficiency, people maintaining high uptime services get it, or have experienced really tricky race conditions, or highly complex js applications to really get why Elixir is a really amazing language, cost saving for apps that were costring millions and now are a fraction of the cost after switching to Elixir, these are not issues most devs really have experience with As such your talking a smaller proportion of the pie listener wise.
Prime, maybe you know this already but Josê's name is pronounced "joseh" he is originally from Brazil, and that country pronounces "j" as "j" (and "r" as "h")
An attempt on a quick guide on how to pronounce "José" [ʒoˈzɛ]: J - The "s" sound in "Asia". O - A weak and short version of the "oo" sound in "outlook". It can also be pronounced as a short version of the "o" sound in "retroactive", minus the downwards "u" sound. S - The "z" sound in "Zambia". É - The "e" sound in "get". Put emphasis on this one, not the "o'. We are Brazilians. We speak Portuguese, not Spanish. When Prime says his name with the Spanish pronounciation it feels like a puch in the gut every time.
I got a bit moist when you talked about web components. I had an old site with a mixture of React and Pug. Each was its own separate world. But with web components, I could simply throw them in like a simple div, and implement site-wide changes in a few hours. It was glorious!
Prime highlighted the point Jose made - attempts made to interact with the client in anything other than a JS-focused approach are lauded while attempts made to interact with the server with a JS-focused approach are not.
Every week you have a react andy picking a opposing tech to shit on it. Issue is most people using said tech don't have time to respond, they're busy shipping apps, not deciding which ORM or auth service they will use this month.
To the person challenging with the 5 step web form: a fine little challenge except for the "autocomplete only one request". That's like typing your legs together. Don't request everything from the server and you won't have performance problems there. Optimize a bit and the autocomplete can be server side only.
my main criticism of elixir is that its not functional enough. for example easy currying, contained side effects and monads built in would have been very nice
I think the framing of "you can't use a library that isn't react with a react wrapper" is a fair interpretation. using a shimmed wrapper simply cause it does the job well is a bit different than using a shimmed wrapper because doing an actual react version is impossible to do decently.
To the guy in chat saying "They can't event get their tenses right in their pseudo code": Actually, it is correct, if you think event driven. You have just decided, that the product is available and the user has previously clicked the "buy" button, then everything is in place the sell the product. All side-effects afterwards happen, because the "product just got sold", meaning all side effects are a reaction to the fact, that the product has been sold (in the past). Totally fine, and very well readable.
15:53 What if you just make it so only one person can edit a field at a time, show what the other user is typing if the box is occupied, then when they press submit, the other users confirm if that's ok or not with a reason sent back to the first user typing? I guess that'd only work for single fields like titles though.
Everyone fighting about how 2 users can change the same document in real time like it was an MMO raid trying to get the last hit, meanwhile I'm thinking why not just lock the paragraph.
Elixir / Erlang / Phoenix / Liewview look like pretty much the perfect development solution for people building small-to-medium sized sites. I'm often wrong though, what am I missing?
#BrazilMentioned Hey guys, if you're going to correct the man's pronunciation, at least do it right.😅 Hey Prime! Love the show, my man! To do a proper "José" that will make your Brazilian audience go #BrazilMentioned like Brazil was mentioned, even when it wasn't, it is very simple my friend. Follow this template. Don't say the -th. "Zho Ze(th)" The J sounds different. The S sounds different. The emphasis goes on the last syllable. Think about it. This name is as popular in Brazil as Joseph is in the US, and when we hear our influencers being respectful to the Spanish pronunciation feels sort of like a light kick in the balls. (I live in mexico, BTW) As a brazilian myself, I very deterministicly guarantee, if you learn to say it right, Brazil will be mentioned in our hearts everytime. Agora vocês dêem joinha e resposta nesse comentário pro mestre ver. 😂 👍
An attempt on a quick guide on how to pronounce "José" [ʒoˈzɛ]: J - The "s" sound in "Asia". O - A weak and short version of the "oo" sound in "outlook". It can also be pronounced as a short version of the "o" sound in "retroactive", minus the downwards "u" sound. S - The "z" sound in "Zambia". É - The "e" sound in "get". Put emphasis on this one, not the "o'. We are Brazilians. We speak Portuguese, not Spanish. When Prime says his name with the Spanish pronounciation it feels like a puch in the gut every time.
É melhor o pessoal só parar de corrigir a pronúncia das outras pessoas, é chato e sem educação, línguas estrangeiras são difíceis para não nativos independente de qual país seja, no vídeo do fireship tanta gente com ego maior que a cabeça ficou corrigindo a pronúncia dele do nome do Valim que ele até parou de responder o pessoal, eu tenho certeza que a pronúncia de nomes em inglês da maior parte da galera é bem ruim também.
Fun fact, "water" (actual liquid varies) worlds have been tentatively identified and estimates of weather and temperature conditions made. These aren't pleasant places unfortunately.
Both the server-centric and th e client-centric approaches are wrong. The web app is a big graph of compute, storage and comm resources, and these resources should be used so the app works optimally. Depending on the situation browser-based storage may be the way to go, or having many layers of UI rendering (browser/local service/edge(s)/server), and so on. Trying to restrict the execution of the logic or the storage of context to only one resource or limit the comm flow amongst nodes is the important ceiling to break. The underlying dev language isn't so important, but of course best results happen with Haskell/Fuddle 🤓
41:15 the only way you could know if something is more expensive is if you built the _exact_ same app both ways. Then that begs the question, is that worth it over the potential impacts?
Why are we pretending that this submit example is some complex problem in react? It would be extremely simple to resolve if you design the UI as sensible and have the submit button disabled until the email is validated
Just to note that realtime doesn't mean fast or responsive, it means there is a guarantee that events etc will be processed and done so in guaranteed maximum time
My ocean has Seaside (big up to that Smalltalk tech with an OODB Twitter bought 20 years ago; using an efficient server-client continuation-based synchronization). Btw, web dev sucks. (Has Tim Berners-Lee truly finished his thesis?)
5:54 - YES, that's literally his opinion that this is a ceiling for React too! If React had a good way to interacts with the canvas or do svg animations that would be better. He says that somewhere down the thread. however react-chart is not a ceiling because he's not talking about implementation(obviously LiveView or React do element.innerText="text" at some point in their internals) but how you develop with it. To you your react-chart hooks look like just your regular React code.
i feel like these discussions now pop up because the js script kiddies grew to legal age and have difficulties with their world view be shaken up by the pendulum swinging back. oops, there always was ssr it just didn’t have this pretty abbreviation and oops, there’s sth called “progressive enhancement” and not everything has to “degrade gracefully” and oops, you can simply optimize away usability issues (i.e. empty load states) without react. hilarious. if ssr-drag-drop is too janky for your use case just take another approach. no technology is a be-all-end-all-solution. choose the right tool for the job. everybody knows, no?
The argument is not about a website existing without the server side. That'd be absurd, of course there's the server side and things get out of sync. The point is that it's extremely fragile to have the server need to understand what is going on exactly on the client side in terms of the DOM updates etc. And a design that fundamentally assumes that to be the case will be defective. And offline mode is not optional. It's not about the website being fully functional when you're driving through a tunnel. It's about it working again without a full reload when you drive out of the tunnel.
Ryan had a great talk recently called "Mind the Gap" (which Prime saw live in person btw lol) - he articulates those points better there. I think his main gripe with server-centric frameworks is that any time you need to introduce any significant amount of interactivity(like optimistic updates) you encounter a huge gap between the server and the client, which becomes fragile because you have to couple your client and server state now somehow.
I have to say it's a bit disappointing to see you misunderstand Ryan's points so bad - given that you literally saw his "Mind the Gap" talk at BigSkyConf live, you've introduced him to the stage. He explained his ideas so well in that talk. You mention BSConf as if it already happened near the end of the video so unless I misunderstood...
Interview Jose!!
This!!!
Ryan Florence comes off as a prick. I've used LiveView a bunch and it's a pleasure to use.
Which is the only important thing when making a website after all...
Once Primeagen starts evangelizing Elixir as he does Rust now it's all over. 🚀🌔
Isn't this the same guy who made react-router's API incomprehensible over 5000 versions?
I had to go through react-router 1-5 (iirc) and it is no joke the first example that comes to mind when I think about some of my top developer frustrations. It might even rank up there as one of 'core memories' that led to me burning out on web dev. I don't want to blame the dev themselves though. it was endemic in the culture and I'd probably have done the same if I had the fortitude to build libraries :).
I'll add that even though the elixir ecosystem is still my favorite, my forays into some of the more recent js-based stacks were very different from those memories.
@RyanFlorence is the reason Tech Twitter is the way it is.
If you dont like it, dont use it.
Stop trashing peoples work just because you dont prefer it,
talking about "its shit", "i can break it", blah blah blah.
if you dont like it, dont use it.
if you do like it, use it.
stop acting like a child, its software for christs sake,
lets just make stuff, make money, and have fun.
But... but... how will everyone know that I'm better than the rest if I don't trash talk their work?
he didnt call anyone website's shit
he said "garbage" because he was responding to another tweet which said that RyanAir website is trash yet they make billions
he's demonstrating a ceiling for sevrer-centric frameworks which is silly to deny - "oh, you can always use alpinejs with htmx". yes, that's a ceiling to what your framework helps you to do. and yes, he agrees that React has a ceiling too so he's not just being a hater to the server.
"lets just make stuff and money" - his literally first tweet is that he hates that mentality. thats not how you build a Linear
I follow a bunch of tech twitterers and Ryan must be one of the most negative.
Shitting on JS/TS is still valid tho, because we are basically forced to use it.
@@huge_letters But also, who cares? What's the point of the first tweet? Whatever RyanAir is has a product that people want to pay to use. End of story. People have agency to choose what they want to use. You can think it's terrible all you want, but a random tech chad's opinion of it means nothing.
So what Ryan is saying is that since there is no first-party auth in react, no one who does react should ever allow users to be authenticated?
Yeah…I don’t really understand his logic.
I can't take Ryan Florence seriously after his const vs let conf talk.
Same, it was really bad! I couldn't believe it was not a joke. For me, he lost all his credibility by now.
@@aghileslounis It was literally a joke
@@Callumkloos I don't think so
@@Callumkloosnope it wasn’t and he confirmed that and even doubled down
you want to talk about ceilings, let's talk about using JS for the backend
Oh. My. God... I see this soooo often. Developers being imprisoned by their chosen framework thinking that doing anything outside of it is "impure" and wrong. They don't even dare to write a simple class that is not extending/inheriting some concept from that framework.
I don't understand why someone would care so much about something they don't use or want to use.
The misconception that you come over as smart by putting down work of others.
Prime should learn Elixir and Phoenix LiveView. It takes two days for his experience level to get into Elixir and maybe a week for LiveView.
functional programming doesn't perform on stream / yt very well unfortunately.
he's willing to but the issue is us
@@wahidislamlinad You probably have a point. Most of the audience are toddlers in CS instead of people at least at the undergrad level.
@@wahidislamlinad Elixir provides a set of tools that solve really hard problems, most starting devs don't really understand the problems Elixir and Erlang were designed to solve, you start talking telephone switches and junior devs are like wtf...
yes we can talk about fault tolerance, concurrency, functional programming and how Erlang was designed to be 'not pure' like Haskell but actually a productive language... or the concept Joe Armstrong used to talk about, that a dev should be able to reason about the whole system, or even how Erlang replaces a slew of 3rd party tools like Redis.
A large section of the elixir community are senior devs who understand what Elixir and Erlang bring, I think that's why it doesn't stream well, it often requires alot of experience in other languages, and also an understanding of some really hard problems, devs who have experienced serious scaling issues, or required massive concurrency, and realise auto scaling docker clusters is often a lazy easy solution that isn't about efficiency, people maintaining high uptime services get it, or have experienced really tricky race conditions, or highly complex js applications to really get why Elixir is a really amazing language, cost saving for apps that were costring millions and now are a fraction of the cost after switching to Elixir, these are not issues most devs really have experience with
As such your talking a smaller proportion of the pie listener wise.
Elixir mentioned!
Prime, maybe you know this already but Josê's name is pronounced "joseh" he is originally from Brazil, and that country pronounces "j" as "j" (and "r" as "h")
🇧🇷 mentioned
DJOWZEH
An attempt on a quick guide on how to pronounce "José" [ʒoˈzɛ]:
J - The "s" sound in "Asia".
O - A weak and short version of the "oo" sound in "outlook". It can also be pronounced as a short version of the "o" sound in "retroactive", minus the downwards "u" sound.
S - The "z" sound in "Zambia".
É - The "e" sound in "get". Put emphasis on this one, not the "o'.
We are Brazilians. We speak Portuguese, not Spanish. When Prime says his name with the Spanish pronounciation it feels like a puch in the gut every time.
So people need to learn the pronunciation rules of every language on the planet to make TH-cam videos?
@@anarchymatt No
I got a bit moist when you talked about web components. I had an old site with a mixture of React and Pug. Each was its own separate world. But with web components, I could simply throw them in like a simple div, and implement site-wide changes in a few hours. It was glorious!
Prime highlighted the point Jose made - attempts made to interact with the client in anything other than a JS-focused approach are lauded while attempts made to interact with the server with a JS-focused approach are not.
Every week you have a react andy picking a opposing tech to shit on it. Issue is most people using said tech don't have time to respond, they're busy shipping apps, not deciding which ORM or auth service they will use this month.
Clerk mentioned
"react andy" - ryan was a ruby on rails dev for a long time and he said that even React has a ceiling too(like working with canvas)
To the person challenging with the 5 step web form: a fine little challenge except for the "autocomplete only one request". That's like typing your legs together. Don't request everything from the server and you won't have performance problems there. Optimize a bit and the autocomplete can be server side only.
I think there are valid criticism of elixir, but the original post cover non of it .
my main criticism of elixir is that its not functional enough. for example easy currying, contained side effects and monads built in would have been very nice
Ironically, your comment didn’t either.
Elixir is awesome
José in Portuguese sounds more like Joseph without the ph than Spanish Jose (ho-zeh)
MInus the preceding "d" sound. Closer to the "s' in "asia" or "pleasure".
@@isaialcantara or like in JŚON
I think the framing of "you can't use a library that isn't react with a react wrapper" is a fair interpretation. using a shimmed wrapper simply cause it does the job well is a bit different than using a shimmed wrapper because doing an actual react version is impossible to do decently.
To the guy in chat saying "They can't event get their tenses right in their pseudo code":
Actually, it is correct, if you think event driven.
You have just decided, that the product is available and the user has previously clicked the "buy" button, then everything is in place the sell the product.
All side-effects afterwards happen, because the "product just got sold", meaning all side effects are a reaction to the fact, that the product has been sold (in the past).
Totally fine, and very well readable.
liveview keeps winning
15:53 What if you just make it so only one person can edit a field at a time, show what the other user is typing if the box is occupied, then when they press submit, the other users confirm if that's ok or not with a reason sent back to the first user typing? I guess that'd only work for single fields like titles though.
React is a framework.
"uuuh... but, technically"
It's a framework
So goddamn sick of react folk always saying this crap... it is a framework.
Brazil mentioned
Agree with you so much on that
7:23
Everyone fighting about how 2 users can change the same document in real time like it was an MMO raid trying to get the last hit, meanwhile I'm thinking why not just lock the paragraph.
If Prime pronounces José as Hosé, does JoJo become HoHo's Bizarre Adventures?
Even after coming to Brazil, Prime keeps on commiting war crimes against portuguese speaking people 😔
Elixir as Elizir just hurts
in normal spanish it is correct ;)
JoJo is Japanese anime so quite bad example .. but also AMAZING anime
That’s the name of one of my gf’s photo albums
HoeHoe's Bizarre Adventures...10/10 would watch
when will you host jose in a podcast?
Elixir / Erlang / Phoenix / Liewview look like pretty much the perfect development solution for people building small-to-medium sized sites.
I'm often wrong though, what am I missing?
Even large sites. Discord and WhatsApp use Elixir and Erlang respectively. Br also use elixir
Huge ones .. u missing huge ones 😅
19:35 teej impression on point. You should do both sides of a conversation so that rookie does pollute the stream with his self-promotion 😂
#BrazilMentioned
Hey guys, if you're going to correct the man's pronunciation, at least do it right.😅
Hey Prime!
Love the show, my man!
To do a proper "José" that will make your Brazilian audience go #BrazilMentioned like Brazil was mentioned, even when it wasn't, it is very simple my friend.
Follow this template. Don't say the -th. "Zho Ze(th)" The J sounds different. The S sounds different. The emphasis goes on the last syllable.
Think about it. This name is as popular in Brazil as Joseph is in the US, and when we hear our influencers being respectful to the Spanish pronunciation feels sort of like a light kick in the balls. (I live in mexico, BTW)
As a brazilian myself, I very deterministicly guarantee, if you learn to say it right, Brazil will be mentioned in our hearts everytime.
Agora vocês dêem joinha e resposta nesse comentário pro mestre ver. 😂 👍
An attempt on a quick guide on how to pronounce "José" [ʒoˈzɛ]:
J - The "s" sound in "Asia".
O - A weak and short version of the "oo" sound in "outlook". It can also be pronounced as a short version of the "o" sound in "retroactive", minus the downwards "u" sound.
S - The "z" sound in "Zambia".
É - The "e" sound in "get". Put emphasis on this one, not the "o'.
We are Brazilians. We speak Portuguese, not Spanish. When Prime says his name with the Spanish pronounciation it feels like a puch in the gut every time.
É melhor o pessoal só parar de corrigir a pronúncia das outras pessoas, é chato e sem educação, línguas estrangeiras são difíceis para não nativos independente de qual país seja, no vídeo do fireship tanta gente com ego maior que a cabeça ficou corrigindo a pronúncia dele do nome do Valim que ele até parou de responder o pessoal, eu tenho certeza que a pronúncia de nomes em inglês da maior parte da galera é bem ruim também.
Fun fact, "water" (actual liquid varies) worlds have been tentatively identified and estimates of weather and temperature conditions made. These aren't pleasant places unfortunately.
16:39 Editor check?
Both the server-centric and th e client-centric approaches are wrong. The web app is a big graph of compute, storage and comm resources, and these resources should be used so the app works optimally. Depending on the situation browser-based storage may be the way to go, or having many layers of UI rendering (browser/local service/edge(s)/server), and so on. Trying to restrict the execution of the logic or the storage of context to only one resource or limit the comm flow amongst nodes is the important ceiling to break. The underlying dev language isn't so important, but of course best results happen with Haskell/Fuddle 🤓
Check out Hyperfiddle, built on top of Clojure.
41:15 the only way you could know if something is more expensive is if you built the _exact_ same app both ways. Then that begs the question, is that worth it over the potential impacts?
How is htmx related to liveview
Is not
17:02 just change the color of it for the other users?
1:41 🤔 A toddler can break anything you give to them in seconds, let alone an adult set to the task…
Elixir. Do it. Re-discover getting things done _fast_ 😉
Why are we pretending that this submit example is some complex problem in react? It would be extremely simple to resolve if you design the UI as sensible and have the submit button disabled until the email is validated
Ryan's work is incredible and has changed the react scene but that ego though. Stay humble dude.
React Router is a steaming pile of garbage. The only reason people think it is good is because they have never experienced anything else
Just to note that realtime doesn't mean fast or responsive, it means there is a guarantee that events etc will be processed and done so in guaranteed maximum time
so now we have react supremacists
lol Phoenix or Laravel. I'm literally at the cross roads right now.
Phoenix
Phoenix. Laravel doesn’t come close to
brazil mentioned!
The way you pronounce José's name sounds like he invented a language called Tequila.
he said "pulled out"
My favorite part is flip doing absolutely nothing that prime says
My ocean has Seaside (big up to that Smalltalk tech with an OODB Twitter bought 20 years ago; using an efficient server-client continuation-based synchronization). Btw, web dev sucks. (Has Tim Berners-Lee truly finished his thesis?)
Web development: I blame google for this.
28:30 just sounds like tcp with extra steps
5:54 - YES, that's literally his opinion that this is a ceiling for React too! If React had a good way to interacts with the canvas or do svg animations that would be better.
He says that somewhere down the thread.
however react-chart is not a ceiling because he's not talking about implementation(obviously LiveView or React do element.innerText="text" at some point in their internals) but how you develop with it. To you your react-chart hooks look like just your regular React code.
i feel like these discussions now pop up because the js script kiddies grew to legal age and have difficulties with their world view be shaken up by the pendulum swinging back.
oops, there always was ssr it just didn’t have this pretty abbreviation and oops, there’s sth called “progressive enhancement” and not everything has to “degrade gracefully” and oops, you can simply optimize away usability issues (i.e. empty load states) without react.
hilarious. if ssr-drag-drop is too janky for your use case just take another approach. no technology is a be-all-end-all-solution. choose the right tool for the job. everybody knows, no?
i don't like tailwind either they should remove that as a default
Hispanic - H, Portuguese - J,
correct me if I'm wrong
Elixir supremacy, it's so good
damn... all the Ryans
Flip is slacking...
Do I trust a guy who made a very successful language or a guy who made an overcomplicated mess from something as simple as routing….
Sounds like someone is looking for a silver bullet.
For the pronunciation of José, don't do it like in Spanish, instead check out the old Disney films with José Carioca.
TJ loves reading docs 🤣
Elixir + LUA = JULIA
❤
can anyone give me an erlang job plesae
Joe Say
The argument is not about a website existing without the server side. That'd be absurd, of course there's the server side and things get out of sync. The point is that it's extremely fragile to have the server need to understand what is going on exactly on the client side in terms of the DOM updates etc. And a design that fundamentally assumes that to be the case will be defective. And offline mode is not optional. It's not about the website being fully functional when you're driving through a tunnel. It's about it working again without a full reload when you drive out of the tunnel.
Ryan had a great talk recently called "Mind the Gap" (which Prime saw live in person btw lol) - he articulates those points better there.
I think his main gripe with server-centric frameworks is that any time you need to introduce any significant amount of interactivity(like optimistic updates) you encounter a huge gap between the server and the client, which becomes fragile because you have to couple your client and server state now somehow.
I have to say it's a bit disappointing to see you misunderstand Ryan's points so bad - given that you literally saw his "Mind the Gap" talk at BigSkyConf live, you've introduced him to the stage. He explained his ideas so well in that talk.
You mention BSConf as if it already happened near the end of the video so unless I misunderstood...
huh
don't you think it is time to learn how to say the name of a Brazilian guy in Portuguese instead of Spanish?
He’s not wrong when it comes to live view.
sucks to suck
Ryan is right. The web sucks and web development fucking sucks. Web devs write garbage
web devs are just dogshit
You must have had a tough day, im sorry
@@luka1790 nah, just spitting facts