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
Search - "event"
-
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 -
So apparently due to an extremely talkative x input driver and an error in a certain app, I've been running an emergent keylogger on my computer for half a year. On every keypress event, the driver would call the app, the app would segfault, the driver would log the incident including the event to /var/log and then crash, and the app would restart the worker. I noticed this when I started wondering why /var/log is over 100GB in size.13
-
Bloody shit, I hate all the hypes right now.
Seemingly everyone is going from 0 to zealous hype at the moment...
Be it Musk's fanboys (that arsehole must have a prolapse), the mfucking GPT chatbot or anything else.
Everything's hyped up and noone talks about normal stuff...
... and when you point that out, everyone gets angry for reasons I cannot understand.
We had so many good inventions and progress in science this year (despite the world being pretty apocalyptic....), but seemingly everyone can only talk about either Twitter or their Twitter timeline. -.-
The Christmas bullshitting was hard enough each year, as it has nothing to do with being a festive event and love etc, but being just an commercial bullshit bingo...
But adding all the hypes makes the bullshit parade unbearable.
Dear Santa, please fry all the mobile electronics at Christmas, so we can talk about normal stuff and have a nice evening.
... Would be probably even better to just fry all electronics, even stone age was probably more interesting than the earbleeding conversations at the moment.21 -
Dear Microsoft Kusto Query Language (KQL)
Screw you. You suck like more than a sudden depressurization event in an airplane. Creating your own freaking query language is bad, the people who invented SQL based it on a the principles of mathematical relational algebra, which although confusing, and not suited for all use cases is at least consistent.
You were invented by a bunch of oxygen deprived halfwits based on the principles of sadism and incompetence.
The only situation in which I would voluntarily use KQL as my tool of choice is if my purpose was to extract a Dantesque style revenge on someone who had committed grievous harm to myself and my family members. In that case forcing them to work with you day in and day out would still border on cruel and unusual punishment.
Sincerely, A developer who has spent the past 2 hours dealing with your Lovecraftian madness.
P.S. I hope you choke on a raw chicken bone and no one gives you CPR.4 -
Coming back here after years to rant about... myself.
TLDR: I fucked up and now have to call a thousand people as a dev, I'm not even getting paid for it and they all get crazy about a random ID that got assigned to them, so now I want to throw away all my electronics and become a skilift operator.
Stupid me deployed a project shortly before we have the largest amount of orders in the year. (Like 90% of yearly orders in a couple minutes cause they are sold out fast and people wait to order first)
I got this horrible legacy "plain self written framework php" project which I tried to upgrade state of the art.
There was one piece missing to upgrade everything and nicely deploy it to some fresh new servers which can handle the high load which peaks at the time orders open.
So I did it the day before orders open and... everything worked well! Nothing crashed.
I wrote my client to wait a little before he confirms the orders, since after confirmation each of the people who ordered will receive an email where they can choose a unique number which they'll receive as a sticker with the order.
Since it's an event my client is promoting, people will meet each other wearing those unique stickers and being able to identify each other online and in person with this number.
Suddenly my clients call me that "customers are complaining about that there is something wrong"
Turned out he confirmed all orders straight away and that part of the application which makes the number unique was broken on the update.
So everyone could chose any number (also taken ones) as his "unique" number.
In my panic, I told my client "It's my mistake, I'll deal with it of course and call the affected people in my free time, since it's my mistake you don't have to pay for it". (it's my largest client by far, am a freelancer)
Realizing when people can chose any number it'll not be a few ones who have the same, it's like almost everyone did chose "69", "1", "420", "88 (a scary amount of people)",... (with 69 being the number being chosen by most people btw, even more then "1")
So now I have to call about a thousand people telling them a new random ID will be assigned to them. I thought of course about mailing them, wrote a script that deals with the issue automatically, and FUCKED IT UP TOO so everyone is confused and the only way to deal with it is by a call basically.
And while I'm sitting here now for 2 days straight calling people in my free time about their random ID will have to change, I realized that some people are quite crazy about random ID's.
I'm talking about yelling and threatening because "is it too much to ask for a working website when ordering this expensive product".
I hate my life right now and am getting quite serious about throwing all my electronic devices away and become a skilift operator instead. Fuck the higher pay, it's not worth the shit, I wanna have only responsibility about one button to press while watching people fall on their face.5 -
EoS1: This is the continuation of my previous rant, "The Ballad of The Six Witchers and The Undocumented Java Tool". Catch the first part here: https://devrant.com/rants/5009817/...
The Undocumented Java Tool, created by Those Who Came Before to fight the great battles of the past, is a swift beast. It reaches systems unknown and impacts many processes, unbeknownst even to said processes' masters. All from within it's lair, a foggy Windows Server swamp of moldy data streams and boggy flows.
One of The Six Witchers, the Wild One, scouted ahead to map the input and output data streams of the Unmapped Data Swamp. Accompanied only by his animal familiars, NetCat and WireShark.
Two others, bold and adventurous, raised their decompiling blades against the Undocumented Java Tool beast itself, to uncover it's data processing secrets.
Another of the witchers, of dark complexion and smooth speak, followed the data upstream to find where the fuck the limited excel sheets that feeds The Beast comes from, since it's handlers only know that "every other day a new one appears on this shared active directory location". WTF do people often have NPC-levels of unawareness about their own fucking jobs?!?!
The other witchers left to tend to the Burn-Rate Bonfire, for The Sprint is dark and full of terrors, and some bigwigs always manage to shoehorn their whims/unrelated stories into a otherwise lean sprint.
At the dawn of the new year, the witchers reconvened. "The Beast breathes a currency conversion API" - said The Wild One - "And it's claws and fangs strike mostly at two independent JIRA clusters, sometimes upserting issues. It uses a company-deprecated API to send emails. We're in deep shit."
"I've found The Source of Fucking Excel Sheets" - said the smooth witcher - "It is The Temple of Cash-Flow, where the priests weave the Tapestry of Transactions. Our Fucking Excel Sheets are but a snapshot of the latest updates on the balance of some billing accounts. I spoke with one of the priestesses, and she told me that The Oracle (DB) would be able to provide us with The Data directly, if we were to learn the way of the ODBC and the Query"
"We stroke at the beast" - said the bold and adventurous witchers, now deserving of the bragging rights to be called The Butchers of Jarfile - "It is actually fewer than twenty classes and modules. Most are API-drivers. And less than 40% of the code is ever even fucking used! We found fucking JIRA API tokens and URIs hard-coded. And it is all synchronous and monolithic - no wonder it takes almost 20 hours to run a single fucking excel sheet".
Together, the witchers figured out that each new billing account were morphed by The Beast into a new JIRA issue, if none was open yet for it. Transactions were used to update the outstanding balance on the issues regarding the billing accounts. The currency conversion API was used too often, and it's purpose was only to give a rough estimate of the total balance in each Jira issue in USD, since each issue could have transactions in several currencies. The Beast would consume the Excel sheet, do some cryptic transformations on it, and for each resulting line access the currency API and upsert a JIRA issue. The secrets of those transformations were still hidden from the witchers. When and why would The Beast send emails, was still a mistery.
As the Witchers Council approached an end and all were armed with knowledge and information, they decided on the next steps.
The Wild Witcher, known in every tavern in the land and by the sea, would create a connector to The Red Port of Redis, where every currency conversion is already updated by other processes and can be quickly retrieved inside the VPC. The Greenhorn Witcher is to follow him and build an offline process to update balances in JIRA issues.
The Butchers of Jarfile were to build The Juggler, an automation that should be able to receive a parquet file with an insertion plan and asynchronously update the JIRA API with scores of concurrent requests.
The Smooth Witcher, proud of his new lead, was to build The Oracle Watch, an order that would guard the Oracle (DB) at the Temple of Cash-Flow and report every qualifying transaction to parquet files in AWS S3. The Data would then be pushed to cross The Event Bridge into The Cluster of Sparks and Storms.
This Witcher Who Writes is to ride the Elephant of Hadoop into The Cluster of Sparks an Storms, to weave the signs of Map and Reduce and with speed and precision transform The Data into The Insertion Plan.
However, how exactly is The Data to be transformed is not yet known.
Will the Witchers be able to build The Data's New Path? Will they figure out the mysterious transformation? Will they discover the Undocumented Java Tool's secrets on notifying customers and aggregating data?
This story is still afoot. Only the future will tell, and I will keep you posted.6 -
So recently I completed side gig from random freelancing site where I had to shadow troubleshoot performance problems over teams call with random Indian guy on his client's AWS account. Long story short you can autoscale new instances all you want but it's not gonna help if your FIFO sqs has only one message group ID. This architecture is running an online game, which is basically limited to processing ONE event at the same time for ALL players xD
What's even better, basing on naming convention I realized it's a company that I interviewed for like 4 months ago and they told me "we need someone with more experience". Well good luck, thanks for quick cash -
"Longest you worked without rest + why?"
46hrs
2 x 14h shifts from 0400h on.
No breaks, toilet, drinks or food.
Intercepted by a removal and all the getting ready, getting there, preparing food and such stuff.
Quite common the 10-14hrs shifts these days. Logistics companies take pride on how they don't give a remote fuck about their employees. .. And! Regularly fucking up everything with their out of this world expectations and assumptions. Only thing stopping such madness? The reality of sailing the edge of bankruptcy.
Seconded by a university event that everybody fucked up and had to be pulled out of the mud with 44hrs straight.
Well. Intercepted by some booze.
Best part? My then time partner decided to throw an episode in my only free time. God I still hate that daemon. She must have committed a series of crimes against humanity by now. Easily could be responsible for the downfall of civilisation.5 -
Monday starts amazing.
Team Leader is mad that i didn't attend a party, and insists to know, why i wasnt there.
An event, that per my understanding was obviously an optional event, where colleagues meet, talk about some stuff, and then eat and drink, because it was fucking worded that way in the email. Ah and in that email they also asked us to actively respond, if we want to participate.
Me, naturally: Obviously an optional event, go figure.9 -
Times I have run into event loop / closure related issues in my 10+ years of JavaScript app development: 0
Times I have run into event loop / closure related issues in my 10+ years of interviewing: Uncaught RangeError: Maximum call stack size exceeded
SHEESH3 -
CTO: We'll use epochs for any time related fields in our services.
After service integration...
Dev from producer team: Hey the time field is showing up as 1970 and not null in your table. That seems to be a bug.
Me: Code looks fine. We are converting epochs to timestamps here. Null is taken care by the library function itself.
The same dev: Actually we are sending zero instead of null values in that time field. But we'd want the end table to treat that as null.
Me: Why can't you send null then?
The dev: Actually avro doesn't support nulls. Hence the zero.
Me: WTF??????
Manager to me: Actually you need to convert them as null. Anyways, this is not a blocker and we can live with it for now.
END OF RANT
Why can't they fucking send it as null? And when I asked about the details, that particular event type doesn't require that field. Still the manager insists on sending that field for it.22 -
Everyone and their dog is making a game, so why can't I?
1. open world (check)
2. taking inspiration from metro and fallout (check)
3. on a map roughly the size of the u.s. (check)
So I thought what I'd do is pretend to be one of those deaf mutes. While also pretending to be a programmer. Sometimes you make believe
so hard that it comes true apparently.
For the main map I thought I'd automate laying down the base map before hand tweaking it. It's been a bit of a slog. Roughly 1 pixel per mile. (okay, 1973 by 1067). The u.s. is 3.1 million miles, this would work out to 2.1 million miles instead. Eh.
Wrote the script to filter out all the ocean pixels, based on the elevation map, and output the difference. Still had to edit around the shoreline but it sped things up a lot. Just attached the elevation map, because the actual one is an ugly cluster of death magenta to represent the ocean.
Consequence of filtering is, the shoreline is messy and not entirely representative of the u.s.
The preprocessing step also added a lot of in-land 'lakes' that don't exist in some areas, like death valley. Already expected that.
But the plus side is I now have map layers for both elevation and ecology biomes. Aligning them close enough so that the heightmap wasn't displaced, and didn't cut off the shoreline in the ecology layer (at export), was a royal pain, and as super finicky. But thankfully thats done.
Next step is to go through the ecology map, copy each key color, and write down the biome id, courtesy of the 2017 ecoregions project.
From there, I write down the primary landscape features (water, plants, trees, terrain roughness, etc), anything easy to convey.
Main thing I'm interested in is tree types, because those, as tiles, convey a lot more information about the hex terrain than anything else.
Once the biomes are marked, and the tree types are written, the next step is to assign a tile to each tree type, and each density level of mountains (flat, hills, mountains, snowcapped peaks, etc).
The reference ids, colors, and numbers on the map will simplify the process.
After that, I'll write an exporter with python, and dump to csv or another format.
Next steps are laying out the instances in the level editor, that'll act as the tiles in question.
Theres a few naive approaches:
Spawn all the relevant instances at startup, and load the corresponding tiles.
Or setup chunks of instances, enough to cover the camera, and a buffer surrounding the camera. As the camera moves, reconfigure the instances to match the streamed in tile data.
Instances here make sense, because if theres any simulation going on (and I'd like there to be), they can detect in event code, when they are in the invisible buffer around the camera but not yet visible, and be activated by the camera, or deactive themselves after leaving the camera and buffer's area.
The alternative is to let a global controller stream the data in, as a series of tile IDs, corresponding to the various tile sprites, and code global interaction like tile picking into a single event, which seems unwieldy and not at all manageable. I can see it turning into a giant switch case already.
So instances it is.
Actually, if I do 16^2 pixel chunks, it only works out to 124x68 chunks in all. A few thousand, mostly inactive chunks is pretty trivial, and simplifies spawning and serializing/deserializing.
All of this doesn't account for
* putting lakes back in that aren't present
* lots of islands and parts of shores that would typically have bays and parts that jut out, need reworked.
* great lakes need refinement and corrections
* elevation key map too blocky. Need a higher resolution one while reducing color count
This can be solved by introducing some noise into the elevations, varying say, within one standard div.
* mountains will still require refinement to individual state geography. Thats for later on
* shoreline is too smooth, and needs to be less straight-line and less blocky. less corners.
* rivers need added, not just large ones but smaller ones too
* available tree assets need to be matched, as best and fully as possible, to types of trees represented in biome data, so that even if I don't have an exact match, I can still place *something* thats native or looks close enough to what you would expect in a given biome.
Ponderosa pines vs white pines for example.
This also doesn't account for 1. major and minor roads, 2. artificial and natural attractions, 3. other major features people in any given state are familiar with. 4. named places, 5. infrastructure, 6. cities and buildings and towns.
Also I'm pretty sure I cut off part of florida.
Woops, sorry everglades.
Guess I'll just make it a death-zone from nuclear fallout.
Take that gators!5 -
College is worse than cancer.
Worse than tumor.
Worse than any (un)imaginable death or torture.
I feel dull.
I feel DUMBED DOWN.
I FEEL DUMBER AFTER 6 YEARS OF COLLEGE COMPARED TO BEFORE STARTING COLLEGE.
6 fucking years of wrecking my healthy brain in college.
Has now became unhealthy and mentally unstable.
I forgot almost EVERYTHING i knew about coding.
Because in a "COMPUTER SCIENCE" college they teach everything BUT coding.
The professors and assistants have no morals.
They are INHUMANE.
Professors are ready to walk across a fucking corpse.
If your mother gets cancer and you are unable to come to class or study, the professors dont give a FUCK, they will drop you down so you have to study for exams again instead of helping your ill mother.
Professors have NO COMPASSION.
NO DIGNITY.
They are just BRAINLESS robots.
Sentients, agents working for the matrix.
They keep reading the same script every year and call that a successful career.
IF PROFESSORS AND ASSISTANTS AT COLLEGE ACTUALLY KNEW TO DO ANYTHING USEFUL IN LIFE, THEY WOULD NOT BE PROFESSORS AND ASSISTANTS FOR THE MAJORITY (OR WHOLE) OF THEIR LIFE.
I gave my maximum effort.
I SACRIFICED MY LIFE FOR SCHOOL.
Just to end up with school spitting on my face.
I feel DUMBED down.
Robotic.
Procedural minded.
As some brainless retard who has to follow orders as if im a 6 year old who doesn't know what to do.
Like a computer.
Because of college - i have no will to live.
Because of college - i no longer have passion for coding.
Because of college - i no longer know what is my purpose in life.
Because of college - i feel like im floating in cosmos, somewhere far deep into the space, without knowing where im going, what im doing, why im doing what im doing...
I feel void inside me.
I also feel vengeance inside me.
SCHOOL HAS RUINED MY LIFE.
It made me mentally insane.
It made me mentally so sick that i had to watch head decapitation gore videos to calm myself down, so i can imagine the victims being murdered are the professors and assistants from my college.
PROFESSORS AND ASSISTANTS HAVE 0 UNDERSTANDING FOR OTHER HUMAN LIFE.
MILLIONS of people have private problems going on in their lives every day.
What if someone cant pass an exam because of private problems that's going on in their life?
What if the student is abused by a family member?
What if the student has ANY non-self destructive negative event happening to them, which they're not at fault, and can not control?
What if the student got cancer and cant study for exams, is he supposed to fail?
What if the student came home and the police knocked on his door and said "sorry for your loss, your whole family just died in car accident" and student falls into depression and cant study for exams, is he supposed to fail???
There are infinite multitude of random events this damned universe can do to a human life.
BUT PROFESSORS AND ASSISTANTS;
DO
NOT
GIVE
A
FUCK.
I feel soulless.
I feel like i signed a contract with the devil when i started college by selling him my soul.
School (when i say school, i also mean college, because its the same fucking shit under a different name) is supposed to represent "education".
Lets talk about it.
What exactly are we being "EDUCATED" in school?
To memorize pdf slides?
Memorize textbook?
Memorize notes?
Memorize formulas?
Memorize memorize memorize???
First of all, all of what we're "studying" is BULLSHIT, second of all MEMORIZING all of this means you're gonna forget 60% of it tomorrow, 80% in the next 2 days and you'll forget 100% of what you "learned" by the 7th day.
SOCIETY TOLD YOU TO MEMORIZE USELESS BULLSHIT AND TOLD YOU THAT YOU'RE BEING EDUCATED THAT WAY. YOU MUST BE FUCKING DUMB TO BELIEVE THAT.
If memorizing == education, then i do NOT want to be a part of this "education".
BEFORE starting college i coded many projects.
I self-learned everything.
6 years of college and it taught me LESS THAN ZERO.
NOT EVEN ZERO.
LESS THAN ZERO because i got dumbed down, below the underground, and had to dig myself up on the surface.
I built software for an american real estate agency and sold it for 5 figures.
I built software for 3 people from New York for another 5 figures.
I even got offers to work in local software companies without having a degree.
At internship i was given a task to finish in 2 weeks. I finished it in 3 days. They were shocked and wanted to hire me for further work.
At another internship there was 4 of us working together as a team. At the end company contacted only ME and told me i showed the best results on their list out of ALL the teams and the team members that were with me.
Ever since i had to study for disgusting college i had to stop working.
Because of college, i have no source of income for MONTHS now.
Because of college, i had several mental breakdowns.
---
To all professors and assistants:
I pray that karma ruins your life with lethal outcome, and your kids die of cancer in pain.9 -
one of my guys decided to start learning c++ for the fun and fuck of it. We do not use c++ for shit (we web developers in this bitch) and he asked me if in the event of him getting completely fucking stuck he could come to me for guidance, I said sure. I do use c++ for personal game projects....it is mostly very bad C until I need c++, it is horrible seriously, I ain't no expert.
He decides to go with the LLVM. Creates a simple hello world app. Runs clang++ main.cpp -o main.
**QUICK PAUSE**
Done, the CLI returns the prompt back to him. He comes and asks me wtf is going on. I check on my machine(Linux based) and do the exact same thing. Executable comes out.
I check back on his windows machine, try typing the same shit. Nada. It does not throw errors or warnings, and the syntax is fucking fine, can't really fuck up c-outing hello fucking world. FUCKING NADA
I couldn't sit down to troubleshoot since it was still working hours, but this shit is haunting me and I am going ballsack crazy knowing that I won't be able to jump at it until tomorrow.
This just makes me dislike c++, i usually never have issues like that, but then again, I use the microsoft compiler (bitch at me all you want, most game developer tutorials etc use that shit, so does the Cherno, its all i know OK????)
I am going to go crazy sdjkfhasdkjlfghlajkhrfvluidefjbhfksjadhjksdsdsjksdjkl11 -
A long long time ago ( 2007 I think ) I worked for a company that made landing sites, so basically an email campaign would go out, users would be sent to a 1 page website with a form to capture their data, ready to be spammed even more. You know how it was back then.
So I worked with a guy who we had just hired, I didn't do the hiring but his CV checked out, so I gave him one of my tasks. Now most pages were made with js and html, with a PHP backend ( called with Ajax). Now this guy didn't know PHP so I was like all good, ASP works too at the end of the day we don't judge, we do like 2 or 3 of these a day and never look at them again. So he goes of and does is thing.
3 weeks later, the customer calls up to me they still haven't received their landing page. Ok so he probably forgot to email the customer np, I tell him to double check he has emailed the customer. Another week goes by end the customer calls back, same problem. At this point I'm getting worried, because we're days away from the deadline and it was originally my task.
So I go back to the guy and I tell him I want that landing page so I can send it myself, half thinking to myself that we had a freeloader, that guy that comes in to companies for 3 weeks, doesn't work, but still cashes his pay. But no, this was much worse.
So he tells me he has finished yet. I ask him why, what's the blocker ? You had 4 weeks to tell me you were blocked and couldn't progress. And his answer was simply, because I wasn't blocked I have been working on it this whole time. So I tell him to zip his project up and email it to me. We didn't do SVN or git back then, simply wasn't worth it. So he comes back to me and says the email server is telling him attachments can't be bigger then 50mb. At this point I'm thinking he didn't properly sized the art or something, so I give him a flash drive to put it on.
When I then open the flash drive, the archive is 300mb, thinking to myself, the images weren't even that big to begin with.
So I open it up, and I don't even find any images, just a single asp page. About 500mb. When I opened that up and it finally loaded, I saw the most horrendous things ever.
The first 500 lines was just initializing empty vars. Then there was some code that created an empty form with an onChange event that submits the form. After that.. it was just non stop nested if's. No loops, no while, for, foreach, NO elseif's, just nested if's, for every possible combination of the state the form could be in. Abou 5000 of them, in a single file. To make matters worse, all the form ( and page ) layout was hardcoded in the if's. Includes inline css, base64 encoded images, nothing but as dynamic, based on the length of the form he changes the layout, added more background etc. He cut the images up for every possible size of the page and included them in the code.
I showed it to my boss, he fired the guy on the spot. I redid the work from scratch, in under 4 hours. Send it to the client. they had no ammends to make, happy as Larry. Whish I kept the code somewhere.
Morale of the story, allways do a coding test on interviews, even if small things just to sanity check.3 -
This is the third part of my ongoing series "The Ballad of the Six Witchers and the Undocumented Java Tool".
In this part, we have the massive Battle of Sparks and Storms.
The first part is here: https://devrant.com/rants/5009817/...
The second part is here: https://devrant.com/rants/5054467/...
Over the last couple sprints and then some, The Witcher Who Writes and the Butchers of Jarfile had studied the decompiled guts of the Undocumented Java Beast and finally derived (most of) the process by which the data was transformed. They even built a model to replicate the results in small scale.
But when such process was presented to the Priests of Accounting at the Temple of Cash-Flow, chaos ensued.
This cannot be! - cried the priests - You must be wrong!
Wrong, the Witchers were not. In every single test case the Priests of Accounting threw at the Witchers, their model predicted perfectly what would be registered by the Undocumented Java Tool at the very end.
It was not the Witchers. The process was corrupted at its essence.
The Witchers reconvened at their fortress of Sprint. In the dark room of Standup, the leader of their order, wise beyond his years (and there were plenty of those), in a deep and solemn voice, there declared:
"Guys, we must not fuck this up." (actual quote)
For the leader of the witchers had just returned from a war council at the capitol of the province. There, heading a table boarding the Archpriest of Accounting, the Augur of Economics, the Marketing Spymaster and Admiral of the Fleet, was the Ciefoh Seat himself.
They had heard rumors about the Order of the Witchers' battles and operations. They wanted to know more.
It was quiet that night in the flat and cloudy plains of Cluster of Sparks and Storms. The Ciefoh Seat had ordered the thunder to stay silent, so that the forces of whole cluster would be available for the Witchers.
The cluster had solid ground for Hive and Parquet turf, and extended from the Connection River to farther than the horizon.
The Witcher Who Writes, seated high atop his war-elephant, looked at the massive battle formations behind.
The frontline were all war-elephants of Hadoop, their mahouts the Witchers themselves.
For the right flank, the Red Port of Redis had sent their best connectors - currency conversions would happen by the hundreds, instantly and always updated.
The left flank had the first and second army of Coroutine Jugglers, trained by the Witchers. Their swift catapults would be able to move data to and from the JIRA cities. No data point will be left behind.
At the center were thousands of Sparks mounting their RDD warhorses. Organized in formations designed by the Witchers and the Priestesses of Accounting, those armoured and strong units were native to this cloudy landscape. This was their home, and they were ready to defend it.
For the enemy could be seen in the horizon.
There were terabytes of data crossing the Stony Event Bridge. Hundreds of millions of datapoints, eager to flood the memory of every system and devour the processing time of every node on sight.
For the Ciefoh Seat, in his fury about the wrong calculations of the processes of the past, had ruled that the Witchers would not simply reshape the data from now on.
The Witchers were to process the entire historical ledger of transactions. And be done before the end of the month.
The metrics rumbled under the weight of terabytes of data crossing the Event Bridge. With fire in their eyes, the war-elephants in the frontline advanced.
Hundreds of data points would be impaled by their tusks and trampled by their feet, pressed into the parquet and hive grounds. But hundreds more would take their place. There were too many data points for the Hadoop war-elephants alone.
But the dawn will come.
When the night seemed darker, the Witchers heard a thunder, and the skies turned red. The Sparks were on the move.
Riding into the parquet and hive turf, impaling scores of data points with their long SIMD lances and chopping data off with their Scala swords, the Sparks burned through the enemy like fire.
The second line of the sparks would pick data off to be sent by the Coroutine Jugglers to JIRA. That would provoke even more data to cross the Event Bridge, but the third line of Sparks were ready for it - those data would be pierced by the rounds provided by the Red Port of Redis, and sent back to JIRA - for good.
They fought for six days and six nights, taking turns so that the battles would not stop. And then, silence. The day was won, all the data crushed into hive and parquet.
Short-lived was the relief. The Witchers knew that the enemy in combat is but a shadow of the troubles that approach. Politics and greed and grudge are all next in line. Are the Witchers heroes or marauders? The aftermath is to come, and I will keep you posted.4 -
A more interesting related fact is that this Tuesday I got fired and it was the first occasion that an event that impacted my career didn't have tenfold the impact on my faith in my own abilities. In fact, I didn't even really feel responsible at all. They were clearly looking for a senior with low self-esteem.
Now I just have to figure out how I'll feed myself for four more months before I graduate and get a full-time job anywhere around London.4 -
I feel very anxious when developers interviewing me asks
1. is nodejs single threaded or multithreaded ?
2. How does node handle requests
3. How do u manage concurrency
4. What is event emitter and callback.
Dude i have given you my resume, without knowing these things i could never do that ?
I feel the discussion must be based on concepts and general problem solving rather than focusing on one technology. Tech can always be learnt.6 -
I wish all you frontend devs who use the keydown event to hack tab-order a very painful and very quick death.
Especially those who fail to ensure that TAB; Shift+TAB is always identity.2 -
I was in a Meta workshop for PhD candidates, and they spoke about some of their programs. Meta is financing (paying the tuition fees + salary) for PhD students in Oxford and UCL. Could be interesting for people who wanted to go for a PhD in the UK but could not afford it because UK's higher education system sucks.
There was also a coding interview preparation session, and it was honestly nice to hear from them exactly what they expect from their candidates.
But maybe I have positive feeling about this event just because I went to a fucking Green Day concert an hour later, and it was the best day of my pitiful life.4 -
Started a new job as junior developer. One of my first task was to sent a simple notification on an event in out product. Write the code, test that it works, push to devops.
Code compiles, tests pass, it’s deployed to internal test env. Check that my notification works in the test env. No problem.
It’s deployed to the customers test environment. It works and customer accepts it for prod.
We release to prod and of course it fails. Seems to be a simple string.Format that fails for god knows why. After 3h of debugging on prod without success we decide to roll it back.
Today we decided to try it on a backup of the prod db since one of the strings was taken from the db. Still working. No matter what data I input when trying it locally it still wont reproduce the issue we saw on prod.
Fuck this6 -
I had been banging my head on an issue for 2 days. The solution?
Replaced
“window.addEventListener(“message”, callback)”
with
“window.onmessage = callback”
What. The. Actual. Fuck??!!
Aren’t they supposed to be the same thing?? It’s written on MDN’s article that the latter is an alternative way of doing the former.
What the fuck then? I am actually really pissed right now. Ragefully pissed.11 -
Let me guess, using regexes in the mousemove event handler isn't a great idea.
How fast are simple regexes, anyway?
I have /^(\d+)(.*)$/, because I want to animate a css property that might have some unit.15 -
Easily Hackathon,
About 2.5 days so 60 hours ish. Not worth, didn't win and company gets free code plus was a charity code for good event so rather they got charity brownie points and I'm sure they couldn't care less about charities. They were a bank. Complete waste honestly, food wasn't even good and was cold. -
When everyone on YouTube has interfaces that definitely do NOT appear to you :/
I was supposed to create my pixel, give it a cute lil name and then test events ( Facebook ).
But NOOO ofc I would get a ton of issues in the process, everyone is able to connect their pixels safely but it took Facebook more than what, 4 days now ? To kindly inform me that:
Server external ID not matching to pixel external ID
You're sending the external_ID parameter for your PageView event from your server, but you're not sending the external_ID parameter for this event from your pixel. If you send external_ID for an event from your server, you must send it from your pixel as well in order for that event to be valid.
How am I even supposed to know how to fix that ! I just started learning programming, the only thing I know how to do is use Linux and write a ciao mundo C program. Now my store was supposed to be launched a week ago and I am still looking for solutions to this. Ugh.7 -
Can we take a moment to recognize how absolutely retarded JS' event system is?
Events aren't objects. No, they're managed by an object, and identified by a string.
To subscribe to an event, you call object.addEventListener(name, callback). Because for some reason we can't just have an event object. Events MUST have an owner.
But to unsubscribe you don't call the function addEventListener returned, you don't use the token it returned either. No, you pass the same function to removeEventListener.
Because we don't use serializable tokens like in PP, and we don't return functions like in FP, no, we use functions as tokens, realising idiomatic DFP.2 -
What to do when someone creates anger in me?
How do you guys deal?
I'm in college. Will it be useful in life later if I learn to swallow my anger? or Do I need to develop some mindset so I can't be affected by whatever anybody says to me or insults me.
One of my teachers scolded me in the examination hall because he didn't like my clothes. There were no rules regarding uniforms. I was not wearing revealing or torn clothes, just normal clothes.
I hate it when such things happen. It disturbs me. Even when the whole event is over, the whole thing plays in my mind again and again, sometimes for days.8 -
I've been working with Node and Typescript for a while now, and I wrote a wide array of very general utility functions. Examples include:
- Array.filter but you also get the residue array, it can also leave holes in both arrays if you want to join them later
- Array zipping and unzipping to and from tuples (especially valuable when you're manipulating the prop set with Object.entries() in a HOC
- Array maximum selection, with an optional mapper
- Cancelable promises, lazy promises, a promise that resolves when a given function on an object is called (excellent for DOM events), a timeout promise.
- A typed event with both immediate and microtask listeners depending on whether you need state guarantees (this idea I took from a Github gist and upgraded it)
I want to put them on NPM so I don't have to write them and their tests again, and so that if I ever think of an improvement it's easier to propagate it. Do you think I should release them as tiny individual packages which would be nice from a versioning standpoint, or should I make them into a compilation which would be a lot less work for me (and therefore would probably result in better documentation and more tests)?4 -
My TL has his custom rules to format code, we use python and black as formatter, still, We have to remember his rules. He forced us to mention type rather than compiler do it for us. Our pr will not be approved until we do this.
My point is if you want to follow this then forced it programmatic way, event better use a language which gives this all by default. why we should remember all of these rules. Other team members are also doing the same and I hate those pr comments like there should be two empty lines or the type is missing. He never listens to any of us and takes it on his ego.2 -
!tech
i was feeling very disturbed thinking about this thing, so just wanna share here. trigger warning : this is about 2 recent news (1 national and1 international) about crimes against women and its affect on me, a male , somewhat privileged guy with rarely any women in life.
news 1 : some lady in iran getting killed by police due to religious laws . news 2 : a receptionist girl in india getting killed for not providing sexual services to hotel people .
i will come back to first news in a bit, but second news has shaken me to the very core. i saw a post where her dead corpse was being taken up by her acquitances and she is just ... lifeless, hands going sideways, face hung at one side, mouth open... damn :'(
read more here : https://indiatoday.in/india/story/...
i am not at all related to this news, but somehow, i as a guy feel disgusted and being responsible for this sad event. this is not an act of power or lust , this is an act of a horrible mentality.
i come from the city where the world's most number of hate crime and crime against women take place. and pathetic politicians and people of power blame it on women's dressing and mens "naive nature" and , "boys being boys, accidentally making mistakes" . little did anyone know that this mentality has been cooking in the streets for last so many years.
i am a single child with no siblings or grandparents, my relatives rarely visit me and my last 24 years on earth rarely involved any female companionship apart from my mom.
i like girls, i find them cute. i really want to be with someone, to have a consensus relationship. but the talks among my homie groups and other male friends have gone toxic to the level that a national issue syarted feeling relatable.
the feeling of getting affection from someone has somehow turned into a lust, a "game", a "service". one guy( who recently shifted to other state) would use to tell us how he would visit " red light areas" , another one(also left) once tried to ask for that "service" in a camp where we were staying during a trip, and used to tell how he would hook up with girls on Instagram.
we used to laugh at those things, find them interesting and enjoyable. i would think about them in deep, thinking that this is something possible, a transactional access to sex, with me now earning enough to afford it.
now, seeing this news i feel so shitty and being a horrible human. those thoughts were not originally mine, but i didn't opposed them. rather i laughed on it , and thought that once am even more powerful financially and politically, could even entertain that approach.
As a guy, i want to say i am deeply, terribly sorry.
This mentality needs to be changed. my homie group is not just the only group of males that has such vile thoughts having openly propagated. every park, every company meeting , every library, every gym, anywhere i go, i can just show up a coffee cup and shout "women,huh" and can get a laughter followed by several low voices whospers on which girl is a "s***" there .
there are multiple points of failure in our society that are causing these. the news 1 from the start of this rant is the very first : role of government and religion on controlling "dresses and behaviour" of women
another comes the role of sex, culture and gender education in institution. institutions in my areas are so fucked up: they teach how plants fuck and bees suck honey to a puberty hit student, but doesn't teach consent, relations and personal behavior at any age. my school would even try to sometimes make all girls sit in a seperate row and other times would force guys to sit with girls. don't know what they got for this authoritative behaviour, but that sure didn't impacted our brains very rightly.
lastly this needs to be made clear in evevry guy's mind that paid prostitution, forced prostitution and consensus relationship are 3 different things, and only a respectable , consensus relationship is something you should think about and prepare for.14 -
Are you a specialist or a generalist? I would call my self a generalist however I want to start specializing in server-less event driven architectures, we use that alot at work and it’s really a broad field by itself. I think it’s the future and would like to devote my full attention to it14
-
Today on fucked up Javascript stuff: Call stacks whose bottom isn't an entry point or event handler2
-
"Longest you worked without rest + why?"
Maybe around 7hrs or so? It may not be much, but the thing is that I had to work almost the whole night through.
I was about to show off a game at the school festival, and I had to finish multiple playable stages while not having a dedicated stage editor application; I was using Notepad as the stage builder. I had to work through the night before the event.
Ended up catching the flu after the event, but I don't regret it.1 -
Question.. architecting a large system. I’ve broken it down to microservices for the DB and rest API / gateway
I want there to be some some processes that run continuously not event driven via rest. Say analytics for example what is the best way todo that? Just another service running on on a server? And said service has its own API? That when the other rest APIs are called could then hop and call the new service?
Or say we had a PDF upload via rest should that service then do the parsing before uploading to DB .. or should the rest api that does the uploading then call another rest api to another service dedicated todo the parsing and uploading to the db?
I think the bigger way to explain the question is the encapsulation between DAL.. data access layer which I have existing.. but then there’s the BLL .. buisness logic layer which I don’t know if it should have its own APIs via own microservices running in the background.10 -
Someone tell me why you cant put headers in server side event listeners. I had to use "polyfills" just to put authorization headers. I really dont get why they made such an oversight.3
-
Two years ago we took over this project which has been a nightmare to maintain. It's a set of netcore 2.1 webapps running on an on-prem windows machine. Everyone who has worked on it so far has quit, leading to two episodes of it being passed on with near zero handover.
Its function is fairly simple, so naturally we have been nagging to redo it and cloudlift it.
I was finally given one week to see how far I'd get, and had a poc running in Azure after one day; 4 apps in clean net6, SSO, and managed identities. The only thing lacking was setting up the authentication for third parties.
And... they still don't want "something new" when the old one works. Back to IIS and debugging windows event logs.1 -
Fun Fact: It's physically impossible to run a .bat script on a remote Windows machine as admin from a Visual Studio post-build event.6
-
Can you give me some tips on how to debug a massive app? (Android app running on android studio which is basically intellij idea).
For example I need to fix a bug where a certain action results in unexpected behaviour.
But oh my god the codebase is so large (mainly architecture is MVVM and rxjava) that searching for the specific place is like searching for a needle in haystack.
For example I added a breakpoint in few places, but I can see only like 4 or 5 last frames in the stack that led to the current action, last frame is a lambda which doesnt help me so frankly Im unable to even track where current event started. I am loosing my mind. I cant even find where the buttonclick action started because everything is reactive and done with observables which can be anywhere.
Any tips on debugging will be appreciated7 -
Tomorrow is a day off for the whole company
> Happy
I'm the only member of my department and there is a lot of work
> Stressed
Company event is coming up in mid-September
> Excited
The first day of activities is 1.5 hours away from home and it starts at 9am
> Annoyed
That sums up the end of my week. -
So the next Flutter event is on December 4th which means Flutter 1.0 is around the corner. Flutter is amazing with a very neat idea it has ReactJS like state management and everything is a Widget even the app itself. So i was thinking what else could we expect? React Native has Flutter, but what about React JS? I think Google might introduce a Competitor for ReactJS something like Flutter Web or FlutterJS which can work on parallel/similar to Flutter but for the web of course, and also maybe give some news on the Fuchsia. What do you think? :)5
-
I feel like being expected to handcode a user interface by supposed progressives is the most ass backwards idiotic tech decision with long and wide ranging consequences anyone ever farted out of the asshole god bored into their ugly faces!
Why the hell would I want to use web when I could use windows forms ?
Why is there no equivalent to the visual designer that's usuable ?
I mean I get it for more customized things
But why would I want to fuck with css when instead I could do about the same thing and store them in a settings file and point and click on a series of dropdowns and see the results as I create them ?
Why would I want to fuck around with an interface a resize destroys ?
Why would I want to mess with html tagging or tk or tcl containers when I could just drag an item into a window and update it's properties and add some fucking event handlers the stubs of which are automatically generated by a single DoubleClick??!!??
I hate it
It's slow
I want my fucking ui to be done quickly !
Am I just missing some vital tool that costs 5 grand ?16 -
So basically I joined this new android dev job 3 months ago. I did android dev for 2.5 years and then had a gap of 1.5 years where I did game development so Im comming back into android dev as "junior" however Im tryharding to prove myself and reach mid level as fast as I can.
I had it planned like this from the beginning: original plan was to do really good during probation period so I could ask for a raise (which I did). Now while Im waiting for answer (which will take 2-3 weeks) I need to keep the show going so I am sacrificing evenings to accomplish goals. I ham going to these teambuildings, I am volunteering in this job fair event and Im joining bars with the not-so-social devs 1-2 times a week just to "fit in" and be noticed. After getting a raise I plan to take it down a notch and somehow relax....
During the usual work week I rely on stimulants (coffee/cigarettes/concerta) to get me through the days and then I use xanax or alcohol to relax. Worst part is that I am totally drained exhausted after long working week. I dont want to go out with my girlfriend. My libido is at its lowest and we do it maybe max 2 times a week and it feels like a chore to me. It feels like I exist only for this job and only to please everyone around me and it drains me out completely.
I feel like I am burned out. I wish I could just quit this job and run away somwhere warm for 6 months to chill alone and take it easy and recover but I cant. Im stuck in a trap. I have to pay off mortgage, I have to pay off bills. I am approaching 30's soon and I became fat and balding, I want to loose weight, I wanna get a hair transplant to at least enjoy my 30's properly. Im only 28 but I already have a lot of grey hair just because of immense ammounts of stress I have to deal daily because of my ADHD and anxiety. Also my gf is kinda dissapointed that I havent proposed her in 3 years of our relationship. I feel so much pressure and obligations to the point where I feel that theres no point in living if I just exist for the needs of others. I cant imagine getting married and having a child now - life is already complicated chaotic mess as it is.
I dont't know why I throw myself 150% at projects and hyperfocus so much to the point where it becomes my priority in life? Am I compensating for my lack of executive functions by throwing lots of effort and care in hopes that I will be validated? How to learn to take it easy instead of always thinking that what Im doing is not enough?
It's not even the problem of this job. Its just me. I had my own company for 2 years and I was dealing with same burnout problems...3 -
In most businesses, self-proclaimed full-stack teams are usually more back-end leaning as historically the need to use JS more extensively has imposed itself on back-end-only teams (that used to handle some basic HTML/CSS/JS/bootstrap on the side). This is something I witnessed over the years in 4 projects.
Back-end developers looking for a good JS framework will inevitably land on the triad of Vue, React and Angular, elegant solutions for SPA's. These frameworks are way more permissive than traditional back-end MVC frameworks (Dotnet core, Symfony, Spring boot), meaning it is easy to get something that looks like it's working even when it is not "right" (=idiomatic, unit-testable, maintainable).
They then use components as if they were simple HTML elements injecting the initial state via attributes (props), skip event handling and immediately add state store libraries (Vuex, Redux). They aren't aware that updating a single prop in an object with 1000 keys passed as prop will be nefarious for rendering performance. They also read something about SSR and immediately add Next.js or Nuxt.js, a custom Node express.js proxy and npm install a ton of "ecosystem" modules like webpack loaders that will become abandonware in a year.
After 6 months you get: 3 basic forms with a few fields, regressions, 2MB of JS, missing basic a11y, unmaintainable translation files & business logic scattered across components, an "outdated" stack that logs 20 deprecation notices on npm install, a component library that is hard to unit-test, validate and update, completely vendor-& version locked in and hundreds of thousands of wasted dollars.
I empathize with the back-end devs: JS frameworks should not brand themselves as "simple" or "one-size-fits-all" solutions. They should not treat their audience as if it were fully aware and able to use concepts of composition, immutability, and custom "hooks" paired with the quirks of JS, and especially WHEN they are a good fit. -
Product Manager: Is there an event in the staging environment that we can use for testing orders?
Stakeholder: [Out of his comfort zone because he’s taking over tasks that used to belong to his assistant and he doesn’t have a new assistant yet.]There’s an event for 6/9/2022 that still has tickets available.
[Today is 8/24/2022.]
PM: You do realize that the website doesn’t allow users to buy tickets for events that are in the past?14 -
Typescript is my new favorite and my grudge is the stupid scoping of type assertions. I have an async function that checks whether a variable is set and awaits a change event if it's undefined. This function is working javascript but invalid according to typescript, because it relies on the exact type changing while the function is running. I had to convert it to a mess of promises to bypass this because (and this is the best) the callback-based syntax of identical meaning will reset all type assertions, even locals that are never written after the callback's creation.8
-
Our lead frontend dev insists on using <select> as a dropdown for a language switcher in the navbar of a website and then make the page redirect to the localized url using the onChange event with JS.
Am I wrong thinking that's just really, really dumb, or am I just dumb?3 -
A year ago I built my first todo, not from a tutorial, but using basic libraries and nw.js, and doing basic dom manipulations.
It had drag n drop, icons, and basic saving and loading. And I was satisfied.
Since then I've been working odd jobs.
And today I've decided to stretch out a bit, and build a basic airtable clone, because I think I can.
And also because I hate anything without an offline option.
First thing I realized was I wasn't about to duplicate all the features of a spreadsheet from scratch. I'd need a base to work from.
I spent about an hour looking.
Core features needed would be trivial serialization or saving/loading.
Proper event support for when a cell, row, or column changed, or was selected. Necessary for triggering validation and serialization/saving.
Custom column types.
Embedding html in cells.
Reorderable columns
Optional but nice to have:
Changeable column width and row height.
Drag and drop on rows and columns.
Right click menu support out of the box.
After that hour I had a few I wanted to test.
And started looking at frameworks to support the SPA aspects.
Both mithril and riot have minimal router support. But theres also a ton of other leightweight frameworks and libraries worthy of prototyping in, solid, marko, svelte, etc.
I didn't want to futz with lots of overhead, babeling/gulping/grunting/webpacking or any complex configuration-over-convention.
Didn't care for dom vs shadow dom. Its a prototype not a startup.
And I didn't care to do it the "right way". Learning curve here was antithesis to experimenting. I was trying to get away from plugin, configuration-over-convention, astronaut architecture, monolithic frameworks, the works.
Could I import the library without five dozen dependancies and learning four different tools before getting to hello world?
"But if you know IJK then its quick to get started!", except I don't, so it won't. I didn't want that.
Could I get cheap component-oriented designs?
Was I managing complex state embedded in a monolith that took over the entire layout and conventions of my code, like the world balanced on the back of a turtle?
Did it obscure the dom and state, and the standard way of doing things or *compliment* those?
As for validation, theres a number of vanilla libraries, one of which treats validation similar to unit testing, which seems kinda novel.
For presentation and backend I could do NW.JS, which would remove some of the complications, by putting everything in one script. Or if I wanted to make it a web backend, and avoid writing it in something that ran like a potato strapped to a nuclear rocket (visual studio), I could skip TS and go with python and quart, an async variation of flask.
This has the advantage that using something thats *not* JS, namely python, for interacting with a proper database, and would allow self-hosting or putting it online so people can share data and access in real time with others.
And because I'm horrible, and do things the wrong way for convenience, I could use tailwind.
Because it pisses people off.
How easy (or hard) would it be to recreate a basic functional clone of the core of airtable?
I don't know, but I have feeling I'm going to find out!1 -
tips on how to retain something in memory for a long time? especially if it is something difficult , unpleasant and rarely occurring event like usage of differential calculus or dsa/ leetcode questions ?6
-
When your course's interactive code breaks the course runtime environment because of synthetic events and they are still using React < v16
Jesus, this one is a real headscratcher, amazing I never ran into this until today:
https://reactjs.org/docs/... -
Dear future me,
Please avenge us. Ruin the lives and reputation of specific individuals of the university professors and assistants that have ruined my life. Damage they had done is fatal and irreversible. Consequences for their actions are mandatory. For our own sanity, I am looking forward to seeking vengeance that will only ruin their careers, and from there let the karma finish them off.
Life is unfair, but why is it unfair to good people? I'll be the batman and balance this unfairness to make the other side of individuals experience it, too.
If i caught a virus and was unable to study for exam and failed because of that and you say life is unfair, you are inhumane.
If my mother got diagnosed with cancer and i was unable to study for exam and failed because of that and you say life is unfair, you are inhumane.
If my dad experienced a stroke and i had to be with him to make sure he's fine and unable to study for exam and failed because of that and you say life is unfair, you are inhumane.
If police knocked on my door and said my whole family just died in a car crash and i am unable to study out of depression and failed the exam because of that and you say life is unfair, you are inhumane.
You are inhumane because you have a choice to show that you as a human have compassion and understanding in tragic life situations and therefore work something out regarding exam, instead of making that student fail and walking over corposes like a cruel emotionless devil.
But they wont. They wont show it because they're inhumane. They're working for the matrix and not for the people. All of the professors and assistants.
I truly hope, and wish to create a curse, for all professors and assistants in all universities, for some tragic life event to happen to them and their family members with a death outcome, so I can also tell them life is unfair.
In fact, I'll step it up a level by enforcing "life is unfair" policy onto them by anonymously, slowly, ruining their careers from the shadow. Internet is a wild place that can ruin someones life. They have pushed me off the edge of my morality. They have turned me into Joker.
I mentioned earlier that I'll let karma take care of them, but what if I am, their karma? They have created a Joker. They wanted this war. These robots we call "professors and assistants" would rather die for the matrix than show human compassion.
What i plan to do to them might be illegal; but so is illegal to be inhuman fascists. Therefore like a batman, I will fight crime with crime. I cannot let them turn me into a Joker, because the Joker ruins lives of the good people, too. Batman ruins lives of the bad people only.
Their careers will be ruined, their life will be falling apart, they will continue to live but this time in a special kind of pain, the same pain they have caused to me, just so they can maybe understand how does it feel when you're hopeless and being told "lifes unfair".
It is.
Sincerely,
Me from the past, good luck1 -
I watched a movie and i forgot its name i hope if you can help find the name, the story is about a generation where a crime truth is revealed through brain, they fetch the latest event you have encountered which you have seen it's like a stored video inside the brain, the very last crime she committed was revealed from the eyes of a rat which she forgot to kill and she was caught, i believe it was a swedish or danmark movie which i watched on Netflix long time ago... anyone?9
-
Trying to make a nodejs backend is pure hell. It doesn't contain much builtin functionality in the first place and so you are forced to get a sea of smaller packages to make something that should be already baked in to happen. Momentjs and dayjs has thought nodejs devs nothing about the fact node runtime must not be as restrained as a browser js runtime. Now we are getting temporal api in browser js runtime and hopefully we can finally handle timezone hell without going insane. But this highlights the issue with node. Why wait for it to be included in js standard to finally be a thing. develop it beforehand. why are you beholden to Ecma standard. They write standards for web browser not node backend for god sake.
Also, authentication shouldn't be that complicated. I shouldn't be forced to create my own auth. In laravel scaffolding is already there and is asking you to get it going. In nodejs you have to get jwt working. I understand that you can get such scaffolding online with git clone but why? why express doesn't provide buildtin functions for authentication? Why for gods sake, you "npm install bcrypt"? I have to hash my own password before hand. I mean, realistically speaking nodejs is builtin with cryptography libraries. Hashmap literally uses hashing. Why can't it be builtin. I supposed any API needed auth. Instead I have to sign and verfiy my token and create middlewares for the job of making sure routes are protected.
I like the concept of bidirectional communication of node and the ugly thing, it's not impressive. any goddamn programming language used for web dev should realistically sustain two-way communication. It just a question of scaling, but if you have a backend that leverages usockets you can never go wrong. Because it's written in c. Just keep server running and sending data packets and responding to them, and don't finalize request and clean up after you serve it just keep waiting for new event.
Anyway, I hope out of this confused mess we call nodejs backend comes clean solutions just like Laravel came to clean the mess that was PHP backend back then.
Express is overrated by the way, and mongodb feels like a really ludicrous idea. we now need graphql in goddamn backend because of mongodb and it's cousins of nosql databases.7 -
i always get sucked into this "cute code" hell whenever i am working with a b2c codebase, and especially with kotlin code.
here's a scenario:
task : build a debounce logic for an input view where each user input is currently triggerring an api call.
my steps
1. read what debouncing is.
2. see if any code is available on the internet
=> found a code piece on the internet with some level of abstraction ( basically a simple final class that implements the input event callback and encapsulates the debounce logic)
3) copy it, run it , it wokrs
------
for any sane coder, these steps are hardly 10-30 mins and they can move on with life. but its your truly that made this task into a 6hour research only to come up at similar solution. my curiosity led me to stupid places
1) why this class is final? what if someone else wanna use it but with a different behaviour? lets try open(non final class) .
2) why even use a class? it extends an interface, lets try to wrap the logic in interface itself (kotlin supports interfaces that don't require implementation)
3) umm , the interface works but it looks ugly, with all its global overridden variables. what about we make it extension?
4) yeah the extension approach is also not very good, lets go back to open class.
5) but extend is super nice to look! lets keep the extension and open class too
6) can we optimise the implementation? why it uses an additional handler? what if we provided everything in constructor? how about builder pattern?
FUCK MY BRAIN! there are so much fucking options that i forgot that i spent 4 hours on this small thing
the simplest approach would have been tk just shove all the listeners and everything in activity and forget about it :/
senior devs on this platform, how do you stop yourself from adding every concept that you know into the smallest possible task?6 -
I can't google jargon, what do you call it when you "flip" a function call, such that the call becomes an event in some dispatch system and return becomes a call on the event? I had to implement five such APIs this week with surface level differences and I'm starting to feel like it has to have a name if it's this popular.
For the pedantic, I mean async calls in JS in particular, I know you can't just invert a synchronous function call that uses a stack without peek.6 -
WTF I just found out I have to add slides to the slide deck for Friday’s department meeting. Event has been on the books for a month and they send a “reminder” email that’s actually a first notice for me. Well not my problem because I have PTO scheduled already. My manager is going to present on my behalf.
-
I have to use SQL event to check if in the "plots" has specific building, and update the gold/iron/stone... by the specific amount that building produces. This is how the Gold mine creates slowly gold. I am not sure this is OK like this, please I need advice.1
-
(No punchlines just a rant sorry, very angry at this person. Can't leave the club. Talked to seniors about it. Talked to coworkers for some voluntary help. No help here ;-;)
Yesterday: we need to have a meet to plan things out. 3 PM?
Rainbow eating monster: Yes
Yesterday 5 PM: Reminder
Rainbow shitting monster: I can't I have important things
Yesterday 5:01 PM: Children eating monster (in group): hey yall watching the event going on rn
Yesterday 5:02 PM: is this what you're busy with?
Rabbit pooping monster: this of course I can't miss. And anyways I have 5 more things to do: thing that I've already done, this club meet that you asked me to do yesterday and I said I'd have done, a meet with a friend, I'm having lunch now, and a meet with you. Hence I can't meet with you.
...
Today (in group): Kidney stealing monster: @me (irrelevant to discussion) can you meet for other thing that *I* was supposed to do a week ago?
Will you be available @me at 5 PM?
Okay everyone, assuming @me is available, tentatively we meet at 5 PM.
Today 12 PM: i wake up to this faeces3 -
Dev goals: building and deploying four apps (kotlin, flutter, unity) ; getting better at tdd; deeper understanding of core compsci principals ; mentorship; teaching; reading through at least one software practices book a month ; attending at least one local tech event monthly ;and prepping for finally getting out and speaking at conferences in 2021.
-
So the flutter keynote was yesterday, amazing stuff were demoed and amazing stuff were announced, one of them was my speculations which I did in this rant:
https://devrant.com/rants/1883654/...
And that's the Flutter for Web! also known as Hummingbird, I think this is the new era of cross-platform developing! :D1 -
[typescript] Should I use a promise to represent an event that can occur at most once, may never occur but can never fail? If not, what else should I use? Callbacks?5
-
#Suphle Rant 6: Deptrac, phparkitect
This entry isn't necessarily a rant but a tale of victory. I'm no more as sad as I used to be. I don't work as hard as I used to, so lesser challenges to frustrate my life. On top of that, I'm not bitter about the pace of progress. I'm at a state of contentment regarding Suphle's release
An opportunity to gain publicity presented itself last month when cfp for a php event was announced last month. I submitted and reviewed a post introducing suphle to the community. In the post, I assured readers that I won't be changing anything soon ie the apis are cast in stone. Then php 7.4 officially "went out of circulation". It hit me that even though the code supports php 8 on paper, it's kind of a red herring that decorators don't use php 8 attributes. So I doubled down, suspending documentation.
The container won't support union and intersection types cuz I dislike the ambiguity. Enums can't be hydrated. So I refactored implementation and usages of decorators from interfaces to native attributes. Tried automating typing for all class properties but psalm is using docblocks instead of native typing. So I disabled it and am doing it by hand whenever something takes me to an unfixed class (difficulty: 1). But the good news is, we are php 8 compliant as anybody can ask for!
I decided to ride that wave and implement other things that have been bothering me:
1) 2 commands for automating project setup for collaborators and user facing developers (CHECK)
2) transferring some operations from runtime to compile/build TIME (CHECK)
3) re-attempt implementing container scopes
I tried automating Deptrac usage ie adding the newly created module to the list of regulated architectural layers but their config is in yaml, so I moved to phparkitect which uses php to set the rules. I still can't find a library for programmatically updating php filed/classes but this is more dynamic for me than yaml. I set out to implement their library, turns out the entire logic is dumped into the command class, so I can neither control it without the cli or automate tests to it. I take the command apart, connect it to suphle and run. Guess what, it detects class parents as violations to the rule. Wtflyingfuck?!
As if that's not bad enough, roadrunner (that old biatch!) server setup doesn't fail if an initialization script fails. If initialization script is moved to the application code itself, server setup crumbles and takes the your initialization stuff down with it. I ping the maintainer, rustacian (god bless his soul), who informs me point blank that what I'm trying to do is not possible. Fuck it. I have to write a wrapper command for sequentially starting the server (or not starting if initialization operations don't all succeed).
Legitimate case to reinvent the wheel. I restored my deleted decorators that did dependency sanitation for me at runtime. The remaining piece of the puzzle was a recursive film iterator to feed the decorators. I checked my file system reader for clues on how to implement one and boom! The one I'd written for two other features was compatible. All I had to do was refactor decorators into dependency rules, give them fancy interfaces for customising and filtering what classes each rule should actually evaluate. In a night's work (if you're discrediting how long writing the original sanitization decorators and directory iterator), I coupled the Deptrac/phparkitect library of my dreams. This is one of the those few times I feel like a supreme deity
Hope I can eat better and get some sleep. This meme is me after getting bounced by those three library rejections