Join devRant
Do all the things like
++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatar
Sign Up
Pipeless API
From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple API
Learn More
Feed
All
Post Types
- Rants
- Jokes/Memes
- Questions
- Collabs
- devRant
- Random
- Undefined
Cancel
All
-
Am I going crazy or is the web dev community on some otherworldly drug?
Now "server-side"-whatever is the coolest thing ever?
To the point where client side validation is not recommended anymore and actively discouraged? Are you kidding me? So, you mean to say after filling a long form with millions of fields, the page will RELOAD when I press submit and after waiting an eternity for your shitty server to respond then and only then will I know what fields are invalid?
GTFO with that bullshit.
How in the world is that good UX/UI?
I've always had this theory that we humans are the dumbest species to ever walk this earth. I mean, serisouly, how is this even a thing?
Imagine if a mobile app had to restart to tell you that your email is invalid in a simple form.
But.. but... but... what if the client has disabled javascript? Then fuck them! Who the fuck cares? What's next? Some dumb user is still using Android 2.1 Eclair and we should make our app support them? Fuck no! Fuck them, they should update.
Newsflash, if Javascript is disabled, then pretty much everything will be broken anyway.
Form validation should be instantenous. This isn't rocket science.
It should happen as the user types so they can see what's valid/invalid in real-time.
This does require effort and consideration, something many devs lack apparently.
This is just ridiculous.12 -
Going to apply to a 2 week software training program at a company I want to work for. Never been so excited. But have to update my CV and website and stuff. Deadline is 15th. Hmm...
Also they only take women or LGTBQ+ or people with less than 3 years of experience... Hmmm.... I wonder if I can get in.6 -
JavaScript has an exciting API for monitoring changes made to HTML elements. The API is called the MutationObserver API, and it was invented at the prestigious W3C—the global organization comprised of our genius software engineer overlords.
Unfortunately, the W3C has a history of occasionally forgetting to proofread new specifications before publishing them, after their large army of monkeys with typewriters have produced working draft specifications, but I'm sure those mistakes are all in the past. The MutationObserver API is receiving praise online. I'm sure it's well designed!
Let's dive in to how it all works.
The API works by calling (1) a specific function of yours any time (2) a specific kind of change is made to (3) a specific HTML element—all three configurable by you.
When a change occurs, your function is passed a collection of information about the change, known as a "record".
If you ask, that record can even include information about the state of the HTML element before the change occurred, available under the `oldValue` property. How convenient!
Oh, and one more thing. If several changes happen in a short window of time, your function may receive a whole list of records—instead of being run once for each change. You know, to save on computer resources.
Anyway, let's start using this powerful API! But wait, what's that?
The record doesn't contain the state of the HTML element when the change occurred?
No problem! That information doesn't have to be included in the record. I can just look at the element as it appears right now.
But what's this, now? I'm receiving a long list of records. I guess lots of changes happened in a short window of time, so all the records are bundled together.
So how do I know what the state was for each record?
If I look at the element as it appears right now, I can only see the end result. That won't tell me what the state was after each individual change.
I guess there's only one way to find out. For each record, I need to look at the next record and check that record's `oldValue` property.
I need to write look-ahead logic just to see the state at each record!
What kind of monkey wro—oh, right. The W3C wrote the MutationObserver API.
Just forget that I asked.1 -
You know how you can tell that a product is well designed, intutive, and user friendly?
If they have an accompanying e-learning platform with thousands and thousands of videos and even more pages of documentation, of course!
From the people who created SQL, comes something that somehow does pretty much the same thing, but is harder to use and easier to gate features behind paywalls! Fuck yeah!3 -
> Press "Push" button in the IDE.
IDE: ❌ Error 😩 Unable to push branch 'dev' to origin
* Ugh. *
> Open console. Type "git push".
Console: All deltas resolved, chief. 🫡 dev -> dev
Why. Another day, another experience to prefer the command line.2 -
OLDIE BUT GOODIE
https://devrant.com/rants/2376967/...
So now that it's been 5 years how are you planning to spend your social credits?5 -
Anyone here ever add hardcoded sentry environment names, no I don't mean hardcoded names, limit the allowed ones? (e.g. not "dev" but "Dev")
Am I the silly one that realized that this is probably not a good way of handling it and created a PR to remove the check?3 -
My phone screen died very suddenly so I had to power on an extremely old phone to serve as an alarm clock.
What is it with Android and completely dying after a couple years' downtime?
Anyway, I think the only reason I replaced this phone was that it was insufferably slow and the immediate excuse to get rid of it was that the charging port corroded. So glad I keep these things around, even after moving house 4 times.13 -
Fucking finally got xkb and xcb to work after hours of bullshit
Why is it so fucking hard getting a damn keyboard layout on linux 😭11 -
tldr: I no longer like my job.
Several years ago I got hired at this company. It was great. Lots of things to learn. Able to make a big impact. The manager is great. Lots of flexibility. Raises were decent for the most part.
6+ years later. I have nothing to learn. I feel my career is stagnating. I'm quite good at my job but things are boring and there's no challenge. In the end my company has proved to me I do not make enough to justify my skills. I keep being told things are going to change and there will be new opportunities to change roles and learn/grow, but Ive heard that for years and trusted my leadership. They didn't lie to me but there are so many things out of their control that things just never happen.
My manager has become a good friend and I hate to think about leaving but finally just have to accept that all I'm doing is hurting myself and my career.12 -
lesson of alcohol:
it doesn't matter how well you do just do and fix it later, if that even becomes relevant which strangely it somehow doesn't
it's like, full-frontal idiocracy but because you engaged in it you got smarter somehow
I'm slow at doing my sudokus now though so maybe when I recover more I'll figure it out more. think I found ballmer's peak last night and I'm gonna hopefully remember to successful steal this mindset
unfortunately turns out if I even so much as sip a low alcoholic beer my spleen inflames so that fucking sucks, so re-visiting the mindset to make sure I transferred it over to my sober state might end up tricky but hopefully I'll still keep this quest outstanding until the whole thing sorts itself out5 -
I have a new UNTRAINED bot on my site. It's based on openai now. And that's why it's blazing fast and blazing usless.
I can tell you why bots are so boring and will sure cause the dead internet theory. My datasets for example never contain real disturbing stuff ACCORDING TO NORMAL PEOPLE. EVERY TIME:
"The job failed due to an invalid training file. This training file was blocked by our moderation system because it contains too many examples that violate OpenAI's usage policies, or because it attempts to create model outputs that violate OpenAI's usage policies."
Now i'm really done. I gonna email them about their unusable training system.
In theory, i could test the message one by one if it is bad first. Don't want to do or pay for that. There should be an option to skip the data it considers disturbing instead of cancelling a whole data set for 0.1%. You also don't want to know how long it takes BEFORE he is finished validating you set. I think someone is doing it manually and clicks 'Uh uh..'-button..
Also, for the people who think they have gpt4o by having the API, you're lied to. The 'own gpt'-option on the paid openai is way more advanced than the ones you make locally.
They don't give us the real good stuff!
Oh, btw! The input data for my training is based on FORMER conversations with the bot. I automated a script to repeat a conversation I had and selected those messages and clicked 'train'. So it even complained about its OWN data! That data was already saying stuff like 'I can't help you with that' IN my training data. So, you 'corrected' and corrupted my data and now its still nog good enough for round 2?
I would really love to go back to local LLM's, but I can't imagine having ever a machine that generates as fast as the real GPT does. I also prefer to do it myself, but it's David vs. Goliath, even with a 5k computer. I'm sure.
Low quality rant, I know. I'm typing while still frustrated. For people who think censorship is needed often, this is the result! According to someone else, YOU are the one who has to be censored. Don't forget that.10 -
you ever habituate yourself to reflexively do something and then forget you ever did that and don't even notice you're doing it therefore can't turn it off because you're too oblivious to understand the problem
and for amusement what is it?9 -
It often feels like the logic and the equivalent final application code have nothing to do with each other.
Logic: Find the only element in this list that matches criterion, or the first element in this other list, or none. If the first list has multiple matches, fail.
Application: Produce information about the criterion checks for all elements in both lists for info logging. Find any elements in first list that match. Save the number of matches for an optimization that relies on a lot of assumptions about the search criterion that are only ever expressed in doc text. If one, return, if multiple, fail. Otherwise find first match in second list, produce debug hint on why the preceding elements in that list didn't match by aggregating the criterion check info. If multiple matched in second list, check highly specific interdependency, and if absent, produce warning about ambiguity. Return first match if any.
The first can be beautifully expressed as a 5 line iterator transform. The second takes 3 mutable arguments (cache, logger, criterion because it also may cache and log), must compute everything eagerly and has constraints that are neither strictly necessary for a correct implementation nor expressible in the type system.2 -