Details
Joined devRant on 1/22/2021
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
-
I got a crap raise — lowest I’ve ever gotten anywhere, and well below inflation — despite busting my butt, having somewhat better health and therefore productivity, etc.
I complained to my boss about it, and said it was insulting. He said that direct managers have zero say in raises, and instead it’s entirely up to execs and HR. Makes sense, since nothing makes sense at this company.
Anyway, he apparently talked to his boss, who talked with his boss, who talked with the execs and HR, and they decided to give me a raise on my raise, a whole $1k/year more, all the way back up to the usual insultingly-low 3%. Yay.
Their reasoning?
“Money is tight.”
The last all-hands?
“Record profits! Record sales! Record numbers across the board! And most of all: record profits! Give yourselves a round of applause for making this all possible!”
Money is tight, eh?
I hope they get smushed by a meteor, given a snuggle-struggle by a roving Somali gang, or kept warm for the rest of their lives by another Hawaiian/Californian wildfire.14 -
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 -
dude fuck fucking salesforce i fucking hate the day someone came up with the brilliant ass idea of inventing this garbage crm software that i must deal with even though it is not my area. i fucking hate the developer experience to do third-party implementations, not letting you upload changes to another environment for the sake of """"good practices"""", the fucking interface is slow as shit i could've already had intense hto sex, taken a shit, cook lunch and sleep 2 hours before it can load a single retarded lightning page.
why? WHY? WHYYY? WHY MUST THIS ASSWARE EXIST? WHY?
AS A FACT I'VE WRITTEN THIS RANT BEFORE THE DAMN PAGE EVEN LOADED A CONFIGURATION SECTION. GOD HELP US.5 -
I work for healthcare client project in a start up, worked two years straight without a break.
Client is very inconsiderate about developers work-life balance, he always wants to release every features yesterday.
Never had a reasonable deadline, worked late nights most of the time. No one had backbone to control this client from our side.
Its only developers team, no project management, scrum masters or anything, everything has to be taken care by Dev's.
I decided to take a week break from work.
The first day of my leave he pinged me 3 times to change an "from email" address for notification email which no one give a damn about.
I never replied or did anything. But the part of myself is dying of guilt.
Now I can't relax myself completely.
Re-thinking of my life choices atm.
I loved programming since high school, I can work on computers 24/7 without tired. That's how much I love it. Now I'm just tired of it.
If anyone who read this till here. Thank you.18 -
....
I give up trying to write this.
I'm just too fucking pissed off.
My interactions with my micromanager make absolutely no sense -- she is clearly just trying to piss me off and blame me for everything, facts and reasoning be damned.
I tried detailing this week's examples (there are lots, and it's fucking Tuesday), but. screw it.
Fuck working for (and with) her.
She's a bitchface and a thundercunt.
I'm updating my resume and fucking off out of here.
God fucking damnit i hate her.23 -
Useless feature I've built?
Too many to mention. Here's #25.
Modified an existing "Are you sure..?" dialog pop-up (Yes/No buttons) to Yes/No/Cancel. Why? Managers claimed users were "accidentally" clicking 'Yes' when they should have clicked 'No' and causing all kinds of chaos, costing the company money, etc. Managers believed giving the user two chances instead of one would make it easier to avoid the problems they caused.
The meeting:
Me: "Users can click 'No', hit the 'Esc' key, or click the close 'X' button on the window, how will an extra button make it more foolproof?"
Mgr1: "It just will. Andy accidentally deleted inventory and when I asked him if an extra button would have saved them a days worth of re-counts, he said yes."
Mgr2: "Barb accidentally credited a customer $1,500. She promised me she clicked 'No', but the system credited the account anyway. An extra button would have saved us thousands of dollars!"
Me: "Um...these sound like training issues, not an extra button issue."
MyMgr: "PaperTrail, how hard is it to add an extra button?"
Dev1: "Oh yea, adding buttons is easy."
Dev2: "I can do it 5 minutes"
Dev3: "We'll save the company thousands and thousands of dollars!"
<lots of head-knodding and smiles>
MyMgr: "That settles it. PaperTrail, add the extra button!"
Users still screwed things up, but at least they couldn't blame it on not having an extra button.24 -
Part of an honest interview :
- What is your biggest weakness?
+ Triceps femoris muscles
- Why do you want this job?
+ Earning money to buy food so that I don't die of hunger.
- How do you handle pressure?
+ By shouting the word fuck
- What are your goals?
+ Have a cheek in bed every night.
- We will be in touch.
+ you never call, do you?3 -
!rant
!!pride
I tried finding a gem that would give me a nice, simple diff between two hashes, and also report any missing keys between them. (In an effort to reduce the ridiculous number of update api calls sent out at work.)
I found a few gems that give way too complicated diffs, and they're all several hundred lines long. One of them even writes the diff out in freaking html with colors and everything. it's crazy. Several of the simpler ones don't even support nesting, and another only diffs strings. I found a few possibly-okay choices, but their output is crazy long, and they are none too short, either.
Also, only a few of them support missing keys (since hashes in Ruby return `nil` by default for non-defined keys), which would lead to false negatives.
So... I wrote my own.
It supports diffing anything with anything else, and recurses into anything enumerable. It also supports missing keys/indexes, mixed n-level nesting, missing branches, nil vs "nil" with obvious output, comparing mixed types, empty objects, etc. Returns a simple [a,b] diff array for simple objects, or for nested objects: a flat hash with full paths (like "[key][subkey][12][sub-subkey]") as top-level keys and the diff arrays as values. Tiny output. Took 36 lines and a little over an hour.
I'm pretty happy with myself. 😁6 -
!rant
AHHHHHHHHHHHHHHHHHHHH
FOUR DAYS ‘TIL CLOSING!
I’M GOING TO OWN A HOUSE!
AHHHHHHHHHHHHHHHHHHHH14 -
fuck me X'D Complained to nowtv that their player wasn't working because apparently it finds 'screen sharing' software running on my mac. This was their response19
-
!rant
I received a pair of complements on how well I run team meetings after an engineering all staff this morning. Received a similar comment last week.
Someone asked “what’s your secret?”
I reply “Laziness”
“What?”
“I’m lazy. I don’t like meetings most of the time. So when I run meetings, I run them so that they’re over as fast as possible”
“How do you do that?”
“By knowing what I actually want”
“What if you don’t know what you want?”
“Then there’s no meeting”
“Well what if y-“
“Hey listen I have another meeting to get to”3 -
“Let’s not worry about the future and stick to the specs, please.”
Or as I like to call it:
The reddest flag in a bad manager.7 -
Idk why but every time I hear the business side ppl use corporate buzzwords I wanna punch them in the face…4
-
Why is it most companies think being “agile” simply means “let’s say we do work in two week blocks” but without planning or showcases or reviews, without estimations, with ad-hoc tasks inserted continually, priorities changing, tasks moving to the next “sprint” over and over …
But yes, these companies proclaim they are “agile” and do “two week sprints” when it is nothing more than chaos and rhetoric.6 -
Some time 199x, when I was still a little kiddo, my dad bought a PC. It had a big ass HDD (dimensions-wise), 1x 3.5" floppy disk drive and a 5.25" floppy disk drive. It ran DOS. Dad managed to hook up a dot matrix Epson printer to it and used the computer for writing... whatever, really :)
Then dad got some of those 5" floppies with games and installed them on our PC. Mach3, Indy, Entity and Atlantis were my favourite ones. Later we got Wolfenstein 3-D, but that was just too scary, too intense for me.
All that was years before we got Windows 3.0 installed there. -
So, you want to tell me the security method used by the f*cking state of Missouri is CSS's "display: none"???
Source: https://missouriindependent.com/202...10 -
I could bitch about XSLT again, as that was certainly painful, but that’s less about learning a skill and more about understanding someone else’s mental diarrhea, so let me pick something else.
My most painful learning experience was probably pointers, but not pointers in the usual sense of `char *ptr` in C and how they’re totally confusing at first. I mean, it was that too, but in addition it was how I had absolutely none of the background needed to understand them, not having any learning material (nor guidance), nor even a typical compiler to tell me what i was doing wrong — and on top of all of that, only being able to run code on a device that would crash/halt/freak out whenever i made a mistake. It was an absolute nightmare.
Here’s the story:
Someone gave me the game RACE for my TI-83 calculator, but it turned out to be an unlocked version, which means I could edit it and see the code. I discovered this later on by accident while trying to play it during class, and when I looked at it, all I saw was incomprehensible garbage. I closed it, and the game no longer worked. Looking back I must have changed something, but then I thought it was just magic. It took me a long time to get curious enough to look at it again.
But in the meantime, I ended up played with these “programs” a little, and made some really simple ones, and later some somewhat complex ones. So the next time I opened RACE again I kind of understood what it was doing.
Moving on, I spent a year learning TI-Basic, and eventually reached the limit of what it could do. Along the way, I learned that all of the really amazing games/utilities that were incredibly fast, had greyscale graphics, lowercase text, no runtime indicator, etc. were written in “Assembly,” so naturally I wanted to use that, too.
I had no idea what it was, but it was the obvious next step for me, so I started teaching myself. It was z80 Assembly, and there was practically no documents, resources, nothing helpful online.
I found the specs, and a few terrible docs and other sources, but with only one year of programming experience, I didn’t really understand what they were telling me. This was before stackoverflow, etc., too, so what little help I found was mostly from forum posts, IRC (mostly got ignored or made fun of), and reading other people’s source when I could find it. And usually that was less than clear.
And here’s where we dive into the specifics. Starting with so little experience, and in TI-Basic of all things, meant I had zero understanding of pointers, memory and addresses, the stack, heap, data structures, interrupts, clocks, etc. I had mastered everything TI-Basic offered, which astoundingly included arrays and matrices (six of each), but it hid everything else except basic logic and flow control. (No, there weren’t even functions; it has labels and goto.) It has 27 numeric variables (A-Z and theta, can store either float or complex numbers), 8 Lists (numeric arrays), 6 matricies (2d numeric arrays), 10 strings, and a few other things like “equations” and literal bitmap pictures.
Soo… I went from knowing only that to learning pointers. And pointer math. And data structures. And pointers to pointers, and the stack, and function calls, and all that goodness. And remember, I was learning and writing all of this in plain Assembly, in notepad (or on paper at school), not in C or C++ with a teacher, a textbook, SO, and an intelligent compiler with its incredibly helpful type checking and warnings. Just raw trial and error. I learned what I could from whatever cryptic sources I could find (and understand) online, and applied it.
But actually using what I learned? If a pointer was wrong, it resulted in unexpected behavior, memory corruption, freezes, etc. I didn’t have a debugger, an emulator, etc. I had notepad, the barebones compiler, and my calculator.
Also, iterating meant changing my code, recompiling, factory resetting my calculator (removing the battery for 30+ sec) because bugs usually froze it or corrupted something, then transferring the new program over, and finally running it. It was soo slowwwww. But I made steady progress.
Painful learning experience? Check.
Pointer hell? Absolutely.4 -
I’m surrounded by idiots.
I’m continually reminded of that fact, but today I found something that really drives that point home.
Gather ‘round, everybody, it’s story time!
While working on a slow query ticket, I perused the code, finding several causes, and decided to run git blame on the files to see what dummy authored the mental diarrhea currently befouling my screen. As it turns out, the entire feature was written by mister legendary Apple golden boy “Finder’s Keeper” dev himself.
To give you the full scope of this mess, let me start at the frontend and work my way backward.
He wrote a javascript method that tracks whatever row was/is under the mouse in a table and dynamically removes/adds a “.row_selected” class on it. At least the js uses events (jQuery…) instead of a `setTimeout()` so it could be worse. But still, has he never heard of :hover? The function literally does nothing else, and the `selectedRow` var he stores the element reference in isn’t used elsewhere.
This function allows the user to better see the rows in the API Calls table, for which there is a also search feature — the very thing I’m tasked with fixing.
It’s worth noting that above the search feature are two inputs for a date range, with some helpful links like “last week” and “last month” … and “All”. It’s also worth noting that this table is for displaying search results of all the API requests and their responses for a given merchant… this table is enormous.
This search field for this table queries the backend on every character the user types. There’s no debouncing, no submit event, etc., so it triggers on every keystroke. The actual request runs through a layer of abstraction to parse out and log the user-entered date range, figure out where the request came from, and to map out some column names or add additional ones. It also does some hard to follow (and amazingly not injectable) orm condition building. It’s a mess of functional ugly.
The important columns in the table this query ultimately searches are not indexed, despite it only looking for “create_order” records — the largest of twenty-some types in the table. It also uses partial text matching (again: on. every. single. keystroke.) across two varchar(255)s that only ever hold <16 chars — and of which users only ever care about one at a time. After all of this, it filters the results based on some uncommented regexes, and worst of all: instead of fetching only one page’s worth of results like you’d expect, it fetches all of them at once and then discards what isn’t included by the paginator. So not only is this a guaranteed full table scan with partial text matching for every query (over millions to hundreds of millions of records), it’s that same full table scan for every single keystroke while the user types, and all but 25 records (user-selectable) get discarded — and then requeried when the user looks at the next page of results.
What the bloody fucking hell? I’d swear this idiot is an intern, but his code does (amazingly) actually work.
No wonder this search field nearly crashed one of the servers when someone actually tried using it.
Asdfajsdfk.rant fucking moron even when taking down the server hey bob pass me all the paperclips mysql murder terrible code slow query idiot can do no wrong but he’s the golden boy idiots repeatedly murdered mysql in the face21