Details
-
Skillsjava, js/node.js, unity/c#
-
LocationHungary
Joined devRant on 11/7/2016
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
-
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.3 -
Procastinator's tricks to be productive: Schedule messages
I hate to write people. They could answer. My whole plan might be thrown off. But when is the best time to answer them? The day after tomorrow? Too late. Tomorrow. Around 10? Thank you to all messengers that allow me to schedule a message. Instead of procrastinating, I answer, I schedule, and if I am in a bad mood, I later come back and abort and rewrite the message nicer.
Went perfectly swimmingly with my happy new year messages. Everyone got them at 00:00. Yes my friend, you're obviously the most important thing in my life, first thing I did was writing you!3 -
Just had the realization that the reason why the internet is so toxic isn't really because of anonymity
It's because if you're a massive asshole to someone, that person can't punch you in the face
I mean this for real, and it's kinda counter intuitive, but the underlying threat of violence is what keeps society civil and polite21 -
Deleted over 1'500 lines of code over the last 2 days and replaced it with 80 lines of readable, simple, generic code.
And I'm feeelin' gooood 🎶7 -
Medium: Create account to view full story
Me: Ok, let me create the account
Medium: Upgrade to read full story
Holy fuck, I hate the internet8 -
Spent weeks cleaning up legacy code, because my phone was ringing non-stop about errors and crashes, got it done. The CEO has been on vacation for like a month and a half, so I had to make executive judgements, and has just now returned. I got called down to the CEO's office so that I could get bitched at for marginally changing the appearance and behavior of a part of the site. I explain that it was necessary, and the response I got was "it was working fine for five years". All I could say to that was "no it fucking wasn't, are we working at the same company?" When I go to take another job, I might just put all of the old code back in place to remind them of how much "better" things ran before I worked here. Massive headache now, physical and proverbial.1
-
I’m on this ticket, right? It’s adding some functionality to some payment file parser. The code is atrocious, but it’s getting replaced with a microservice definitely-not-soon-enough, so i don’t need to rewrite it or anything, but looking at this monstrosity of mental diarrhea … fucking UGH. The code stink is noxious.
The damn thing reads each line of a csv file, keeping track of some metadata (blah blah) and the line number (which somehow has TWO off-by-one errors, so it starts on fucking 2 — and yes, the goddamn column headers on line #0 is recorded as line #2), does the same setup shit on every goddamned iteration, then calls a *second* parser on that line. That second parser in turn stores its line state, the line number, the batch number (…which is actually a huge object…), and a whole host of other large objects on itself, and uses exception throwing to communicate, catches and re-raises those exceptions as needed (instead of using, you know, if blocks to skip like 5 lines), and then writes the results of parsing that one single line to the database, and returns. The original calling parser then reads the data BACK OUT OF THE DATABASE, branches on that, and does more shit before reading the next line out of the file and calling that line-parser again.
JESUS CHRIST WHAT THE FUCK
And that’s not including the lesser crimes like duplicated code, misleading var names, and shit like defining class instance constants but … first checking to see if they’re defined yet? They obviously aren’t because they aren’t anywhere else in the fucking file!
Whoever wrote this pile of fetid muck must have been retroactively aborted for their previous crimes against intelligence, somehow survived the attempt, and is now worse off and re-offending.
Just.
Asdkfljasdklfhgasdfdah27 -
I’m getting really tired of all these junior-turn-senior devs who can’t write simple code asking ChatGPT to solve everything for them.
I’m having to untangle everything from bizarre organization/flow to obvious gotchas / missed edge cases to ridiculously long math chains (that could be 1/10th the length), or — and I feel so dirty for this — resorting to asking ChatGPT wtf it was thinking when it obviously wrote some of these monstrosities. Which it gets wrong much of the time.
“ALL HAIL CHATGPT!” Proclaims the head of Engineering. “IT’S OUR PRODUCTIVITY SAVIOR! LEVERAGING AI WILL LET US OUTPERFORM THE ENTIRE INDUSTRY!”
Jesus fucking christ.31 -
Before I left for vacation two weeks ago, I busted my butt to build out another portion of my frontend testing framework and get it in place (and spec’d) to unblock a coworker on a semi-high-priority ticket. I sent him detailed notes on which areas of the product it covers, how to use it, and copied one of his (blocked) tests over and updated it to use the new methods, pattern, namespacing, etc.
I came back today and discovered … he hasn’t even touched it. Everything is exactly as I left it.
Wheeeeeee.12 -
Here’s to a hopefully better 2024!
Let’s all tell our bitchface thundercunt micromanagers to fuck off, find better employ elsewhere, and finally make progress on that side project that was our world several months ago.
And if the world continues going absolutely mental, may all of you find a peaceful meadow away from everyone and build yourselves wonderful little cottages.6 -
The state of operating systems in 2024.
Windows - has a user interface that changes with every update so Microsoft can push ads even though it costs $200
Mac - an unusable interface designed solely for consuming media anchored to hardware that costs 4x what it should
Linux - absolute freedom to do everything you want so long as you don't want to play games, connect to Wifi, or listen to audio
I'm just going to go be a beet farmer in the 1600s61 -
My CTO told the COO and CEO i'd be finished SOC2 compliance by the end of December... On December 14th.
It takes 3 months to do the audit, let alone all the actual work. I hadn't even started yet.
He was fired shortly after that.7 -
Stakeholders must learn that code quality and a user-friendly frontend are not "nice to have". If they don't fix their priorities accordingly, someone will have to pay their technical debt and that's going to be expensive.5
-
DEI QA: “For step 2 should the checkbox be checked? Or uncheck ?”
… Step 2 of my testing steps reads: “Check it [the checkbox], save it, reload it. The box should still be checked. Repeat to uncheck it, just to be pedantic, then leave it off so we can test the existing behavior.”
🤦🏻♀️
DEI QA: “The payment_method_identifier will be in api callback logs if `Return payment method identifier in auth/confirmation callbacks` is checked?”
🤦🏻♀️
Me: it does what it says on the tin.
DEI QA: “BTW its a `tin`.”
DEI QA: “In Canada its `Taxpayer Identification Number`”
🤦🏻♀️ -
> TeamLeader1: I just discovered SQL is actually super fast! The low responsiveness I've experienced comes from our ORM!
> IHateForALiving: well of course SQL is blazingly fast. SQL has been refined by the best engineers in the world for the past 50 years, its performances are unparalleled for everything you could possibly need, unless you want to scale REALLY big. Sequelize, instead, is an Active Record ORM, so it's bound to struggle with huge amount of data, because every single row will get attached a significant amount of black magic to make sure everything syncs correctly. Why is that?
> TeamLeader1: I have a problem with this frontend component, it doesn't allow pagination. I tried downloading the whole DB to bypass that, but the ORM is slow... so I will bypass the ORM and download the whole table with a raw query. Look at that! It works like a charm, it's super duper fast!'
This mf is downloading some 35 thousand rows every time some user loads a page because he doesn't know how to paginate the fucking table with Angular, there's no way these people are real.12 -
So I told my wife one week ago: "Yeah, you should totally learn to code as well!"
Yesterday a package arrived, containing a really beautiful hardcover book bound in leather, with a gold foil image of a snake debossed into the cover, with the text "In the face of ambiguity -- Refuse the temptation to guess" on it.
Well, OK, that's weird.
My wife snatches it and says: "I had that custom made by a book binder". I flip through it. It contains the Python 3.9 language reference, and the PEP 8 styleguide.
While I usually dislike paper dev books because they become outdated over time, I'm perplexed by this one, because of how much effort and craftsmanship went in to it. I'm even a little jealous.
So, this morning I was putting dishes into the dishwasher, and she says: "Please let me do that". I ask: "Am I doing anything wrong?"
Wife responds: "Well, it's not necessarily wrong, I mean, it works, doesn't it? But your methods aren't very pythonic. Your conventions aren't elegant at all". I don't think I've heard anyone say the word "pythonic" to me in over a decade.
And just now my wife was looking over my shoulder as I was debugging some lower level Rust code filled with network buffers and hex literals, and she says: "Pffffff unbelievable, I thought you were a senior developer. That code is really bad, there are way too many abbreviated things. Readability counts! I bet if you used Python, your code would actually work!"
I think I might have released something really evil upon the world.29 -
Hi guys, I created a tiny Anime quotes API called Animechan. Totally free to use anywhere 😊✨
https://animechan.vercel.app/15 -
I really like that a lot of people in construction work just dont take anyones bullshit. If someone fucks up, it gets fixed. Sometimes with a lot of cussing.
Meanwhile as a programmer if you call out anyone or anything for doing something wrong, you get immediate backlash cause of it. Its a lot like that you are the problem for calling it out and not the one who caused the problem in the first place.6 -
Them: "Could you send the password in an encrypted mail?"
Me: "Yea sure, what's your GPG public key?"
Them: "What's that? Can't you just encrypt it?"
Me: "Nvm, do you have Signal?"6 -
Sometime it feels like I'm surrounded with idiots.
Got a Ticket:
Support: Please delete installation ABC from Server D.
Me: Checks everything. Installation is on Server E. Asks if this is correct?
Support: Just follow the instructions!
Me: Okey dokey. If you want me to be a hammer the installation is a nail... Drop database, Remove all files. nuke K8s resources
Support: Why did you delete the installation ABC? You should delete XYZ!
Me: Cause the ticket told to delete ABC on Server D and YOU told me to follow your instructions!
Support: Yeah but we just reused an old ticket. We wanted XYZ deleted!
It's not a big deal I can restore the shit but I hate it if a day starts with this kind of shit!18