Do all the things like ++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatarSign Up
From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple APILearn More
Search - "dev story"
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.
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.
Story of WTF happened to my job
During my employment in (name censored) was stressful, They claimed I didn't complete my task on time which they constantly remove me from git and documentation(which have to follow their style of returning data), I kept emailing, slack, WhatsApp calls them, mostly and predictably got ghosted and blocked.
So How the fuck am I supposed to push my code or code without the documentation (I can actually, prevent refactoring every time, following the documentation is the good way to go.)
On the sprint review, they will complain about me not committing and pushing the code. (I did commit locally, but can't push, they removed me from the fucking repo) and not done.
Tried reasoning, telling the obvious reasons with them, doesn't work. They come out the second reason of me "NOT COMMUNICATING". Sometimes I can get to git merge from dev to my branch and get tonnes of fucked up code. I reviewed the code, and I can't tolerate it.
Lately, I overheard them mocking and cheering me about to get fired over a zoom meeting (I was in there, they forgot to remove me). Their conversation is about me being a coloniser, a jerk, betraying Chinese ancestors for being not Chinese enough.
I was like: "Why the fuck does their conversation sound like they are tucked in the Qin dynasty?"
Frequently I got labelled as unprofessional.
How is cussing about my ancestors, personal and life a professional behaviour?16
Stories from Gary #000
Short background info:
So I'm working as a game dev for 3 years now and by now I can say that I've seen some shit. Mostly because of one of our game designers, let's call him Gary.
So Gary, from here on called GDG (Game Designer Gary), is a regular game designer (GD). His job is to come up with new game ideas, commission the assets, make sure that translations are done, etc. - simply put, he has to get a lot of shit together before we can start working on a new game.
Would be no problem at all if GDG wasn't lazy as shit and would work for once in his life. No dev really wants to work with him anymore, since he's known for calling a game or any issue "ready for development" even if half the assets or specs are still missing.
Let's move on to a particular situation that happened a couple of months ago.
I had an issue assigned to me, which was about implementing the translations for a new game. As I read the issue and checked if everything I needed was given, I noticed that the most important part was in fact missing - the keywords for the translations.
So, I called GDG and asked where I could find the keywords, to which he responded "Oh, I'm working on them right now... and by the way I got a weird bug with the translation program. Can you come check it out?". Sigh. I went over to his office, rambling about how I should be able to help him with a program I rarely use and which was written ages ago.
As soon as GDG saw me coming roundbthe corner, he started explaining how the keywords aren't ready yet, since the program to create translations and their keywords won't let him name a translation.
"I can create new translations, but I can't assign a keyword to them."
"Okay, show me what you did", I told him, eager to leave.
He started to type the keyword, which turned out to be huge ass long and immediately I noticed a little counter, like "x/50", directly beneath the text field started to count up with every new character GDG typed. See where I'm going with this? HE WASNT ABLE TO RENAME A TRANSLATION BECAUSE HE WAS TOO LAZY TO FUCKING READ AND CONCENTRATE FOR ONCE. Sorry for that, but even thinking about it gets me angry again.
To some this might sound like nothing, but it really got to me at this point. Maybe it will become more understandable as I post more GDG stories.
tl;dr: A 40 something year old man, who's been working in his job for over 10 years wasn't able to use a program which he daily uses and asks me for help, only to find out he's a complete dipshit.4
I hate apples. I buy them at the grocery store. They taste bland, they don't have any smell and by eating them I don't get any positive emotions.
Well, at least this is the conclusion in my head every autumn after a year of eating store bought apples.
Then the end of autumn comes/winter begins and I visit my grandparents, who live in a village. I get a bag of apples (15-20 kgs) and this bag smells wonderful. Heck, the car smells wonderful for a few days after transporting the bag back home.
My grandparents give around 7-8 varieties of apple, mixed. Each and every one of them tastes amazing, even if I have to cut some spots out from a few. They don't always look perfect, but I think these are the noble ones and the store bought would be the peasants.
I know, it's kind of obvious, that the homegrown fruits are better, but it still amazes my tastebuds every year, plus I'm really grateful for having my grandparents.8
the red haired girl and the blue haired girl.
there was this story about a programmer who spent years studying computer science before finally getting a job.
the dev studied only computer science and was put on blue team after a few days.
a few hours into one of the constant coding sessions, the boss told the devs that red team members and blue team members would be working in pairs.
the person from red team transferred the devs work to their data base without the dev knowing, then locked down the devs computer. the dev could not do anything. later, the dev got fired for not doing any work. after that, the company got millions of dollars, and the dev did not see any of it.
both the dev and the managers made a note not to hire any programmer who cannot secure their work.
it is not ethical to teach people programming without also teaching them cyber security.
computer networking, programming and security should all be the same major.
it is a bad idea to teach people how to build anything without telling them how to secure it.
the story above was just a scenario, but it probably happens way more often than people think.
Schools should teach both things in the same major.5