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 - "column"
-
Each month my department compiles a 4M row 150 column data table for compliance with a federal agency. Before submitting, we check it against about 400 rules.
The existing system was simply 400 queries that ran in sequence, table-scanning 4M rows each time, taking upwards of 6 hours, which is a huge bottleneck, especially if you have to make changes and rerun. Plus the output was rather one-dimensional.
I built a proper normalized database and created a sort of rules engine, running all 400 rules in one table scan. Not only does it complete in 30 minutes, but the reports generate automatically, and the results can be filtered on several dimensions to aid with root-cause analysis.
Management was pleased.4 -
I am an indie game developer and I lead a team of 5 trusted individuals. After our latest release, we bought a larger office and decided to expand our team so that we could implement more features in our games and release it in a desirable time period. So I asked everyone to look for individuals that they would like to hire for their respective departments. When the whole list was prepared, I sent out a bunch of job offers for a "training trial period". The idea was that everyone would teach the newbies in their department about how we do stuff and then after a month select those who seem to be the best. Our original team was
-Two coders
-One sound guy(because musician is too mainstream)
-Two artists
I did coding, concept art(and character drawings) and story design, So, I decided to be a "coding mentor"(?).
We planned to recruit
-Two coders
-One sound guy
-One artist (two if we encountered a great artstyle)
When the day finally arrived I decided to hide the fact that I am the founder and decided that there would be a phantom boss so that they wouldn't get stressed or try flattery.
So out of 7, 5 people people came for the "coding trial session". There were 3 guys and 2 girls. My teammate and I started by giving them a brief introduction to the working of our engine and then gave them a few exercises to help them understand it better. Fast forward a few days, and we were teaching them about how we implement multiple languages in our games using Excel. The original text in English is written in the first column and we then send it to translators so that they can easily compare and translate the content side by side such that a column is reserved for each language. We then break it down and convert the whole thing into an engine friendly CSV kind of format. When we concluded, we asked them if they had any questions. So there was this smartass, who could not get over the fact that we were using Excel. The conversation went like this:(almost word to word)
Smartass: "Why would you even use that primitive software? How stupid is that? Why don't you get some skills before teaching us about your shit logic?"
Me:*triggered* "Oh yeah? Well that's how we do stuff here. If you don't like it, you can simply leave."
Smartass: "You don't know who I am, do you? I am friends with the boss of this company. If I wanted I could have all of you fired at whim."
Me:"Oh, is that right?"
Smartass:"Damn right it is. Now that you know who I am, you better treat me with some respect."
Me: "What if I told you that I am not just a coder?"
Smartass:"Considering your lack of skills, I assume that you are also a janitor? What was he thinking? Hiring people like you, he must have been desperate."
Me:"What if I told you that I am the boss?"
Smartass:"Hah! You wish you were."*looks towards my teammate while pointing a thumb at me* "Calling himself the boss, who does he think he is?"
Teammate:*looks away*.
Smartass:*glances back and forth between me and my teammate while looking confused* *realizes* *starts sweating profusely* *looks at me with horror*
Me:"Ha ha ha hah, get out"
Smartass:*stands dumbfounded*
Me:"I said, get out"
Smartass:*gathers his stuff and leaves the room*
Me: "Alright, any questions?"*Smiling angrily*
Newcomers: *shake heads furiously*
Me:"Good"
For the rest of the day nobody tried to bother me. I decided to stop posing as an employee and teaching the newcomers so that I could secretly observe all sessions that took place from now on for events like these. That guy never came back. The good news however, is that the art and music training was going pretty well.
What really intrigues me though is that why do I keep getting caught with these annoying people? It's like I am working in customer support or something.16 -
So my school got invited to this coding competition for high-schoolers and among them, I was a part member and part mentor along side our CS professor since I was the most proficient coding stuff (although most of I do were JS and Python stuff although i can read other code)
Then this guy showed up.
He was picked by the faculty to take the WebDev competition. He knows how to use Photoshop for Photo retouchings and stuff but here's a problem.
He can't code nor make a proper website design.
So being the kind person I am, I volunteered to teach him what I know about frontend and HTML. This goes on for 4 weeks of nonstop practices, coding sessions and finally, Code In The Dark-style practice (which involves the person to code a full website for only 15 minutes).
When he was able to finish and mastered some of what I taught. I gave him the go signal and we were on to the road to victory.
Unfortunately our first try, we won nothing.
He said after the competition "I give up man, I can't take this!" but I said, "Just because you lost a f*cking competition once, doesn't mean you're a motherf*cking loser in life. There's still one more chance."
So I pressured our WebDev guy to be more better, taught him about mockups, JavaScript and etc.
Then the second attempt a year later, me and the WebDev guy won and moved on the finals. However, he didn't win the finals and I was the lone champion reprsenting our school.
Although he didn't win, he was happy I carried the torch and win the prize.
Prior to that, he asked me "Hey, how to be like you?"
I only answered, "Achievements are just gold with cloth and paper. Wear it lightly".
Fast forward to today, he's now the school's head design coordinator and layout designer for their newspaper column. He also practices his coding skills by frequenting on our coding sessions even when the competition was over.
But whenever someone asks "who taught you this?" he would only look to me, smile and say "that person right there".7 -
So my manager (a 29 y/o, who hardly can use a mac) walks towards me with a hint of panic in his eyes.
Manager: Hey commander keen, do you know how to use vertical look up in excel, I've tried, and looked at tutorials.
Me: yeah I really don't know excel (and not willing to learn, especially on the fly), I don't even have excel installed, I can write I script that does what you want.
Manager: No you have enough on your plate
3 hours later
Manager: hey I still can't figure it out, could you solve it with a script, won't that take to long
Me: no send me the files, Ill do it with a script.
I start writing 2 for loops and wait for the file, 10 ish minutes later its basicly done, just need to put in the column indexes.
I send a message on both slack channels (hey are you going to email or slack me the file)
After a hour I walk to his desk and again ask him for the file.
Manager a good 2 hours later on slack: Hey I just send you the file, I hope its not to much work, it has to happen asap.
So if you have kids, and they are not that bright by some kind of birth defect, don't worry, they can always become a manager.
But you can't get me down today. I hit 2000 upvotes and the employer is unknowingly a proud sponsor for reading and writing all these rants and comments :-) thnx devrant8 -
FINALLY
GODDAMNED
FIXED
I'VE SPENT OVER A GODDAMN WEEK SWIMMING THROUGH DEMON EXCREMENT WITH A MAGNIFYING GLASS TRYING TO FIND THE SOURCE OF THIS SHIT.
I FINALLY FOUND IT. IN A FUCKING. CONDITIONAL. OVERLOAD. OF A MODEL GETTER.
THAT ABSOLUTE NONSENSE RETURNS EITHER THE REQUESTED COLUMN FROM THE DATABASE, OR AN ENTIRELY FUCKING DIFFERENT COLUMN, ALL DEPENDING ON THE VALUE OF A THIRD FUCKING COLUMN.
HKJSDFASKFJ
TO MAKE MATTERS WORSE.
THE VALUE IT RETURNS. IS COMPLETELY WRONG. FOR ALMOST. EVERY. FUCKING. CASE.
BECAUSE THAT FIRST COLUMN? IT NEVER GETS UPDATED. EVER.
AND THIS DEALS WITH ACCOUNTING AND REAL GODDAMN MONEY.
AARRGHHHHH
WHAT THE HELL WERE YOU THINKING?!28 -
toxic workplace; leaving
I haven't wanted to write this rant. I haven't even wanted to talk to anyone (save my gf, ofc). I've just been silently fuming.
I wrote a much longer rant going into far too much detail, but none of that is relevant, so I deleted it and wrote this shorter (believe it or not) version instead. And then added in more details because details.
------
On Tuesday, as every Tuesday, I had a conference call with the rest of the company. For various, mostly stupid reasons, the boss yelled at and insulted me for twenty minutes straight in front of everyone, telling me how i'm disorganized, forgetful, how can't manage my time, can't manage myself let alone others, how I don't have my priorities straight, etc. He told the sales team to get off the call, and then proceeded to yell and chew at me for another twenty minutes in front of the frontend contractor about basically the same things. The call was 53 minutes, and he spent 40 minutes of it telling me how terrible I've been. No exaggeration, no spin. The issues? I didn't respond to an email (it got lost in my ever-filling inbox), and I didn't push a very minor update last week (untested and straight to prod, ofc). (Side note: he's yelled at me for ~15 minutes before for being horribly disorganized and unable to keep up on Trello -- because I had a single card in the wrong column. One card, out of 60+ over two boards. Never mind that most have time estimates, project tags, details, linked to cards on his boards, columns for project/qa/released, labels for deferred, released to / rejected from qa, finished, in production, are ordered by priority, .... Yep. I'm totes disorganized.)
Anyway, I spent most of conference call writing "Go fuck yourself," "Choke on a cat and die asshole," "Shit code, low pay, and broken promises. what a prize position," etc. or flipping him off under the camera on our conference-turn-video-call (switched due to connection issues, because ofc video is more stable than audio-only in his mind).
I'm just.
so, so done.
I did nothing the rest of the day on Tuesday, and basically just played games on Wednesday. I did one small ticket -- a cert replacement since that was to expire the next day -- but the rest was just playing CrossCode. (fun game, fyi; totally recommend.)
Today? It's 3:30pm and I can't be bothered to do anything. I have an "urgent" project to finish by Monday, literally "to give [random third party sales guy] a small win". Total actual wording. I was to drop all other tasks (even the expiring cert lol) and give this guy his small win. fucking whatever. But the project deals with decent code -- it's a minor extension to the first project I did for the company (see my much earlier rants), back when I was actually applying myself and learning something (everything) new, enjoying myself, and architecting+writing my own code. So I might actually do the project, but It's been two days and I haven't even opened single file yet.
But yeah. This place is total and complete shit. Dealing with the asshole reminds me of dealing with my parents while growing up, and that's a subject I don't want to broach -- far too many toxic memories.
So, I'm quitting as soon as I find something new.
and with luck, this will be before assface hires my replacement-to-be, and who will hopefully quit as soon as s/he sees the abysmal codebase. With even more luck, the asshole king himself will get to watch his company die due to horrible mismanagement. (though ofc he'll never attribute it to himself. whatever.)
I just never want to see or think about him again.
(nor this fetid landfill of a codebase. bleh.)
With luck, this will be one of my last rants about this toxic waste dump and its king of the pile.
Fourty fucking minutes, what the fuck.33 -
A customer once wanted a button to sort a table column by name (alphabetically).
We told him, he just needed to click the column once.
The response:
C:"I still want that button!"
Just why...?7 -
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 -
# Day 0:
Me: "Hey boss, I want to let you know that I need this kind of information from the customer for these features, otherwise I cannot finish the project's milestone in two weeks."
Boss: "OK, just continue as far as you can get. We have to get this finished."
Me: "Well, I cannot go any further for these tickets. I need that input. Shall we leave them in todo?"
Boss: "OK."
# Day 7:
Boss: "Whe didn't you start on these tickets in todo?
Me: "As I have told you, I need some information."
Boss: "We gotta get this out of the door!"
Me: "Yes, if we want to meet the deadline, we should. Yet I cannot guess the feature. Also, let me create a column: `to clarify` and move that ticket there. As I have said: I need that information. You have to contact the customer about it and get their feedback.
Boss: "OK."
# Day 13:
Boss: "Why isn't this project finished? There are still tickets open."
Me: "You never provided the information I asked you about."
Boss: "I want an explanation not an excuses."
Me o_O: "This is the explanation. I was asking you on multiple occasions about the required feedback. You never provided it. See the columns name? It's called `to clarify`. We created it last time together. That clarification never happened even though I told you that I need it. I cannot do magic. I can only implement features, and while I can sometimes make intelligent guesses to their use cases, I rather implement their actual ones than my fictional ones.
Boss: "You should have told me."
Me: ಠ_ಠ9 -
*looks at data in database*
This float column seems wierd. The fractional parts are never above .59
*reality sets in*
Wtf the previous devs encoded whole minutes as hundredths. 1.25 = 1h 25 minutes.
Fuck me...no wonder the numbers weren't adding up correctly.7 -
Today is deadline day. So my Project lead decided to remove a key column because "it wasn't necesary".
He didn't tell anyone about the change and no commit message explaining it.
When confronted by the whole Team about his stupidity. His excuse Was: "I didn't know we had a deadline".
Holy badger fucking horsecum guzzling excuse of a potheaded flat earther!!!3 -
Argh!
I just realized that I committed and ran a migration with a typo in a column name.
We now have a :last_polll_capture_at column. 😭
Time for a commit of shame...13 -
At the data restaurant:
Chef: Our freezer is broken and our pots and pans are rusty. We need to refactor our kitchen.
Manager: Bring me a detailed plan on why we need each equipment, what can we do with each, three price estimates for each item from different vendors, a business case for the technical activities required and an extremely detailed timeline. Oh, and do not stop doing your job while doing all this paperwork.
Chef: ...
Boss: ...
Some time later a customer gets to the restaurant.
Waiter: This VIP wants a burguer.
Boss: Go make the burger!
Chef: Our frying pan is rusty and we do not have most of the ingredients. I told you we need to refactor our kitchen. And that I cannot work while doing that mountain of paperwork you wanted!
Boss: Let's do it like this, fix the tech mumbo jumbo just enough to make this VIP's burguer. Then we can talk about the rest.
The chef then runs to the grocery store and back and prepares to make a health hazard hurried burguer with a rusty pan.
Waiter: We got six more clients waiting.
Boss: They are hungry! Stop whatever useless nonsense you were doing and cook their requests!
Cook: Stop cooking the order of the client who got here first?
Boss: The others are urgent!
Cook: This one had said so as well, but fine. What do they want?
Waiter: Two more burgers, a new kind of modern gaseous dessert, two whole chickens and an eleven seat sofa.
Chef: Why would they even ask for a sofa?!? We are a restaurant!
Boss: They don't care about your Linux techno bullshit! They just want their orders!
Cook: Their orders make no sense!
Boss: You know nothing about the client's needs!
Cook: ...
Boss: ...
That is how I feel every time I have to deal with a boss who can't tell a PostgreSQL database from a robots.txt file.
Or everytime someone assumes we have a pristine SQL table with every single column imaginable.
Or that a couple hundred terabytes of cold storage data must be scanned entirely in a fraction of a second on a shoestring budget.
Or that years of never stored historical data can be retrieved from the limbo.
Or when I'm told that refactoring has no ROI.
Fuck data stack cluelessness.
Fuck clients that lack of basic logical skills.5 -
how to make a feature request
1. dump Db table with 153 column to Excel
2. print!
3. circle column 47 on page 3, scribble feature description
4. scan! remember to use proprietary file format no one has
5. new e-mail, add "VERY URGENT!!!" to subject line
6. write "will call, discuss details monday"
6.a. attach proprietary-scanned-excel-dump-feature-description (optional)
7. postscript: deadline wednesday!!
8. wait for tuesday
9. send!
...3 -
I just almost shat myself.
I altered the wrong database table column...truncated data we are required to keep for government compliance.
Luckily I had exported that table earlier today and was able to recover it all. I'm in need of a very strong drink right about now.12 -
I wrote a database migration to add a column to a table and populated that column upon record creation.
But the code is so freaking convoluted that it took me four days of clawing my eyes out to manage this.
BUT IT'S FINALLY DONE.
FREAKING YAY.
Why so long, you ask? Just how convoluted could this possibly be? Follow my lead ~
There's an API to create a gift. (Possibly more; I have no bloody clue.)
I needed the mobile dev contractor to tell me which APIs he uses because there are lots of unused ones, and no reasoning to their naming, nor comments telling me what they do.
This API takes the supplied gift params, cherry-picks a few bits of useful data out (by passing both hashes by reference to several methods), replaces a couple of them with lookups / class instances (more pass-by-reference nonsense). After all of this, it logs the resulting (and very different) mess, and happily declares it the original supplied params. Utterly useless for basically everything, and so very wrong.
It then uses this data to call GiftSale#create, which returns an instance of GiftSale (that's actually a Gift; more on that soon).
GiftSale inherits from Gift, and redefines three of its methods.
GiftSale#create performs a lot of validations / data massaging, some by reference, some not. It uses `super` to call Gift#create which actually maps to the constructor Gift#initialize.
Gift#initialize calls Gift#pre_init (passing the data by reference again), which does nothing and returns null. But remember: GiftSale inherits from Gift, meaning GiftSale#pre_init supersedes Gift#pre_init, so that one is called instead. GiftSale#pre_init returns a Stripe charge object upon success, or a Gift (and a log entry containing '500 Internal') upon failure. But this is irrelevant because the return value is never actually used. Pass by reference, remember? I didn't.
We're now back at Gift#initialize, Rails finally creates a Gift object using the args modified [mostly] in-place by all of the above.
Another step back and we're at GiftSale#create again. This method returns either the shiny new Gift object or an error string (???), and the API logic branches on its type. For further confusion: not all of the method's returns are explicit, and those implicit return values are nested three levels deep. (In Ruby, a method will return the last executed line's return value automatically, allowing e.g. `def add(a,b); a+b; end`)
So, to summarize: GiftSale#create jumps back and forth between Gift five times before finally creating a Gift instance, and each jump further modifies the supplied params in-place.
Also. There are no rescue/catch blocks, meaning any issue with any of the above results in a 500. (A real 500, not a fake 500 like last time. A real 500, with tragic consequences.)
If you're having trouble following the above... yep! That's why it took FOUR FREAKING DAYS! I had no tests, no documentation, no already-built way of testing the API, and no idea what data to send it. especially considering it requires data from Stripe. It also requires an active session token + user data, and I likewise had no login API tests, documentation, logging, no idea how to create a user ... fucking hell, it's a mess.)
Also, and quite confusingly:
There's a class for GiftSale, but there's no table for it.
Gift and GiftSale are completely interchangeable except for their #create methods.
So, why does GiftSale exist?
I have no bloody idea.
All it seems to do is make everything far more complicated than it needs to be.
Anyway. My total commit?
Six lines.
IN FOUR FUCKING DAYS!
AHSKJGHALSKHGLKAHDSGJKASGH.7 -
Client: "We don't want line breaks in that column make it 500px wide!"
Me: Makes the column 500px wide. Sees that the line breaks are still there. Asks if it should be made wider to fit the text.
Client: "Just implement what we send you"
Me: Ok (thinking wtf)
Client after testing: "Why are there still line breaks?!?"
🙄😥😤😭
Why the actual hell can't they get there freaking requirements in order?!? This shit happens with every fourth request!6 -
Fucking hell, the devs before write a query that pulls 30ish column for a report. When I break it down MANUALLY, since it’s a spaghetti on top of another spaghetti, you only need 6. Fuck you, did you dropped your head when you was a kid? Fuck sake, and every query is written in stored procedure even though you’re using an entity libraries16
-
Most ignorant ask from a PM or client?
So, so many. How do I chose?
- Wanting to 'speed up' a web site that we did not own, in Sweden (they used a service I wrote). His 'benchmark' was counting "one Mississippi, two Mississippi" while the home page rendered on his home PC and < 1MB DSL connection (he lives in a rural area).
- Wanted to change the sort order of a column of report so it 'sometimes' sorted on 'ABC' (alpha) or '123' (numeric) and sometimes, a mix of both. His justification was if he could put the data in the order he wanted in Excel, the computer should be smart enough to do the same thing.
- Wanted a Windows desktop application to run on an android.
- Wanted to write the interface to a new phone system that wasn't going to be installed for months. Even though we had access to the SDK, he didn't understand the SDK required access to the hardware. For several weeks he would send emails containing tutorials on interfacing with COM libraries (as if that was my problem).
- Wanted to write a new customer support application in XML. I told him I would have the application written tomorrow if he could tell me what XML stands for.4 -
Simplicity is a prerequisite for reliability.
I put those words on the wall in giant vinyl letters, and I point to them every time someone asks me "can you add a frontend button which checks this external API and stores the correlation between the amount of rain and the sales numbers of purple buttplugs inside the user profiles?"
People always ask for one more column in a table, one more paragraph under an image — they never ask for replacement or removal of items.
So I force them. Want a feature? Fine, if you point at something of equal or greater complexity to delete.2 -
So;dfjkhijasdfkjq;sdfhjkl;asdf
I copy a line from one spec (to create a user) and paste it in another spec. It works just dandy in the first, and throws MySQL missing column errors in the other.
Fucking what.
This codebase is full of shit like this. Things work in one place but not another, and it’s never obvious why. Tens of thousands of gotchas and quirks. The only way I can get an answer to things like these is to either beg my boss for an explanation, which I’m sure he’s long since tired of, or spend a full day (or more) wading through several rabbit holes filled with raw sewage.
I wasted two hours today trying to get a simple fucking factory to work. And you know what? I just gave up and used the existing admin user. Yeah it’s a bad idea, but it’s fucking good enough.
They can yell if they want.
I have no cares left.rant non-deterministic this train went off the rails long ago so done so tired trainwreck idc puffing billy15 -
Got a call while on vacations, the main server is down.
*holy shit* I thought.
As I opened my MacBook, the phone kept ringing and slack was going crazy.
“What should I do? Where is the problem?”, the voices in my head said..
I opened the terminal and tried to get a ssh connection.
Sweat was dropping down from my forehead.
“Connected” the terminal said.
“Fuck yeah, the server is up, only the app is not responding”, I thought and opened the log files.
Suddenly, “STOP” I shout at the log files that were appended way too fast.
Then I saw it.
TimeOutExceptions..
I added an index to the modification date column,“ kill -9“ed the process, started again and went back to vacation mode 🙂
And of course I was the office hero for a while💪
For the smart asses, I’m aware that it’s a bad idea to -9 the app process in prod, but it was so overloaded that i was not able to kill it any other way. And we needed that server up again.4 -
Working on a database priorly designed and maintained by some private agency.
The fuck I'm dealing with!
Boolean values stored as 'TRUE'/'FALSE'. It's varchar, my dudes.
There are no FK relations. Just the values of IDs in a column.
There are no indexes, all on just the PKs, nothing else. Nothing.
Null, what's that? I'm dealing with 'N/A', my dudes.
Unique key, what's that? The table which stores users has all the fields nullable. Email is not unique ( even though that's the required behaviour).
ALL the numeric values are stored as varchar. Varchar, my dudes. Varchar. '1', '1.1'
And finally, the good ole, 1 table to rule them all. Normalisation, fuck that.
And what's the root cause of all this? My PM used to hand them Excel sheets she maintains on her local system. FTW. I don't have a enough explanations.7 -
Do managers not fucking understand that Jira is meant to eliminate all this stupid "What's the status with X?", and "Is Y done yet?" chatter. Our communication channels should be on business logic and other global updates about the company, not about fucking workflow status updates because you have nothing else to do with your day but ping me every 5 minutes.
LOOK AT THE REVIEW COLUMN ON JIRA. I MEAN ITS LITERALLY CALLED REVIEW. SO REVIEW IT AND DO YOUR FUCKING JOB.
I swear the devs consistently have a better overview on timelines and project status than management does - which is sad, because this is literally the definition of management!!!18 -
I'm fixing a security exploit, and it's a goddamn mountain of fuckups.
First, some idiot (read: the legendary dev himself) decided to use a gem to do some basic fucking searching instead of writing a simple fucking query.
Second, security ... didn't just drop the ball, they shit on it and flushed it down the toilet. The gem in question allows users to search by FUCKING EVERYTHING on EVERY FUCKING TABLE IN THE DB using really nice tools, actually, that let you do fancy things like traverse all the internal associations to find the users table, then list all users whose password reset hashes begin with "a" then "ab" then "abc" ... Want to steal an account? Hell, want to automate stealing all accounts? Only takes a few hundred requests apiece! Oooh, there's CC data, too, and its encryption keys!
Third, the gem does actually allow whitelisting associations, methods, etc. but ... well, the documentation actually recommends against it for whatever fucking reason, and that whitelisting is about as fine-grained as a club. You wanna restrict it to accessing the "name" column, but it needs to access both the "site" and "user" tables? Cool, users can now access site.name AND user.name... which is PII and totally leads to hefty fines. Thanks!
Fourth. If the gem can't access something thanks to the whitelist, it doesn't catch the exception and give you a useful error message or anything, no way. It just throws NoMethodErrors because fuck you. Good luck figuring out what they mean, especially if you have no idea you're even using the fucking thing.
Fifth. Thanks to the follower mentality prevalent in this hellhole, this shit is now used in a lot of places (and all indirectly!) so there's no searching for uses. Once I banhammer everything... well, loads of shit is going to break, and I won't have a fucking clue where because very few of these brainless sheep write decent test coverage (or even fucking write view tests), so I'll be doing tons of manual fucking testing. Oh, and I only have a week to finish everything, because fucking of course.
So, in summary. The stupid and lazy (and legendary!) dev fucked up. The stupid gem's author fucked up, and kept fucking up. The stupid devs followed the first fuckup's lead and repeated his fuck up, and fucked up on their own some more. It's fuckups all the fucking way down.rant security exploit root swears a lot actually root swears oh my stupid fucking people what the fuck fucking stupid fucking people20 -
The guy where I can only shake my head when I see his code, and he is really proud of if implementations, while he
- doesn't care about warnings
- breaks builds and doesn't care
- doesn't care about code styles and indents in a very column based way
- adds tons of comments to his code, mostly hard to understand, and sometimes that much you can hardly find the code
- implements a tokenizer where you have to inherit from its interface (Why would I wanna implement whole functions for a tokenizer and not just use it in place where needed? How do I use two of those in one class?)
- implement a "generic" state machine base class with fixed lengths array of 3 events and 3 strings (Why would I need events and strings hardcoded in a "generic" state machine? Why a maximum of 3?)
- once delivered a software without the needed runtime components, so the whole system (embedded device) wasn't working properly and only by chance missed the point of disabling update mechanisms
- make your ears bleed about his big inventions whenever he sees you, no matter how often he already told you about that blazing new feature5 -
I just got four CSV reports sent to me by our audit team, one of them zipped because it was too large to attach to email.
I open the three smaller ones and it turns out they copied all the (comma separated) data into the first column of an Excel document.
It gets better.
I unzip the "big" one. It's just a shortcut to the report, on a network share I don't have access to.
They zipped a shortcut.
Sigh. This'll be a fun exchange.3 -
[Little perspective: For the last 7 months I'm working in a certain project.]
[The project is full of unimaginative, non-creative devs with 0 initiative and poor technical background.]
[And they're almost all from one country which you all can figure out.]
[But I'm not going to mention it here because I don't want to come up as a racist]
[So there's US (Europeans) and THEM. 3 of US and about 10 of THEM. And we're doing 90% of all the heavy lifting]
---
Yesterday
---
D (Dev from THEM): Hi S, I have a problem with my task
Me: (sighing) Ok let's have a call
* on the call with D we were checking some stuff loosely related to task *
* code wouldn't get invoked at all for some reason *
* suddenly I realize that even if the code would invoke, D's probably doing everything wrong in it anyway *
Me (thinking): I need to double check something.
Me: I can't help you now, I'll get back to you later.
* call ended *
---
Me: Hey J, I need your help, I need to clarify the work package in my mind, because I am no longer sure.
J (my European TL): Ok, fire away.
* call started *
Me: Is it true that [blahblahblah] and so D's task depends on me completing first my task, or am I losing my mind?
J: That is correct.
Me: Well she's trying to do this in [that] way, which is completely wrong.
J: You see, that's how it is in this project, you do refinements with them, split these work packages to tasks, mention specifically what depends on what and what order should things be taken in, and in some cases all tasks from given user stories should be done by one person entirely... But they do it their way anyway, assign different people to different interdependent tasks, and these people don't even understand the big picture and they try to do the things the way they think they understand them.
Me: It's a fire in a brothel.
J: Yup.
Me: I fucking love this project.
J: (smiling silently)
* call ended *
---
Me: Ok D, you can't do your task because it's dependant on my task.
D: Oh... so what do I do?
Me: I don't know, do something else until I do my task.
---
A (THEIR TL) (Oh, did I forget to mention that there are 2 TLs in this project? THEY have their own. And there are 2 PMs as well.)
A: Hey S, I need to talk
Me: (sighing, getting distracted from work again) Ok let's have a call
* call started *
A: S, we need this entire work package done by Friday EOD.
Me: I can't promise, especially since there are several people working on its several tasks.
A: D's working on hers for 3 days already, and she's stuck. We want you to take over.
Me: (sighing, thinking "great"): Ok.
* call ended *
---
Me: Hey D, A instructed me to take over your task. This is actually going to be easier since you'd have to wait for mine after all.
D: Oh, ok.
---
* I switched the Assigned Person on D's task to myself on Azure *
---
This morning, email from D.
"Hey, I completed my task and it's on [this] branch, what do I do now?"
........................................
Me, hesitating between 2 ways to reply:
(and take note there are people in CC: A, J, P - the last one is THEIR PM)
1) "Hi, Unfortunately you'd still have to wait for my changes because your task is dependent on my task - the column to be changed is in the table that I am introducing and it's not merged to develop branch yet. By the way I already did your task locally, as I was instructed to do it, I'm wrapping things up now."
(y'know: the response which is kind, professional, understanding; without a slight bit of impatience)
2) WHAT FUCKING PART OF "DON'T DO THIS I WILL FUCKING DO IT MYSELF GO HOME JUST GO HOME" YOU DON'T FUCKING UNDERSTAND4 -
I'm moving some old data into a new database.
It contains some dates that *should* be in ISO 8601...
This is some of the trash that I found:
01/01/70
2010-11-05T08:06:48T08:06:03.7
2007-09-13T
Moreover, it has a column which *should* contains numbers, instead it has been defined using varchar, so it contains also some wonderful 'NaN' values.
I really would like to beat the person who set up all this stuff without some basic validation policies.9 -
So This is how you spell column in Java 😂
10 out of 10 would recommend going to collage 😁
(Spelled wrong deliberately)6 -
that moment when you realise the ID column in the DB has no auto increment on it after sending a 900k lines query... FML3
-
I was today years old when I discovered the CSS property column-count.
Do you have any fucking idea how many times I’ve used CSS grid or flex box or BOTH when all I wanted was to make a layout with a set number of columns?
Why the fuck didn’t I know about this thing?
Did you know about this thing?17 -
I’m on this ticket, right? It’s adding some functionality to some payment file parser. The code is atrocious, but it’s getting replaced with a microservice definitely-not-soon-enough, so i don’t need to rewrite it or anything, but looking at this monstrosity of mental diarrhea … fucking UGH. The code stink is noxious.
The damn thing reads each line of a csv file, keeping track of some metadata (blah blah) and the line number (which somehow has TWO off-by-one errors, so it starts on fucking 2 — and yes, the goddamn column headers on line #0 is recorded as line #2), does the same setup shit on every goddamned iteration, then calls a *second* parser on that line. That second parser in turn stores its line state, the line number, the batch number (…which is actually a huge object…), and a whole host of other large objects on itself, and uses exception throwing to communicate, catches and re-raises those exceptions as needed (instead of using, you know, if blocks to skip like 5 lines), and then writes the results of parsing that one single line to the database, and returns. The original calling parser then reads the data BACK OUT OF THE DATABASE, branches on that, and does more shit before reading the next line out of the file and calling that line-parser again.
JESUS CHRIST WHAT THE FUCK
And that’s not including the lesser crimes like duplicated code, misleading var names, and shit like defining class instance constants but … first checking to see if they’re defined yet? They obviously aren’t because they aren’t anywhere else in the fucking file!
Whoever wrote this pile of fetid muck must have been retroactively aborted for their previous crimes against intelligence, somehow survived the attempt, and is now worse off and re-offending.
Just.
Asdkfljasdklfhgasdfdah27 -
!rant
A rather long(it's 8 hrs long to be precise) story
So I just finished an amazing homework assignment. The goal was to open a new shell on Linux using a C program. We were asked to follow instructions from http://phrack.org/issues/49/14.html . However the instructions given were for 32 bit processors and we had to do same for 64 bit machines. In a nutshell we had to write a 64 bit shell code and use buffer-overflow technique to change the return address if the function to our shell code.
I was able to write my own shellcode within 1hr and was able to confirm that it's working by compiling with nasm and all. Also the "show-off-dev" inside me told me to execute "/bin/bash" instead of "/bin/sh"(which everyone else was going to do). After my assembly code was properly executing shellcode, I was excited to put it in my C code.
For that, I needed opcodes of assembly code in a string. Following again the "show-off-dev" inside me, I wrote a shell script which would extract the exact opcodes out of objdump output. After this I put it in my C code, call my friend and tell him that "hell yeah bro, I did it. Pretty sure sir is gonna give me full marks etc etc etc". I compiled the code and BOOM, IT SEGFAULTS RIGHT IN FRONT OF MY FRIEND. Worst, friend had copied a "/bin/sh" code from shellstorm and already had it working.
Really burned my ego, I sat continuously for 8 hrs in front of my laptop and didn't talk to anyone. I was continuously debugging the code for 8 hrs. Just a few minutes ago, I noticed that the shellcode which I'm actually putting in my C code is actually 2 bytes shorter than actual code length. WHAT THE F. I ran objdump manually and copied the opcodes one by one into the string (like a noob) and VOILA ! IT WORKED !!!
TURNS OUT I DIDN'T CUT THE LAST COLUMN OF OPCODES IN MY SHELL SCRIPT. I FIXED THAT AND IT WORKED !!
THE SINGLE SHITTY NUMBER MADE ME STRUGGLE 8 HRS OF MY LIFE !! SMH
Lessons learnt :
1)Never have such an ego that makes you think you're perfect, cuz you're retarded not perfect
2)Examine your scripts properly before using them
3)Never, I repeat NEVER!! brag about your code before compiling and testing it.
That's it!
If you've read this long story, you might as well press the "++" button.6 -
how to be a shitty client:
- have a legacy database where column names are misspelled and everything is nullable
- hire external help which instead of helping break the ui (bonus points for breaking the api too)
- demand a very much custom auth logic but decide to use aws cognito for shits and giggles
- demand 1hr daily meetings
- demand biometric auth with 0 knowledge of how biometric auth works (the previous devs just had a face id prompt which does nothing and retrieved email and password saved on the device???)
- message me at 2am because you don't understand how timezones work + demand a build while you're at it
- call me a "heretical pagan" because i took a day off on a holiday you don't celebrate (???)
i could go on but i think this is enough11 -
I've optimised so many things in my time I can't remember most of them.
Most recently, something had to be the equivalent off `"literal" LIKE column` with a million rows to compare. It would take around a second average each literal to lookup for a service that needs to be high load and low latency. This isn't an easy case to optimise, many people would consider it impossible.
It took my a couple of hours to reverse engineer the data and implement a few hundred line implementation that would look it up in 1ms average with the worst possible case being very rare and not too distant from this.
In another case there was a lookup of arbitrary time spans that most people would not bother to cache because the input parameters are too short lived and variable to make a difference. I replaced the 50000+ line application acting as a middle man between the application and database with 500 lines of code that did the look up faster and was able to implement a reasonable caching strategy. This dropped resource consumption by a minimum of factor of ten at least. Misses were cheaper and it was able to cache most cases. It also involved modifying the client library in C to stop it unnecessarily wrapping primitives in objects to the high level language which was causing it to consume excessive amounts of memory when processing huge data streams.
Another system would download a huge data set for every point of sale constantly, then parse and apply it. It had to reflect changes quickly but would download the whole dataset each time containing hundreds of thousands of rows. I whipped up a system so that a single server (barring redundancy) would download it in a loop, parse it using C which was much faster than the traditional interpreted language, then use a custom data differential format, TCP data streaming protocol, binary serialisation and LZMA compression to pipe it down to points of sale. This protocol also used versioning for catchup and differential combination for additional reduction in size. It went from being 30 seconds to a few minutes behind to using able to keep up to with in a second of changes. It was also using so much bandwidth that it would reach the limit on ADSL connections then get throttled. I looked at the traffic stats after and it dropped from dozens of terabytes a month to around a gigabyte or so a month for several hundred machines. The drop in the graphs you'd think all the machines had been turned off as that's what it looked like. It could now happily run over GPRS or 56K.
I was working on a project with a lot of data and noticed these huge tables and horrible queries. The tables were all the results of queries. Someone wrote terrible SQL then to optimise it ran it in the background with all possible variable values then store the results of joins and aggregates into new tables. On top of those tables they wrote more SQL. I wrote some new queries and query generation that wiped out thousands of lines of code immediately and operated on the original tables taking things down from 30GB and rapidly climbing to a couple GB.
Another time a piece of mathematics had to generate all possible permutations and the existing solution was factorial. I worked out how to optimise it to run n*n which believe it or not made the world of difference. Went from hardly handling anything to handling anything thrown at it. It was nice trying to get people to "freeze the system now".
I build my own frontend systems (admittedly rushed) that do what angular/react/vue aim for but with higher (maximum) performance including an in memory data base to back the UI that had layered event driven indexes and could handle referential integrity (overlay on the database only revealing items with valid integrity) or reordering and reposition events very rapidly using a custom AVL tree. You could layer indexes over it (data inheritance) that could be partial and dynamic.
So many times have I optimised things on automatic just cleaning up code normally. Hundreds, thousands of optimisations. It's what makes my clock tick.4 -
A few hours ago I decided it was a good idea to to clean up my keyboard. I did so and took a walk leaving the keys to dry.
After I came back I hoovered the -board and decided to put back the keys. I started with the special keys since they were the easiest to find (and some required a metal thing).
Now, I was quickly made aware of something that I had never known nor noticed before. Bear with me here as I'm not a person that cares too much about hardware unless I need to. (Hardware here meaning stuff like mice, keyboards, headsets, and stuff like that). But I learned that
Not all keys are the same size. They look really similar to someone like me. But I manned up and put the keys back.
A little under 1.5 hours later and I now posses a keyboard that is in uncanny valley. It doesn't feel like it though, and it shouldn't be that big of a problem since I never look at my keyboard anyway.
Messaged one of my m8's about and this was his reply
"nope
one kind per row
usually says the row on the underside"
Now fantasize about the elasmobranch fish which is characterized by a cartilaginous skeleton of which I am the proprietor at what he said. I pulled a key out and, sure enough, "C28 R1".
Now I am not sure about the 28th column, but it did fit in the first row.
Fuck me9 -
So I have that custom-made wifi router I've built. And it uses a USB wifi adapter with AC (wifi5) capability - the fastest one I could find in AliExpress.
I set it up a while ago - the internet access works fine, although speeds are somewhat sluggish. But hey, what to expect from a cheapo on Ali! Not to mention it's USB, not a PCIe...
A few days ago I ran a few speedtest.net tests with my actual AC router and the one I've built. Results were so different I wanted to cry :( some pathetic 23Mbps with my custom router :(
This evening I had some time on my hands and finally decided to have an umpteenth look.
nmcli d wifi
this is what caught my eye first. The RATE column listed my custom router as 54Mbps, whereas the actual router had 195Mbps.
I have reviewed the hostapd configuration sooo many times - this time nothing caught my eye as well.
Googling did not give anything obvious as well.
What do we do next? Yes, that's right - enable debug and read the logs.
> VHT (IEEE 802.11ac) with WPA/WPA2 requires CCMP/GCMP to be enabled, disabling VHT capabilities
This is one of the lines at the top of the log. Waaaaiiitttt.. VHT is something I definitely want with ac -- why does it disable that??? Sounds like a configuration fuckup rather than the HW limitation! And config fuckups CAN be fixed!
Turns out, an innocently looking
`wpa_pairwise=TKIP`
change into
`wpa_pairwise=TKIP CCMP`
made a world of a difference!
:wq
!hostapd
connect to the hostapd hotspot and run that iperf3 test again, and... Oh my. Oh boi! My pants fell off -- the speed increased >3x times!
A quick speedtest.net test deems my custom router's download speeds hardly any worse than the speeds obtained using my LInksys!!
The moral of the story: no matter how innocent some configurations look, they might make a huge difference. And RTFL [read the fucking logs]
In the pic -- left - my actual router, right - my custom-built router with a USB wifi adapter. Not too shabby!7 -
We don't know what one-to-many is! Instead, we convert all associated IDs to a string and join the list into a string separated by commas! Only after this absolute clownery do we save this new nice clean string to the database column! Then, when we want all associated entities, we serialize this list back into an array of IDs and retrieve them! It's clown-genius!
🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡16 -
Description of a Bug in JIRA:
Hi guys, there is "another" bug :-))))))!!!! :-((( with the customer list:
- The list of Customers (**which one? we have 4 fucking lists **) is sorted by Name, not by Birthday date (**wait, it's a sortable table, with a sortable name, city ,zip column, it's not sorted by birthday because the birthday column was not even required **)
- If I click on the details I see some data missing (**which data? which customer? there are thousands of them and most work**)
- In addition the arrow on the right is too small, can you make it a little bigger (**excuse me**)?
- I also need to export everything in excel.
Categorised as: Bug
Moron. You are part of a League of Morons...2 -
Why do we have code reviews:
To stop stupid crap like column names with mis-matched cases:
* FirstName
* Lastname
Now it's in the production APi and nobody can change it.8 -
my boss asked me to log in 1h30 after i logged off because "a user has been experiencing this bug the entire day and i should fix it because we're on maintenance tomorrow " but a) it's a known bug that we can't reproduce, he should've notified sooner the issue; b) it's not a big deal, i can fix it tomorrow, it's just not ticking a column in the database; c) I'm off work, go cry about it2
-
I used to work for a company in 2017 that was affiliated with a ruling party's tax information agency. The website was janky and the database .. oh the horrors.
Every single record was a JSON object stored in a NEW COLUMN.
That's right. If you had 10K records then the table had 1 row with 10K columns with each column contained JSON data in it.
I understood then, why government websites are so crap.
Anyway, I untangled it and made the performance better to a degree that my then-boss didn't believe what I pulled off.
But yeah, I never got any pay increments or whatever, It was a good dopamine boost to my boss which lasted only 15 mins.
I don't believe in improving code ever since because of the fact that I ain't getting paid extra, so why bother.7 -
This might actually be my first real rant.
Whatever fucking cockgoblin decided that making dynamics GP so fucking confusing needs to suck a big bag of dicks. I'm so fucking tired of having to google every damned table name and column name because nothing makes any motherfucking sense.
Am I supposed to instinctively know what PM20201 does? What data it holds? I don't mind reading documentation. But it's hard to even know where to start when the shitbird API and database are more complicated than calculating orbital fucking decay.
I am done. Fuck you gp. Fuck you and your nonsense. I guess our sales people don't get to know when an invoice was paid.8 -
Fuck our new project manager.
Literally all she does in her time is schedule meetings for others and send us emails stating that X needs to be done by date or why are we delayed with Y. Then she even manages to completely screw us with the meetings she schedules.
Today I woke up to seeing a beautiful gapless column of colorful rectangles in my dairy.... for today. And last time I saw this Monday it only had 2.5 hours of meetings!!
Now a lot of us from our team had the Friday afternoon off so it may be that she did this beautiful piece of artwork during that time, in which case she could somewhat rightfully say that we should have taken a look at it. But we actually have a convention to only schedule planning meetings for Mondays which these fucking aren't and even if she hadn't known this, who the fuck schedules a ton of meetings to Monday?! from a Friday afternoon?!?!
By the way the new pretty pink and orange meetings I have today are about actually important topics in between which I would normally appreciate to grab a tea or at least use the fucking restroom. Officially I only have a 45 minute lunch break all day.
Oh and naturally she sets up the meetings as organiser so that we can only suggest her new times and can't change it on our own.
But naturally PM lady never actually attends the meetings because she wouldn't understand shit. So when my fav female colleague, Sammy and I joined our 11am meeting, the first thing Sammy said - well after I greeted her by "wtf" - is to just leave the call on while we grab brunch.
So here I am sitting in the close by park with my brunch and thought I could use the now extended lunch break time efficiently by ranting my ass of and asking you guys why the fuck such people like our PM get paid.5 -
I asked my boss for a raise. Since we're data scientists, I basically plotted a column chart showing that he was paying me half of the european average. I said I was willing to negotiate but he was very 'discomfortable'.
Time to go find another job. Or second one 😭6 -
devRantron v1.2.1
A lot of people have asked me in comments if it is available in windows, macOS or linux. Just to clear this up that it's available on all platform including all linux distros.
Changelists:
1. Clicking on in-app notifications will now scroll to the relevant comment
2. You can scroll outside the column now. Your mouse cursor doesn't need to inside to scroll through the feed
3. Clicking ESC will close any open modal
4. Use arrow keys to scroll feeds
5. User can't subscribe himself anymore
6. You can press enter to log in
Get it from here: https://devrantron.firebaseapp.com
**I posted this yesterday night but removed it immedietly as I detected a huge bug in the release. Sorry 😞11 -
Well, the system is offline, links are broken and users are complaining! Developer, what did you do?
After some digging around the designer made a "simple change" to a csv file, add a column to include the image file name of each item...
I mean, it just shifted ALL THE COLUMNS in a csv file but what could go wrong? 🤦♂️2 -
Bootcrap. Just looked at their main page, and it's a whopping 75k of markup plus 294k of CSS (W-T-F?!), and 224k of JS. All of that shit for a page that shouldn't be more than 10k of markup, 16k of CSS, and that has no reason to even use JS at all.
<a class="d-flex flex-column flex-lg-row justify-content-center align-items-center mb-4 text-dark lh-sm text-decoration-none
Yeah, that crap is supposed to be "easier" to write. That's what you get for totally failing to understand how HTML/CSS even work, clinging to late 1990s practices, and ditching decades of progress since then.
Although the Bootcrap folks do manage to write valid HTML. As low as that sounds, but that counts already as an exceptional skill in the notoriously low-skilled frontend "dev" world that is all about making shitty websites.
Oh, and the rest like Failwind and Bulimia aren't any better. They already fail at delivering valid HTML on their websites.17 -
Oh boy. Gotta love having a team member (For a School project) be in charge of the Database functionality/design, who has almost no communication skills and basically no clue about how to store data in a data base.
Im talking dates stored as varchar(5), column sizes being way way to small, overall table design being rather terrible, no primary/foreign keys, pretty much... Actually no, everything was being stored as a varchar.
Not only that, but there was a hell lot of data that needed to be stored that wasn't even accounted for in the DB design. He made some code that could be used by our team members for queries, creating tables, inserting data (etc), almost 2,000 lines of it.... And basically nothing was fucking documented at all. I'm talking comments like "Insert data into cities table" and nothing else. More complicated functions had as much, or less documentation. Complete mess.2 -
A meeting about defining the
definition of done (…)
I know I mentioned it before, but it’s beyond stupid.
- Lasted 2.5 hours
- Didn’t solve shit
- Could have been solved by adding a freaking column in our Jira, but someone wanted a physical board cause let’s waste paper I guess.
Just imagine 2.5 hours of continuous suggestions and stupid reject reasons.
Fun fact: it was called by a “senior” dev which rejected every single purposal cause they also didn’t want to change the process.
Idfk why I didn’t leave the company sooner, had to get a massive burnout before realising my sanity is worth more than being paid the minimum in the office.1 -
Did some updates to an older Web Forms website built by a previous SENIOR developer who is a notoriously horrible developer.
Now before I start, you have to understand this guy studied at a University and had been working for at least two years before I even started working. He is supposed to know the basic shit mentioned below.
This also happened a couple of days ago, so I have calmed down since then so I apologise for the relaxed tone. My next rant will contain a lot more swearing.
This fucking guy did the stupidest shit imaginable.
On the details view of a post|page|article|product|anything that would require a details view this jackass would load the data from the DB.
Using an OleDbConnection, OleDbDataAdapter, DataTable and the poorest writter fucking sql statements you have ever seen. All of these declared in the Page_Load method.
There was literally no reason for him to use OleDb instead of Sql, but he simply did not know any better.
He especially liked: "select * from tbl where id = " & Request("T") & ""
ZERO fucking checks to see if the value is even passed or valid, nothing. He did not even check whether the DataTable had any rows.
He then proceeded to use only the Heading column of the returned row to change the page's title.
Stupidly I assumed the aspx page will be in a better state. Fuck NO!
This fucktard went, added server tags to the opening of the asp:Content tag, copied that shit he used to fetch the data and pasted it between the server tags.
He did not know how to access the DataTable mentioned above from the aspx page!
He did this on every fucking project he worked on. Any place that required <%= %> to display data instead of using asp server controls, this cunt copied whatever was written in the code behind and pasted everything between server tags.
Fuck I could go on forever, but I think this is enough for my first rant.2 -
OMFG I don't even know where to start..
Probably should start with last week (as this is the first time I had to deal with this problem directly)..
Also please note that all packages, procedure/function names, tables etc have fictional names, so every similarity between this story and reality is just a coincidence!!
Here it goes..
Lat week we implemented a new feature for the customer on production, everything was working fine.. After a day or two, the customer notices the audit logs are not complete aka missing user_id or have the wrong user_id inserted.
Hm.. ok.. I check logs (disk + database).. WTF, parameters are being sent in as they should, meaning they are there, so no idea what is with the missing ids.
OK, logs look fine, but I notice user_id have some weird values (I already memorized most frequent users and their ids). So I go check what is happening in the code, as the procedures/functions are called ok.
Wow, boy was I surprised.. many many times..
In the code, we actually check for user in this apps db or in case of using SSO (which we were) in the main db schema..
The user gets returned & logged ok, but that is it. Used only for authentication. When sending stuff to the db to log, old user Id is used, meaning that ofc userid was missing or wrong.
Anyhow, I fix that crap, take care of some other audit logs, so that proper user id was sent in. Test locally, cool. Works. Update customer's test servers. Works. Cool..
I still notice something off.. even though I fixed the audit_dbtable_2, audit_dbtable_1 still doesn't show proper user ids.. This was last week. I left it as is, as I had more urgent tasks waiting for me..
Anyhow, now it came the time for this fuckup to be fixed. Ok, I think to myself I can do this with a bit more hacking, but it leaves the original database and all other apps as is, so they won't break.
I crate another pck for api alone copy the calls, add user_id as param and from that on, I call other standard functions like usual, just leave out the user_id I am now explicitly sending with every call.
Ok this might work.
I prepare package, add user_id param to the calls.. great, time to test this code and my knowledge..
I made changes for api to incude the current user id (+ log it in the disk logs + audit_dbtable_1), test it, and check db..
Disk logs fine, debugging fine (user_id has proper value) but audit_dbtable_1 still userid = 0.
WTF?! I go check the code, where I forgot to include user id.. noup, it's all there. OK, I go check the logging, maybe I fucked up some parameters on db level. Nope, user is there in the friggin description ON THE SAME FUCKING TABLE!!
Just not in the column user_id...
WTF..Ok, cig break to let me think..
I come back and check the original auditing procedure on the db.. It is usually used/called with null as the user id. OK, I have replaced those with actual user ids I sent in the procedures/functions. Recheck every call!! TWICE!! Great.. no fuckups. Let's test it again!
OFC nothing changes, value in the db is still 0. WTF?! HOW!?
So I open the auditing pck, to look the insides of that bloody procedure.. WHAT THE ACTUAL FUCK?!
Instead of logging the p_user_sth_sth that is sent to that procedure, it just inserts the variable declared in the main package..
WHAT THE ACTUAL FUCK?! Did the 'new guy' made changes to this because he couldn't figure out what is wrong?! Nope, not him. I asked the CEO if he knows anything.. Noup.. I checked all customers dbs (different customers).. ALL HAD THIS HARDOCED IN!!! FORM THE FREAKING YEAR 2016!!! O.o
Unfuckin believable.. How did this ever work?!
Looks like at the begining, someone tried to implement this, but gave up mid implementation.. Decided it is enough to log current user id into BLABLA variable on some pck..
Which might have been ok 10+ years ago, but not today, not when you use connection pooling.. FFS!!
So yeah, I found easter eggs from years ago.. Almost went crazy when trying to figure out where I fucked this up. It was such a plan, simple, straight-forward solution to auditing..
If only the original procedure was working as it should.. bloddy hell!!8 -
Imagine saving Integers and Floats in a MySQL table as strings containing locale based thousand sepatators...
man... fickt das hart!
Wait, there's more!
Imagine storing a field containing list of object data as a CSV in a single table column instead of using JSON format or a separate DB table.... and later parsing it by splitting the CSV string on ";"...7 -
Throughout the years I have completed many projects successfully. Some projects really stood out and were awesome to do. This is not about these projects. It is however about one of my very first projects for my first real software development client many years ago, somewhere around the year 2000.
I was working for some years at TNO, a well known Dutch organization, and the lady at the reception asked me if I could help her husband out because he was strugling to get some web app developed. So I said sure, I can talk to him and see what I can do.
So I went to their house and talked to her husband. They were living in a huge villa and turns out her husband owns an international flower export business for which he needed some web app for. So we had a nice talk and he showed me some software designs he got from a couple of different big companies. He asked me my opinion about these designs. I remember answering something like that it looks very fancy but for me it didn't make much sense.
He replied that it didn't make sense for him as well and was disappointed that these companies didn't seem to understand him properly. It took about 3 months to get these designs which he thought were useless. So, I asked him to explain me what he was looking for.
Actually a pretty simple thing. He was using paper forms to have his clients order the flowers they need. Think of them as Excelsheets with 3 columns with a list of flower names and besides each column a column for the amount required. He would go to the flower auction at 4 in the morning to collect all these filled in forms, manually aggregate them on new forms, and then go to buy the flowers ordered.
This man had many clients and truck drivers. Some of them only worked or ordered at specific days. It was also important that one could easily indicate which flowers were really important to get.
Then comes this 20 year old guy (me) who delivered a working prototype in 24 hours. You can imagine how happy this man was. He said: if you built this for me I will pay you 10K. In the meanwhile for fun you can borrow one of my sports cars if you want.
I took the deal, drove a big fat sports car for about 1.5 months, I delivered and the man payed me as promised.
The web app I developed is today still being used every day. I don't think there is any other project out there, at least not that I'm aware of, that I have worked on and is still being used today in its form as it was originally developed.4 -
Looking at one particular job ad
“Experience with agile”
“Excellent knowledge of agile frameworks”
“Work with agile software development team”
Basically in the first few paragraphs it mentions agile about 10 times.
Then the first bullet point in the essential column
“Must have experience working to tight deadlines”
D’oh3 -
YOU MEAN TO ACTUALLY FKN TELL ME IT TOOK YOU 3 DAYS TO FIGURE OUT AN "QueryFailedError: null value in column "id" violates not-null constraint" ERROR??? GTFO. These fkn "fullstack" consultants man...1
-
A couple of months ago, the father of a friend of mine, asked me if I wanted to help him out with a project.
His late father, whom he inherited a one-person upholstering company from, once created a system in filemaker to do, among others, his financial administration. This system, however, grew organically as time went by, but he passed away before he explained to his son how it worked.
Now this man was running the company, using the parts of the system that he knows, but things were starting to break down. He asked me if I could help him understand what is going on and fix a couple of things.
However, the more I look at it, the more I realize what a monstrosity this has become, because the system has never been cleaned up. For example:
- There is a suppliers table, with the columns "E-MAIL" and "EMAIL". The latter one containing the supplier's website address.
- In order to be able to generate year reports, at the start of a year he copies the previous year's file, removes all records from it and starts using that as the new year's file. (This year, he accidentally created a shortcut instead of copying...)
- Some tables have a misterious column called "#1". It always contains a 1.
- The system consists of about 20 files, each of them containing a single table, although only 10 of them are really used. The other ones are just legacy.
- File, table, column, and layout names are capitalized randomly (all caps, no cap, starting uppercase) and are usually abbreviations, like "st2", "oms3", "off\rek", "b", "VERDBEST6" and "antst".
- One table has 92 columns.
- Of those 92 columns, only about 20, maybe 30, are in use.
Now, my task is finding out what parts are useful and in use, extracting those and create a baby monster out of the giant monster this system has become.
Sidenote: I actually enjoy having to learn a bit about accounting in order to understand this. Planning to use the knowledge I gain to keep track of my own finances.6 -
Order now! iPhone 8 Xplode
Englisch: https://sputniknews.com/science/...
Japanese Twitter: https://twitter.com/Magokoro0511/...
Appledaily.com.tw: http://appledaily.com.tw/column/...14 -
Let's say you have a MySQL database table for jobs. Each job has 1 associated ticket. You want to keep track if the ticket is closed or not. Every sane person creates jobs table, tickets table, keeps bool value for ticket state and relationship between them.
But because our database is designed by a half braindead amoeba, we have one table only, so each job has to be updated individually with a new ticket number and its state. Beacuse it sooo much faster to update (daily!) 13k jobs than just 100 tickets.
As a bonus - if the ticked is closed, the column "ticket_closed" is "No", if it's still open the value is "FALSE". Yes, both as varchar/strings.7 -
Gave the marketing team access to JIRA and gave them permissions to create tickets. Don’t know if that was a management’s design or what. Tickets were poorly written and I had to make frequent follow ups to figure out what the heck was actually being requested. I did get accused of “questioning the request” at least once. It was a big WTF because I think marketing thought they managed dev team but they didn’t.
Marketing also didn’t give a damn about agile processes despite being told some simple rules, such as don’t change your ticket details after a dev has already begun work on it. I would pick up a ticket thinking it’s just html and css updates, then it would change to include an api update. No no no. You’ve just turned a 1 day ticket into a 1 week ticket. I don’t have time for these shenanigans.
I would also submit tickets for code review and marketing would say it’s not ready for review. Then why was that ticket in the to do column for the past two days?! They couldn’t make a decision and would submit revisions every single day.
And they would think devs could do everything. No, never assume the front end dev can pick up back end tasks.
No one on dev team really cared because we were all looking for new jobs anyway. The company was planning to lay us off in a year. Every month a dev gave notice and left.3 -
I don't know if I'm being pranked or not, but I work with my boss and he has the strangest way of doing things.
- Only use PHP
- Keep error_reporting off (for development), Site cannot function if they are on.
- 20,000 lines of functions in a single file, 50% of which was unused, mostly repeated code that could have been reduced massively.
- Zero Code Comments
- Inconsistent variable names, function names, file names -- I was literally project searching for months to find things.
- There is nothing close to a normalized SQL Database, column ID names can't even stay consistent.
- Every query is done with a mysqli wrapper to use legacy mysql functions.
- Most used function is to escape stirngs
- Type-hinting is too strict for the code.
- Most files packed with Inline CSS, JavaScript and PHP - we don't want to use an external file otherwise we'd have to open two of them.
- Do not use a package manger composer because he doesn't have it installed.. Though I told him it's easy on any platform and I'll explain it.
- He downloads a few composer packages he likes and drag/drop them into random folder.
- Uses $_GET to set values and pass them around like a message contianer.
- One file is 6000 lines which is a giant if statement with somewhere close to 7 levels deep of recursion.
- Never removes his old code that bloats things.
- Has functions from a decade ago he would like to save to use some day. Just regular, plain old, PHP functions.
- Always wants to build things from scratch, and re-using a lot of his code that is honestly a weird way of doing almost everything.
- Using CodeIntel, Mess Detectors, Error Detectors is not good or useful.
- Would not deploy to production through any tool I setup, though I was told to. Instead he wrote bash scripts that still make me nervous.
- Often tells me to make something modern/great (reinventing a wheel) and then ends up saying, "I think I'd do it this way... Referes to his code 5 years ago".
- Using isset() breaks things.
- Tens of thousands of undefined variables exist because arrays are creates like $this[][][] = 5;
- Understanding the naming of functions required me to write several documents.
- I had to use #region tags to find places in the code quicker since a router was about 2000 lines of if else statements.
- I used Todo Bookmark extensions in VSCode to mark and flag everything that's a bug.
- Gets upset if I add anything to .gitignore; I tried to tell him it ignores files we don't want, he is though it deleted them for a while.
- He would rather explain every line of code in a mammoth project that follows no human known patterns, includes files that overwrite global scope variables and wants has me do the documentation.
- Open to ideas but when I bring them up such as - This is what most standards suggest, here's a literal example of exactly what you want but easier - He will passively decide against it and end up working on tedious things not very necessary for project release dates.
- On another project I try to write code but he wants to go over every single nook and cranny and stay on the phone the entire day as I watch his screen and Im trying to code.
I would like us all to do well but I do not consider him a programmer but a script-whippersnapper. I find myself trying to to debate the most basic of things (you shouldnt 777 every file), and I need all kinds of evidence before he will do something about it. We need "security" and all kinds of buzz words but I'm scared to death of this code. After several months its a nice place to work but I am convinced I'm being pranked or my boss has very little idea what he's doing. I've worked in a lot of disasters but nothing like this.
We are building an API, I could use something open source to help with anything from validations, routing, ACL but he ends up reinventing the wheel. I have never worked so slow, hindered and baffled at how I am supposed to build anything - nothing is stable, tested, and rarely logical. I suggested many things but he would rather have small talk and reason his way into using things he made.
I could fhave this project 50% done i a Node API i two weeks, pretty fast in a PHP or Python one, but we for reasons I have no idea would rather go slow and literally "build a framework". Two knuckleheads are going to build a PHP REST framework and compete with tested, tried and true open source tools by tens of millions?
I just wanted to rant because this drives me crazy. I have so much stress my neck and shoulder seems like a nerve is pinched. I don't understand what any of this means. I've never met someone who was wrong about so many things but believed they were right. I just don't know what to say so often on call I just say, 'uhh..'. It's like nothing anyone or any authority says matters, I don't know why he asks anything he's going to do things one way, a hard way, only that he can decipher. He's an owner, he's not worried about job security.13 -
After 4 years of professional programming the most important thing that I learned is "user is stupid".
Once I modified old code that was summing salaries (I added extra column to the result), nothing else. My result was rejected because all salaries was empty. Period of data was from first day of the month from user selected date to user selected date. It turned out that user was selecting 27th day of the month (it was 27th then). I responded that salaries have full month period, and you'll have to choose end of the month... And then shitstorm began, that I messed up previous functionality. I tried to explain, but it wasn't working. It ends up with user selecting any date and I'm doing end-of-the-month in the background^^
It's my first rant, welcome to you all :)4 -
So my client had a simple request a few days ago.
It read: "can you update the bottom middle image on the about page grid to the attached image".
There were two issues with that that my client cannot seem to comprehend - even after I have emailed them clearly explaining the issues.
The about grid is 4 x 4. Not sure how they expect me to update the "middle image" in a 4 column row, but alas.
The second issue was a little clearer. The attachment they mentioned wasn't an image. It was an empty .txt file.
2 consecutive fails right there :)2 -
Fucking hate when business people says this to me:
- You have no time to do this, we will find somebody else to do it. (EXCUSE ME? how do you know I have no time? If have no time I WILL TELL YOU)
- Your team is too busy, we will outsource that (IF THAT it's a priority, we WILL DO THAT, fuck you, I'll tell you if we need to outsource or not)
- Requirements are too complex to do now. We will think about it and we will tell you, maybe it's just enough to add a column to db (WHAT? WHAT THE FUCK IS too complex? I didn't even see anything we can call requirement, nor speak with relevant people, so how do you fucking know they are complex if you don't know shit about dev and our platform)
Conclusion
It's true, I have no time, because I don't fucking understand what do you want, so I'm running all day and night doing useless things.1 -
The company considers the project manager I work with to be the best. After working with him, I consider him to be everything that is wrong with project management.
This PM injects himself into everything and has a way of completely over-complicating the smallest of things. I will give an example:
We needed to receive around 1000 rows of data from our vendor, process each row, and host an endpoint with the data in json. This was a pretty simple task until the PM got involved and over complicated the shit out of it. He asks me what file format I need to receive the data. I say it doesnt really matter, if the vendor has the data in Excel, I can use that. After an hour long conversation about his concerns using Excel he decides CSV is better. I tell him not a problem for me, CSV works just as good. The PM then has multiple conversations with the Vendor about the specific format he wants it in. Everything seems good. The he calls me and asks how am I going to host the JSON endpoints. I tell him because its static data, I was probably going to simply convert each record into its own file and use `nginx`. He is concerned about how I would process each record into its own file. I then suggest I could use a database that stores the data and have an API endpoint that will retrieve and convert into JSON. He is concerned about the complexities of adding a database and unnecessary overhead of re-processing records every time someone hits the endpoint. No decision is made and two hours are wasted. Next day he tells me he figured out a solution, we should process each record into its own JSON file and host with `nginx`. Literally the first thing I said. I tell him great, I will do that.
Fast forward a few days and its time to receive the payload of 1000 records from the Vendor. I receive the file open it up. While they sent it in CSV format the headers and column order are different. I quietly without telling the PM, adjust my code to fit what I received, ran my unit test to make sure it processed correctly, and outputted each record into its own json file. Job is now done and the project manager gets credit for getting everything to work on the first try.
This is absolutely ridiculous, the PM has an absurd 120 hours to this task! Because of all the meetings, constant interruptions, and changing of his mind, I have 35 hours to this task. In reality the actual time I spent writing code was probably 2-3 hours and all the rest was dealing with this PM's meetings and questions and indecisiveness. From a higher level, he appears to be a great PM because of all the hours he logs but in reality he takes the easiest of tasks and turns them into a nightmare. This project could have easily been worked out between me and vendor in a 30 min conversation but this PM makes it his business to insert himself into everything. And then he has the nerve to complain that he is so overwhelmed with all the stuff going on. It drives me crazy because this inefficacy and unwanted help makes everything he touches turn into a logistical nightmare but yet he is viewed as one of the companies top Project Managers.3 -
Didn't reviewed the migration file and ran the script on production which altered the column from LONGTEXT to TINYTEXT and truncated all the data. 😞2
-
Im getting tired of this fucking scrum team.
First of all let me introduce our backend team which takes 3 weeks to add one fucking column to database and in the end turns out they fucked up RabbitMQ RPC implementation so the column is not syncing with our app at all so now we have to wait 2 extra weeks until that will be working. Best part is that backend fucker who fucked up doesnt even feel like hes blocking a feature and would rather sit for extra few days and do nothing until he gets reassigned his pile of shit back to him than clean up his own shit.
Then we have business analytic who doesnt know how to define tasks properly so I have to record each grooming meeting so I would know what to fucking implement because he doesnt even bother to take proper notes. Which results in not fully defined tasks, which results in unexpected behaviours and MR's stuck in limbo for weeks.
Also lets not forget QA guy who doesnt even bother writing scenarios, I as an app dev have to write them myself just to be sure that fucker will test everything thoroughly.
Then we have fucking devs from consultancy agency who apparently have 6 years of experience (I have barely 2) and these fuckers are spamming me daily with the most basic questions. After each grooming they rush to assign themselves tasks which are not even defined properly yet and not even in this sprint, but fuckers are lazy so thy want to reserve easier tasks for themselves. Pathetic.
At least I have a decent senior on my team, but sometimes he patronizes me so much that I start asking me what I am doing in this team.
Fuck this shit, I asked for a 43% raise and if Im not getting it in 2-3 weeks im outta here. Fuckers.5 -
Store POJOs as json inside a database column so that we have a dynamic relational database!
For those who don't know what a POJO
*POJO: plain old Java object
Technically I was asked to store all data models as json in a single column 🙄10 -
My preferred stack is Rails/NginX/Postgres, or Node using the same.
I have a fair amount of material for this week's rant, but in my stack's defense, the quantity is primarily because I've been using it for so long, and I'm apparently a talented breaker. I may share other stories if the motivation arises.
However, today I ran into something definitely deserving of calling out.
The default datatype for a Date+Time column in Postgres is `datetime` which means "date+time without timezone". (while `datetimetz` instead stores the timezone).
Apparently when comparing a datetime with a datetimetz, Postgres doesn't compute the timezone difference correctly, leading to some very unexpected and confusing query results.
Today, I had a record that was both pending (expires_at > now) and expired (expires_at <= now), where now is a DateTime (with tz) literal from Rails. After half an hour's frustrated delving and baffled expressions at query results, I finally figured out that the database's math was incorrect when comparing UTC (+0) and PST (-7).
This during a semi-high-priority bugfix that's blocking for a coworker.
While Time and all of its nuances are honestly extremely difficult to handle correctly, I didn't expect Postgres to get this relatively simple part wrong.
Shame on you, Postgres.
I expected better.3 -
So my car has a problem with a steering column lock. Sometimes the actuator pops an error and it does not unlock until I clear that buggar. Carrying a lappy with vag-com seems somewhat annoying so I got a obdeleven bluetooth dongle with am app.
Once you get it to work it works perfectly. Have been using it for a few years now. It's like a half a year or so since it got a last update and it's been stable as a rock since.
Today me and my fam took a night out with a car. Drove here, drove there, had fun. Time to go home, as the little one is getting sleepy. Got in a car, insert a key, turn it -- no ignition. Damn that steering lock!
So I pop in a dongle, open the app, hit connect,... Wait, what is that? A toast with "a new update is available. [[update now]] [[cancel]]".
Cancel ofc, I need to go home asap! Will gladly get the update when the kiddo is in his bed!
[[cancel]]. The toast disappears. Okay, now [[connect]]
"a new update is available. [[update now]] [[cancel]]"
mother f#$@%!!! Allright already, [[update]] it ffs.
Updated the app. Now [[connect]].
Loading.. Loading... "could not connect to device"
tfq?!?
Reinsert the dongle, connect
restart the app, connect
restart the phone, connect
clear all bt devices, connect
do the rain dance, connect.
Permission to panic: GRANTED.
Dear devs. If you are rolling out an update -- never ever EVER make it non-postponable, non-cancelable. No matter how critical, your updates must NEVER be mandatory.6 -
My Favorite Senior Dev: Hmm, I don't understand this error.
Neighboring, Competent SQL Developer Coworker: What does it say?
Senior Dev: It says, "Cannot insert the value NULL into column 'person', table 'PEOPLE'; column does not allow nulls..."
*5 minute silence*4 -
Is there automation tool for postgres or mysql to fire a query? I got a db that will reset the row column value after 1 month of the created date
Edit: I know this is not SO
Not clearing the rows, just resetting the value of some rows if the criteria is met12 -
went on contract for an insurance company to build their new platform. looking at the current system, found that they used lookup tables but they were putting the "description" column of the lookup into the main tables. I said that they should be putting a foreign key reference into these tables and the senior developers response... "then it would come up with a number rather than the description when I query the table"3
-
Just learned the previous dev team thought a db column with a value of NULL or "Y" was a great way to handle boolean values.5
-
It is fucking written in rules that SLA would be given post the discussion.
AFTER THE MOTHERFUCKING DISCUSSION.
Bitch can't read a simple English statement.
And in the SLA column, it is clearly mentioned that one must state the DATE. This idiot mentions the entire fucking Quarter.
How fucking dumb you can be to not read the basics mentioned for your own and others ease of functioning.
Indians are illiterate morons. I apologise to the entire world today on behalf of these fragmented cauliflowers.
To whoever this means, I am sorry that you have to deal with these retarded brains.
Also, the task was supposed to be done by others and not the blabbering bitch. She takes up random unwated shit and then cribs to our manager that she is overloaded and Floyd isn't helping.
When I help, she complains that I am overstepping.
Go fuck yourself you mongoose.9 -
Still on the primenumbers bender.
Had this idea that if there were subtle correlations between a sufficiently large set of identities and the digits of a prime number, the best way to find it would be to automate the search.
And thats just what I did.
I started with trace matrices.
I actually didn't expect much of it. I was hoping I'd at least get lucky with a few chance coincidences.
My first tests failed miserably. Eight percent here, 10% there. "I might as well just pick a number out of a hat!" I thought.
I scaled it way back and asked if it was possible to predict *just* the first digit of either of the prime factors.
That also failed. Prediction rates were low still. Like 0.08-0.15.
So I automated *that*.
After a couple days of on-and-off again semi-automated searching I stumbled on it.
[1144, 827, 326, 1184, -1, -1, -1, -1]
That little sequence is a series of identities representing different values derived from a randomly generated product.
Each slots into a trace matrice. The results of which predict the first digit of one of our factors, with a 83.2% accuracy even after 10k runs, and rising higher with the number of trials.
It's not much, but I was kind of proud of it.
I'm pushing for finding 90%+ now.
Some improvements include using a different sort of operation to generate results. Or logging all results and finding the digit within each result thats *most* likely to predict our targets, across all results. (right now I just take the digit in the ones column, which works but is an arbitrary decision on my part).
Theres also the fact that it's trivial to correctly guess the digit 25% of the time, simply by guessing 1, 3, 7, or 9, because all primes, except for 2, end in one of these four.
I have also yet to find a trace with a specific bias for predicting either the smaller of two unique factors *or* the larger. But I haven't really looked for one either.
I still need to write a generate that takes specific traces, and lets me mutate some of the values, to push them towards certain 'fitness' levels.
This would be useful not just for very high predictions, but to find traces with very *low* predictions.
Why? Because it would actually allow for the *elimination* of possible digits, much like sudoku, from a given place value in a predicted factor.
I don't know if any of this will even end up working past the first digit. But splitting the odds, between the two unique factors of a prime product, and getting 40+% chance of guessing correctly, isn't too bad I think for a total amateur.
Far cry from a couple years ago claiming I broke prime factorization. People still haven't forgiven me for that, lol.6 -
Things that seem "simple" but end up taking a long ass time to actually deploy into production:
1. Using a new payment processor:
"It's just a simple API, I'll be done in 2 hours"
LOL sure it is, but testing orders and setting up a sandbox or making sure you have credentials right, and then switching from test to life and retesting, and then... fuck
2. Making changes to admin stats.
"'I just have to add this column and remove that one... maybe like a couple of hours"
YOU WISH
3. Anything Javascript
"Hah, what, that's like a button, np"
125 minutes later...
console.log('before foo');
console.log(this.foo)
etc..2 -
Customers thought it was funny that the obvious abbreviation for for a thing today was "ASS". They joked about that being a column in a menu.
So I did it.
They've got their very own "Ass" menu item in production.7 -
after beginning to learn numpy , i believe these packages were really created by some clown of a circus xD.
Everything is sooooo entertaining!!!
i learned java 3 years ago, but today if i had to crap out some crazy java or c++ expert , i would tell him about numpy's arrays...
Like , "hey dude python has this cool data structure in the numpy library called arrays, which can hold any datatypes in a kind of arraylist like fashion, and you can convert them from 1 dimensional to 1000 dimensional in just 1 line , and also do you know we can select any column with just array[position]? and even this position does not needs to be an integer, you can use a list , like array[[1,2,3]] will give you elements at array[1],array[2],array[3], and...."
wait, why is my friend dead ? xD
HAhahahaha8 -
Zoom:
Client: "my website gets bigger and breaks into a single column layout when I press 'ctrl -' ."
Me:"might it be possible that you pressed 'ctrl +?'"
.....
-__-***2 -
Ok so I was fetching some JSON data from a SQL database server and loading it on the front-end. Every single data is being loaded onto the table except for a single data column, which is empty.
Hmmm... So I go and check my code... everything looks fine.
Then I console.log the JSON (using .stringify() of course), all the values from the table are present in the printed out JSON.
Ok, now I am really pissed.
Long story short...
I had misplaced a single 'i' in the SQL statement, I had included the 'í' (the i-acute) character instead. And since I was using an alias in the query statement, no error was shown.4 -
Working on a database where every column name are acronyms. No, the 2-5 seconds you just saved yourself from typing are not worth it, it’s so easy to make a self-documenting database but you had to fuck that up.1
-
— *draws three overlapping blocks of content*
— it’s not going to shrink on small screens. Maybe we can put them in column for narrower widths?
— NO! They should overlap and I don’t care how you’ll do that!
So I stripped a responsive viewport, now the website is not responsive, but yes, we have “kewl and pwetty overwapping bwocks”, congratulations! -
Can "being lost in Hot Network Questions column of StackOverflow" be a valid reason of late delivery of code?1
-
Got to scratch of one of three remaining old (14years and counting) design mistakes this week.
Together with a colleague we replaced a 1.5 billion row table that I out of ignorance then designed with a 3 column composite primary key instead of an identity column.
Moving the data while keeping all synchronized (the table gets up towards 2 million new rows and 2 million updates a day while constantly being queried) took 1 week.
Just 2 skeletons left to clean out, any year now ;).1 -
A couple of years ago, we decide to migrate our customer's data from one data center to another, this is the story of how it goes well.
The product was a Facebook canvas and mobile game with 200M users, that represent approximately 500Gibi of data to move stored in MySQL and Redis. The source was stored in Dallas, and the target was New York.
Because downtime is responsible for preventing users to spend their money on our "free" game, we decide to avoid it as much as possible.
In our MySQL main table (manually sharded 100 tables) , we had a modification TIMESTAMP column. We decide to use it to check if a user needs to be copied on the new database. The rest of the data consist of a savegame stored as gzipped JSON in a LONGBLOB column.
A program in Go has been developed to continuously track if a user's data needs to be copied again everytime progress has been made on its savegame. The process goes like this: First the JSON was unzipped to detect bot users with no progress that we simply drop, then data was exported in a custom binary file with fast compressed data to reduce the size of the file. Next, the exported file was copied using rsync to the new servers, and a second Go program do the import on the new MySQL instances.
The 1st loop takes 1 week to copy; the 2nd takes 1 day; a couple of hours for the 3rd, and so on. At the end, copying the latest versions of all the savegame takes roughly a couple of minutes.
On the Redis side, some data were cache that we knew can be dropped without impacting the user's experience. Others were big bunch of data and we simply SCAN each Redis instances and produces the same kind of custom binary files. The process was fast enough to launch it once during migration. It takes 15 minutes because we were able to parallelise across the 22 instances.
It takes 6 months of meticulous preparation. The D day, the process goes smoothly, but we shutdowns our service for one long hour because of a typo on a domain name.1 -
Agency hires me to convert a 4 column + sidebar + pattern backgrounds email to responsive, for a big client, I make a redesign, simplifying it (less columns, flat...) to avoid issues, client insists, exactly the same design is needed.
I tell him its almost impossible but I will try, and try, and try, many times, but on their old Outlook, some email parts are not aligned (just that), try, and try, many hours, many days beyond budget... all the times since first explaining that perfection is not possible with all possible email clients, and like 7% is using outlook... At that point, and before, email was so well.
Finally I put an end to this, tell them to pay and leave me alone, as they didn't take my advises and warnings serious, not my fault.
This story is nothing until the discovery I made today: the agency had signed a contract with the client, a bank, in that contract there was the obligation to replicate exactly the same design and should be perfect in all email clients...3 -
To my client who wants a two-column formatted email built with tables in Constant Contact to appear in the same two-column format on mobile devices: You're lying when you say your previous developer achieved a legible, mobile, tiny screen email this way. I know because I can see the previous email formatting. In fact, I cloned that exact email and merely swapped out the content. You really do not understand what you're asking for.4
-
*Debugs a thread synchronization issue in a C program*
*Gives up after few attempts to debug a bootstrap table that’s not showing a column* -
In flutter , there’s something called TextButton.icon. Which render a button look like this :
(👍🏼 Like Button)
But there’s this tiny twat decided to use countless of nested column in a nested row and containers just to create a fucking button! This particular class contains 1438 lines of code! Most of the code are redundant and nested fucking shit.
I want to punch this guy so hard but I do not intend to start a ww3 with china.
That means I have no choice but refactor it as I implement a feature requested by the product team, every components break. It is like a land mine field here. One changes , the entire application crash.
So there are useless mother fucking Sherlock fucking holmes kept telling me that “don’t worry about refactoring now , just complete the task.” , like seriously “how in the name of mother fucking god of all arseholes can I complete my task when I can’t change even one component?”
These people are fucking genius. Their intelligence resurrected Einstein and made him die the second time.3 -
Instead of asking how old people are, how about this:
Post the specs of the first computer you regularly used. I will start.
Tandy 1000 SX. Not one, but TWO 5 1/4" floppy drives. An 8088 CPU and 640K of RAM. The operating system was MS-DOS 3.2, which was always in the A: drive.
We used it to make papers for school in Wordstar, and my parents made spreadsheets in Lotus 1-2-3. We learned to type on it. We played Space Quest, King's Quest, Carmen Sandiego, and Lords of Conquest on it. We transcribed BASIC programs from the, "BASIC Training" column in 3-2-1 Contact magazine.
We LOVED that computer.8 -
YouTube recently introduced a two-column view on their mobile website that is so narrow that only the first three words of video titles are readable.
Epic design fail.
https://imgur.com/a/PbyoMOX5 -
I’m fucking lost.
So, situation. I have a SQL table with about 3M rows (not a lot).
I have indexes. Indexes are used. BUT when I add where clause (On indexed column), it’s super slow. Around 10 seconds.
If I do select * (ALL 3M rows) and THEN I filter then on webserver side, it takes 0.5 seconds.
HOW my manual filtering is faster than DB filtering with indexes? I even tried bubble sort. Bubble sort is faster than SQL ‘where’. HOW ?!
I do not understand….
And if I add group by….. WELL, 25 seconds SQL time. 2 Seconds if I do select all and group by in code manually.
Does not make ANY sense to me.
What am I missing ?21 -
A column of some Soviet newspaper. Top to bottom:
The Atheist’s Page
“The oldest profession”
(Ukrainian tale)
Three people argued over whose profession was the oldest. One of them said:
— Surgeons: without them, god wouldn’t have pulled Adam’s rib out to make Eve.
— Engineers, — the other one interrupted him. — Without them, god wouldn’t have made light.
The third one thought for a while and said:
— No, mine’s older: in the beginning there was darkness, and who spreads darkness? I do!
The third one was a priest.1 -
At work, all errors within the site are logged into our database with a subject and error column. SQL errors are logged in the subject field while the traceback is put in the error column. However, a lot of SQL errors are really large and exceed the max character width of the subject field, causing yet another SQL error, and the cycle repeats. This recursive error has been the bane of my existence, because 1) it times my local dev instance out and 2) the error doesn't end up getting logged because the server both freezes and the error can't be inserted in the database. You can't even begin to imagine how many hours I've wasted trying to find what line I changed cause total and utter failure with absolutely 0 error logging. Next thing on my todo list is to fix this fucking issue since the head dev refuses to get it done.2
-
Needed to update one column in table A with data from table B (huge table).
Created awesome update query with join between the two tables.
A few hours later realized all data in table A is already being imported from table B in a query executed earlier in the process... -
Reporting is not fun..
Scenario 1:
* A user says they need to export certain data from our system..
* Developer W makes report called "Foo detail report"
Scenario 2:
* A user says they need this report to also show some extra fields
* Developer X makes a new report called "Foo detail report (extra fields)"
Scenario 3:
* A user says they need this report to be run with a different search criteria
* Developer Y makes a new report called "Foo detail report (extra fields) by bar"
Scenario 4:
* A user says they need this report show data grouped in a different way
* Developer Z makes a new report called "Foo detail report (extra fields) by bar- new grouping"
The above scenarios happened over and over for several years in no particular order...
Current Day:
* Some users have certain reports they use and rely on but we don't know which ones
* Nobody really knows what all of the reports do or what is the difference between them without looking at the sql
* If we want to change data structures we have many reports to update
* I have a request from a user to add an extra column to one of the reports1 -
Huh? GitHub just added an empty column to my project with an empty item I can't remove, reloading doesn't fix it.
( ་ − ་ ) 'You can't see this item'6 -
I run update without where on mysql console on production database Today.
CLASSIC
Just because I needed to fix database after bug fix on the backend of the application.
I thought I wrote good sql statement after executing it on my local machine and then everything got bad.
Luckily it was only one column with some cached statistics data and I checked that it was not important data before I actually started fixing stuff but still ...
Almost got hard attack afterwards.
Made a script to fix this column and it took me only 15 minutes but still...
Bug was caused in part I got no unit tests and application grow after 3 years of development from simple one for one customer and volumes of documents around 50k to over 40 customers and volumes over 2mil per month, don’t know how many pages each, just in one year after we completed all needed features.
I have daily backups and logs of every api operation but still.
I think this got to far for one backend developer.
I got scared that I will loose money cause I am contractor and the only backend developer working on it.
I am so tired of this right now I think I need a break from work.
Responsibility is killing me so hard right now.
It will take a week to get back to normal.2 -
Holly crap..... Just fixed a 7 months old bug in a system i worked on and had to leave it for 7 months coz i just wasn't seeing what i did wrong and today..... everything simply unraveled
It's a flask app and i got stuck on updating a column in the database and also it created duplicate configs on one of the configuration functionality
Figured out what was causing duplicates
A different function was creating new configs instead of updating...bypassing duplicate checking in the config function2 -
So here I am investigating something our users are claiming. I look up which user the UserId did the change and I see not only the user but also the users password in clear text in a separate field. I thought that field was for a password hint that the user can set up, but I asked around and apparently, no... It's literally the plain text version of the password stored in the database, next to the hash of the password.
Apparently, the users were so impossible to deal with that we added that column and for users that constantly pester us about not knowing their password and not wanting to change it, we added a plaintext password field for them :D2 -
What are the chances that you get busted by your manager and 3 team leaders you personally know when you are going to a job interview?
We have poor men’s silicon valley near universities. Our company’s one office moves to another university. By the one in a million luck, interview takes at the same building where our next office of my current company will be. Managers and team leaders are there to inspect the new office. I enter the building, see them near elevator. One of them see me, with panic i wave my hand to him. There is a distance of ten meters, I hide behind a column. The team leader who sees me waving thinks I am with them to inspect new office. He asks others why am I not coming with them as I learn later. I can not pretend to play along and catch up with them, due to panic and time of interview is soon already. They get into elevator and finally I dont have to hide anymore 😂.
I got into interview and c++ exam with that physcology. Little did they knew that I just completed CPP PRIMER book. I both rock interview and exam but lets see if they will return with a job offer. What a rollercoaster of emotions.
Note: I am on mobile now so can not give more juicy details for now, fingers are tired.3 -
I f&#king hate it here. I am just eyeing to exit as soon as 1 year of my contractual obligation is over. My employer is a good employer. Provides good benefits but I just can't take the bureaucrazy in here. Just yesterday, had to ask another team to deploy objects on our behalf as they are the schema owner. They did it and asked us to review it today. But how? We don't even have manual access to the schema, because we are not the content owner and security! But that's fine, I can always query the catalog views and check the metadata and should be able to conclude the deployment. Right? NOOOO. Because security! Of what? Column names?
Prev rant: https://devrant.com/rants/5145722/...2 -
I'm so lucky.
I have been working off of my usb recently, and been programming something. I had maybe 20 changes I needed to make (some werent big, they were just ui changes, but some needed a new column to be added to a database).
After I had done most of it, and had maybe 4/5 left I started getting this really bad feeling I was going to lose my USB.
I decided to ignore the feeling and just work on it in my next 2 breaks, and when I finally finished it, I uploaded the code to github.
That was yesterday at about 1:20.
This morning I check my bag and my USB is not there.
Holy shit was I lucky, if I hadn't finished my project I would have lost that progress and need to redo it all by tomorrow.
Tldr: I had a feeling I would lose a USB I was working off, but didnt upload my code until I was finished. Haven't seen the USB since uploading the code.2 -
Was just told to put 0 if field doesn’t exist In database instead of marking the column nullable. That is driving me crazy bull and 0 are not the same two different meanings.17
-
Just quickly add this column to live, bro. What? What do you mean you need to write a "proper" migration? It's just a simple extra column I need!1
-
Accidentally drop a column of a table and without realising that take is in production,..... luckily I have backup....
-
Debugging an elusive database query problem. Attached to server process about 10 steps into the call stack trying to figure out why a a column value is not being properly cast. In comes Windows. You picked the most inappropriate time to restart for updates without asking me. Restart VM, authenticate with VPN, wait for 2FA, start up Visual Studio, enter credentials for the millionth time to authenticate with version control since the remember me checkbox doesn't work, open solution. Now where was I? Then Windows pops up a notification to inform me the updates couldn't be installed. The following comic strip comes to mind.
-
Can we all just agree to stop actively imagining progressively harder to parse CSV formatting options? For fucks sake I’ve had to build in tolerance for quoted and unquoted data, combined data and split data, ways to split the data and recombine it, compare every data point, filter some data, only add data, only remove data, base data updates on non Boolean fields in the file, set end point matching based on arbitrary fields, column number matching, header matching, manipulate malformed urls and reassemble the file with proper ones, it goes the fuck on. CSV’s should just be simple and not hard to format. Why does everyone want to try so fucking hard to do bizarro shit?!
-
The ticket system blokes - episode 3
So we always had and have very awful performance with our ticket system. You can't get anything to load in under ~4s normally. Now since it has gotten worse over the last weeks i decided to set aside a few hours to closely watch our SQL server.
After i identified a culprit that was hogging the CPU almost every 2 minutes i looked at other long running queries in the server and found out where exactly the 4s come from.
6 tables from various DBs. Sure, no problem.
Left Outer Join. Sure, why not.
Querying every fucking column in every fucking table explicitly adding up to a whopping 160 columns which they need not even 10% of. We're talking about session IDs, passwords, stock count, IBANs and all that stuff to show the work done on a ticket. Absolutely not.
So i extracted the query and reduced it to the stuff we need and the execution time went from 4 seconds to almost instant.
The funny thing is that their idea of performance optimization is throwing LIMIT around everywhere to get these monstrous queries under control.
So in the next few days I'll have an appointment with their lead programmer. I'm looking forwards to it.
So out of curiosity: does anyone know an SQL builder or toolset that does shit like
SELECT X AS [t0_c0],
SELECT Y AS [t0_c1],
SELECT Z AS [t1_c0],
and so on? I'd like to know how they got to this point.4 -
Oh no.
CalDAV server and client use the same DB table. Server expects a column to be called uri, client expects column to be called url.
FFFFUUUUUU9 -
I just pulled an all-nighter to write an usability testing protocol in Microsoft Word for a medical mobile app.
- statement of consent and privacy declaration; easy: 1 hour
- structuring the protocol and writing the different use cases; easy: 1-2 hours
- layouting the document so the tables don't look like utter shit and adding dotted lines into the columns so the user can write in it without fucking up the whole document when resizing a simple column width; a fucking nightmare: 5 hours
Why is the creation of a nice layout so inefficient to the point where I'd rather design a form in CSS and send it to my printer, get your shit together!3 -
Last year I was asked to optimize a code in our legacy portal (yet to be replaced with the new portal). The legacy system didn't have a design phase. Straight away went to development by whatever developer available at that time.
It was seriously fucked up.
So I went and had a look at the vanilla PHP code that served data for a datatable.
** I nearly fainted **
A query was done to get data from a table without any joins.
Then for loop to display those data.
Then inside for loop, for every single column that gets data from a related table there's a fucking query.
Eg: select * from users where.... to display username. Then again select * from users where..... to display user's email, then another query for his phone number. Then another query to get service providers name, then another to get their phone number.
I think the guy who did it wrote his first hello world app with a bunch of queries and sent it to production. No one bothered to check until 4 years later when it slowed down like a friggin snail.
I'm surprised it even survived that long. -
Sometimes lack of confidence in one area reveals oversight cockyness in stronger areas:
Set up a simple login system from Unity engine to php to mysql db, using android device ID as the login id. Set up database column to accept 32 length varchar for MD5 hashed strings, as I knew the method I was getting the android device ID was automatically being hashed that way and more or less was what I wanted anyway.
Spend 2 days wondering why it would insert the logins with 0 issue, but could never retrieve them. Due to lack of web development and PHP skills, I assumed I was screwing up the handling of mysqli_num_rows() (to check whether I was inserting or selecting in the query) or simply screwing up my SQL queries.
Rewrite the code a few times, even went back to a method I had used in the past.
Today it dawned on me that my testing machines deviceID had been getting trimmed to the 32 character limit. Turns out I didn't account for my workstations device ID to be automatically hashed like the android device id is.
For 2 days I was obtaining and sending a 40 character string to a 32 character limit varchar and blaming my lack of PHP skills........
Back to my niche I go!1 -
While I was exploring multiplication tables I stumbled on something cool.
Take any power of 2 on the multiplication chart.
Now look at the number in the bottom left adjacent box.
The difference of these two numbers will always be a Mersenne number.
Go ahead. Starting on the 2's column of a multiplication table, look in the bottom left of each power of 2 and get the difference.
2-2 = 0
4-3= 1
8-5 = 3
16-9=7
32-17=15
etc.
While the online journal of integer sequences lists a lot of forumlas, I just wrote what came to mind (I'm sure its already known):
((2**i)-(((2**i)/2)+1))
The interesting thing about this is it generates not only the Mersenne numbers, but if you run i *backwards* it generates *additional* numbers.
So its a superset of mersenne numbers.
at i = 0 we get -0.5
i=-1 -> -0.75
i=-2 -> -0.875
i=-3 -> -0.9375
i=-4 -> -0.96875
And while this sequence is *not* mersenne numbers, mersenne numbers *are* in this set.
Just a curious discovery is all.10 -
every fucking time I use Javascript.
(yes, I'm no expert, but I can pick up ANY LANGUAGE and do this task in FIVE FUCKING MINUTES, NOT AN HOUR!!! FUCK!)
"Gee, I think this button should probably list the total recipients of the mailing, looks like I have to get the total of a column in an object, no problem, hell, i'll do it frontside just for the fuck of it'
yeah, seemed like a good idea.. AN HOUR AGO
ARRRGGGH
fucking javascript scope can take a flying leap off of a tall building, and then NOT FALL to the fucking ground because it will fucking tell me that OOPS gravity doesn't exist for javascript!
UNCAUGHT REFERENCE ERROR
right?
FUCK YOU
die from gravity like you deserve motherfucker16 -
¡rant|rant
Nice to do some refactoring of the whole data access layer of our core logistics software, let me tell an story.
The project is around 80k lines of code, with a lot of integrations with an ERP system and an sql database.
The ERP system is old, shitty api for it also, only static methods through an wrapper to an c++ library
imagine an order table.
To access an order, you would first need to open the database by calling Api.Open(...file paths) (yes, it's an fucking flat file type database)
Now the database is open, now you would open the orders table with method Api.Table(int tableId) and in return you would get an integer value, the pointer.
Now for the actual order. first you need to search for it by setting the search parameter to the column ID of the order number while checking all calls for some BS error code
Api.SetInt(int pointer, int column, int query Value)
Then call the find method.
Api.Find(int pointer)
Then to top this shitcake of an api of: if it doesn't find your shit it will use the "close enough" method of search.
And now to read a singe string 😑
First you will look in the outdated and incorrect documentation given to you from the devil himself and look for the column ID to find the length of the column.
Then you create a string variable with ALL FUCKING SPACES.
Now you call the Api.GetStr(int pointer, int column, ref string emptyString, int length)
Now you have passed your poor string to the api's demon orgy by reference.
Then some more BS error code checking.
Now you have read an string value 😀
Now keep in mind to repeat these steps for all 300+ columns in the order table.
News from the creators: SQL server? yes, sql is good so everything will be better?
Now imagine the poor developers that got tasked to convert this shitcake to use a MS SQL server, that they did.
Now I can honestly say that I found the best SQL server benchmark tool. This sucker creams out just above ~105K sql statements per second on peak and ~15K per second for 1.5 second to read an order. 1.5 second to read less than 4 fucking kilobytes!
Right at that moment I released that our software would grind to an fucking halt before even thinking about starting it. And that me & myself and I would be tasked to fix it.
4 months later and two weeks until functional beta, here I am. We created our own api with the SQL server 😀
And the outcome of all this...
Fixes bugs older than a year, Forces rewriting part of code base. Forces removal of dirty fixes. allows proper unit and integration testing and even database testing with snapshot feature.
The whole ERP system could be replaced with ~10 lines of code (provided same relational structure) on the application while adding it to our own API library.
Best part is probably the performance improvements 😀. Up to 4500 times faster and 60 times less memory usage also with only managed memory.3 -
Am I the only one who gets intimidated when shit its roof?
Yesterday, during crucial business hours, one of the major OMS db column type got overflowed. Caused around 30 mins downtime and then later, pool of all connections with high concurrent requests flushed down stream which caused thunder herd.
One by one.. all services went down; Fucking java service couldn't even start because of load..
This is the moment I fell in love with GoLang. We shard request using GoLang service, it just started and picked up the load beautifully..
At the end, it is around 6 millions business loss, but a good lesson learned :) -
Best client I have ever experienced. Kappa
So, I got job to recreate one old website, because the old one was incredibly fucked up. She told us, it was made by someone retarded.
The code was fucked up even more than UI. It was definitely written by some kind of idiot. Diacritics, mixed languages, no OOP, no FW, just copy&paste. Yeah copy and paste for every page.
The DB was another level of shit. Inifine is not enough to describe it. Column names with whitespace, diacritics, uppercase, lowercase...pure hell. Yeah and I had to import it.
Whenthe new website was ready for testing I got an email from her that it was her who made the website... HER!! Fucking hell, no more of this please!1 -
I hate it when managers and team members don't utilise JIRA as the one source of truth.
When you move your card into the Review column, set the assignee to `unassigned` so that people know to pick it up. It's so much easier to understand the state of it !
"But then we don't know who's worked on it" - is NOT a valid reason to leave the original author as the assignee. It just leads to work not being reviewed. -
Refactoring/cleaning old code.. Found this gem:
$hour = substr($obj->hour, 0, - 3);
Turns out, hour was saved in the database as a TIME field(DATE was saved in another column) , and the previous genius dev was trying to output time in a H:i format...
No wonder php has such a bad reputation...2 -
In an IT management class, the professor wanted us to estimate the operation costs for a small IT company, breaking them down by service offered. I remember creating a markdown file, multiple times executing the line `echo $RANDOM >> estimations.md`. We rounded the numbers slightly, pimped the document a bit and submitted a nice PDF. When we had to present our work, the professor asked us how we had proceeded to calculate those results. We told him a story about an Excel file we worked on, but did not submit, because we thought he'd be interested in the end result and not care about those details. He asked us to submit that Excel calculation, because he wanted to comprehend our method. So we got together, created an Excel sheet, copied our "estimations" into column C and called it "service cost". For column B, we used the same "cost per man hour" value (scientifically estimated using the RAND() function) for every row. Finally, we divided the "service cost" by the "cost per man hour" for every row, put the result in column A and called it "effort (in man hours)". The professor, being able to "reproduce" our estimation, accepted our solution.2
-
Turns out `white-space: nowrap` takes priority over every single other layout property used to constrain width and overflow, including these:
overflow
width
max-width
grid-template-column
But hey, CSS doesn't suck, you're just bad at it!4 -
I really hate PHP frameworks.
I also often write my own frameworks but propriety. I have two decades experience doing without frameworks, writing frameworks and using frameworks.
Virtually every PHP framework I've ever used has causes more headaches than if I had simply written the code.
Let me give you an example. I want a tinyint in my database.
> Unknown column type "tinyint" requested.
Oh, doctrine doesn't support it and wont fix. Doctrine is a library that takes a perfectly good feature rich powerful enough database system and nerfs it to the capabilities of mysql 1.0.0 for portability and because the devs don't actually have the time to create a full ORM library. Sadly it's also the defacto for certain filthy disgusting frameworks whose name I shan't speak.
So I add my own type class. Annoying but what can you do.
I have to try to use it and to do so I have to register it in two places like this (pseudo)...
Types::add(Tinyint::class);
Doctrine::add(Tinyint::class);
Seems simply enough so I run it and see...
> Type tinyint already exists.
So I assume it's doing some magic loading it based on the directory and commend out the Type::add line to see.
> Type to be overwritten tinyint does not exist.
Are you fucking kidding me?
At this point I figure out it must be running twice. It's booting twice. Do I get a stack trace by default from a CLI command? Of course not because who would ever need that?
I take a quick look at parent::boot(). HttpKernel is the standard for Cli Commands?
I notice it has state, uses a protected booted property but I'm curious why it tries to boot so many times. I assume it's user error.
After some fiddling around I get a stack trace but only one boot. How is it possible?
It's not user error, the program flow of the framework is just sub par and it just calls boot all over the place.
I use the state variable and I have to do it in a weird way...
> $booted = $this->booted;parent::boot();if (!$booted) {doStuffOnceThatDependsOnParentBootage();}
A bit awkward but not life and death. I could probably just return but believe or not the parent is doing some crap if already booted. A common ugly practice but one that works is to usually call doSomething and have something only work around the state.
The thing is, doctrine does use TINYINT for bool and it gets all super confused now running commands like updates. It keeps trying to push changes when nothing changed. I'm building my own schema differential system for another project and it doesn't have these problems out of the box. It's not clever enough to handle ambiguous reverse mappings when single types are defined and it should be possible to match the right one or heck both are fine in this case. I'd expect ambiguity to be a problem with reverse engineer, not compare schema to an exact schema.
This is numpty country. Changing TINYINT UNSIGNED to TINYINT UNSIGNED. IT can't even compare two before and after strings.
There's a few other boots I could use but who cares. The internet seems to want to use that boot function. There's also init stages missing. Believe it or not there's a shutdown and reboot for the kernel. It might not be obvious but the Type::add line wants to go not in the boot method but in the top level scope along with the class definition. The top level scope is run only once.
I think people using OOP frameworks forget that there's a scope outside of the object in PHP. It's not ideal but does the trick given the functionality is confined to static only. The register command appears to have it's own check and noop or simply overwrite if the command is issued twice making things more confusing as it was working with register type before to merely alias a type to an existing type so that it could detect it from SQL when reverse engineering.
I start to wonder if I should just use columnDefinition.
It's this. Constantly on a daily basis using these pretentious stuck up frameworks and libraries.
It's not just the palava which in this case is relatively mild compared to some of the headaches that arise. It's that if you use a framework you expect basic things out of the box like oh I don't know support for the byte/char/tinyint/int8 type and a differential command that's able to compare two strings to see if they're different.
Some people might say you're using it wrong. There is such a thing as a learning curve and this one goes down, learning all the things it can't do. It's cripplesauce.12 -
I'm going insane.
My colleague wanted to sort an excel spreadsheet and got an error. "Can't sort, column width must match" (or something along the lines) . Which basically means you got non uniformly merged cells.
Without telling me this, he asked for training on how to change column width precisely, after spending 30 minutes explaining he done just that. Column by column for all 40 columns he did just that. Resized to 10 of something (no one really knows what those width numbers in Microsoft Excel really mean) and try to sort.
I Shit you knot, he got the exact same error and flipped out angry at me for creating a shitty system (I think he spent an hour or two total with double and triple checking the sizes)
I did laugh because of this, but I do feel bad for not asking what was the real reason before all of this.1 -
Me: Open Jira. See 8 point story skip QA column and move into Done.
Ask dev why it didn’t go through QA.
Teammate: Oh, did they want to test this?
Commence argument that **all** stories need to go through QA. -
I can't convince my team that a good database model promotes a good API design and a good UI/UX experience.
Instead, I have to work with a ridiculous table setup.
Imagine, if you will, a table (table B) that references another table (table A) via a foreign key. The FK is a string in both tables. And table A only has one column, which is labeled as "name".
The schema i have to look at it kind of like this:
Table parent
Name varchar(10) primary key
Table child
Name varchar (10),
parent_name varchar(10),
Foreign key (parent_name) references parent (name)
Sorry if the syntax is wrong, a little frustrated having to look at it...
Am I crazy to want to change this table design? Am I missing something? I feel like I'm taking crazy pills, because this is just scratching the surface of the problems I have to deal with.7 -
My bash history today:
man column
🤦♂️ I suppose if the wife is curious about what I do all day, she’s likely not going to search my terminal history 😂4 -
Fucking unreal bro!!! I’m working on an issue and I pushed, then there was a bug, i fixed it again, another issue for the UI change, another fixed for sorting column. All that fixed I created separate branch. My boss called me and told me im stupid for creating a separate branch everytime on a simple fix, he told me that Git isnt used that way. He told me that his been doing this 30years already. So I asked isnt it the best practice to create a separate branch on every issue or if the branch has been merged? His answer is no. Fuck this guy and his 30years experience
I should’ve responded:
First of all, if we have a test suite then I would have notice that error but we dont. You dont even want to upgrade ruby and rails. We’re stuck at version 4 on rails. Second why are you merging my MR and reviewing it on IST? Why didnt you do that locally so you can address the issue before you merged? Third fuck you and your 30years
My actual response is:
Ahh yes sir, im sorry wont happen again, my bad, sorry for that mistake.
Fuck bro im mad!!!!4 -
In SQL Management Studio, why is the Identity Specification so low in the column properties list?! It's so annoying to scroll and find it.
Is this punishment for using the GUI?1 -
I developed an Android app that authenticates users via HTTP. Because it's an internal use app for employees only, we are in charge of unsubscribe the users that have access to the app in case they leave the company; all we have to do is update a bit column in one DB table and that's it, nothing complicated. My manager thought it was a good idea to develop an entire "front-end" website to make this task "easier", and yes, I am the one he put in charge of doing this, even though I work in the company as an Android dev, not a web dev. Making this site would be really simple and it'd only take a few hours of effort, but I find it really stupid and a waste of time coding a whole website to achieve a goal that only takes one freaking SQL sentence and no real clients using it. I don't know if, in fact, this is a stupid and useless idea, or I'm being a dick and have no reasons to blame my manager and bitch about it.4
-
Sharing a first look at a prototype Web Components library I am working on for "fun"
TL;DR left side is pivot (grouped) table, right side is declarative code for it (Everything except the custom formatting is done declaratively, but has the option to be imperative as well).
====
TL;DR (Too long, did read):
I'm challenging myself to be creative with the cool new things that browsers offer us. Lani so far has a focus on extreme extensibility, abstraction from dependencies, and optional declarative style.
It's also going to be a micro CSS framework, but that's taking the back-seat.
I wanted to highlight my design here with this table, and the code that is written to produce this result.
First, you can see that the <lani-table> element is reading template, data, and layout information from its child elements. Besides the custom highlighting code (Yellow background in the "Tags" column, and green gradient in the "Score" column), everything can be done without opening even a single script tag.
The <lani-data-source> element is rather special. It's an abstraction of any data source, and you, as a developer can add custom data sources and hook up the handlers to your whim (the element itself uses the "type" attribute to choose a handler. In this case, the handler is "download" which simply sends a fetch request to the server once and downloads the result to memory).
Templates are stored in an html file, not string literals (Which I think really fucks the code) and loaded async, then cached into an object (so that the network tab doesn't get crowded, even if we can count on the HTTP cache). This also has the benefit of allowing me to parse the HTML templates once and then caching the parsed result in memory, so templates are never re-parsed from string no matter how many custom elements are created.
Everything is "compiled" into a single, minified .js file that you include on your page.
I know it's nothing extraordinary, but for something that doesn't need to be compiled, transpiled, packaged, shipped, and kissed goodnight, I think it's a really nice design and I hope to continue work on it and improve it over time1 -
helping colleagues like a troll:
AAA: anyone know what the blabla_type_id column is for in the trololo table please?
AAA: oh and blabla_order while we're at it :)
BBB: ask AAA .... he always knows these
AAA: :)
ME: I would say the first one is id of blabla type and the second one blabla order, isnt it? :)
AAA: you two should work in support :)
#yourewellcome #allwaysapleasure2 -
I fear that in the future there will only be 2 possibilities as software developer
either work for pennies out of passion while others profit off your work as more and more open source developers do
or work in a dipshit heavy environment with soul-less automatons who look only to maximize a column or another in a spreadsheet until they are ready to retire and die6 -
So there is this program with legacy code from 15 years ago the client is in love with. Every time we try to accomplish something it proves that the mf who wrote it was so lazy and incompetent that he should have never chosen this profession. Goto, one-two letter for type and variable names. Dude even wrote an ascii decoder as if he would be payed for lines of code. Today we found a code where a rows of data was misindexed by one (we incorrectly assumed that we could extract some data from it but the column we wanted to use was just there for decoration, it was not actually used). the calculations the system uses are replicated for each interface with duplicate lines of code so the same binary data can show different values because of the multipliers.
If I could I woukd go back in time and bang the guy's head to the desk emphasising each word like "You - should - quit - and - never - ever - write - code -again"6 -
delete random, unused column from production database
entire app blows up
re-release last change on code pipeline
everything works beautifully
¯\_(ツ)_/¯2 -
Here's something that should be an unspoken rule in the dev space:
DON'T MAKE A LESSON OF YOUR TEAMMATE'S MISTAKES (OR WHAT YOU CONSIDER A MISTAKE).
More context:
I defined a column as `mediumText` in a Laravel app. What the asshole team lead did after seeing that in my PR, is taking that snippet and blast that out in the company dev slack channel on full display, saying - "Guys we shouldn't take more space in the database than we need to. If the value for the column would be < 255 characters please take VARCHAR not MEDIUMTEXT".
I mean, what an asshole !!! You could've told me that privately and I'd have happily changed it. The reason I did so, is to be safeguard myself from the future, in case the value length increases or decreases. Last thing I want to see in the logs is "Column size is too short for column {COLUMN}, value truncated".
But nah nah, let's take a screenshot of that snippet and `teach` everyone else what should and shouldn't be done according to your `standards`.
Fucking piece of shit team lead.16 -
Why the fuck do coding blogs insist on using themes with a 600px content column, then use code samples that are 3x wider than that? The whole reason I have a widescreen monitor is to not _have_ to scroll, jackass!1
-
If you're into IT and you know Java as a fresher, you are gonna get a bunch of openings.
As you go through the advertisement, you get that smile on your face thinking I got that one.
Then you come down to the experience column and it says a minimum of 2 years on the job-type development.
That smile now suddenly turning into a frown...
And you still go on reading and it says No Incentives and Bonuses during the Probation period
And the final nail to the coffin of your happiness...Salary just 20K a month!
You, be like- Am I a joke to you?
And the Employer, be like :16 -
The Zen Of Ripping Off Airtable:
(patterned after The Zen Of Python. For all those shamelessly copying airtables basic functionality)
*Columns can be *reordered* for visual priority and ease of use.
* Rows are purely presentational, and mostly for grouping and formatting.
* Data cells are objects in their own right, so they can control their own rendering, and formatting.
* Columns (as objects) are where linkages and other column specific data are stored.
* Rows (as objects) are where row specific data (full-row formatting) are stored.
* Rows are views or references *into* columns which hold references to the actual data cells
* Tables are meant for managing and structuring *small* amounts of data (less than 10k rows) per table.
* Just as you might do "=A1:A5" to reference a cell range in google or excel, you might do "opt(table1:columnN)" in a column header to create a 'type' for the cells in that column.
* An enumeration is a table with a single column, useful for doing the equivalent of airtables options and tags. You will never be able to decide if it should be stored on a specific column, on a specific table for ease of reuse, or separately where it and its brothers will visually clutter your list of tables. Take a shot if you are here.
* Typing or linking a column should be accomplishable first through a command-driven type language, held in column headers and cells as text.
* Take a shot if you somehow ended up creating any of the following: an FSM, a custom regex parser, a new programming language.
* A good structuring system gives us options or tags (multiple select), selections (single select), and many other datatypes and should be first, programmatically available through a simple command-driven language like how commands are done in datacells in excel or google sheets.
* Columns are a means to organize data cells, and set constraints and formatting on an entire range.
* Row height, can be overridden by the settings of a cell. If a cell overrides the row and column render/graphics settings, then it must be drawn last--drawing over the default grid.
* The header of a column is itself a datacell.
* Columns have no order among themselves. Order is purely presentational, and stored on the table itself.
* The last statement is because this allows us to pluck individual columns out of tables for specialized views.
*Very* fast scrolling on large datasets, with row and cell height variability is complicated. Thinking about it makes me want to drink. You should drink too before you embark on implementing it.
* Wherever possible, don't use a database.
If you're thinking about using a database, see the previous koan.
* If you use a database, expect to pick and choose among column-oriented stores, and json, while factoring for platform support, api support, whether you want your front-end users to be forced to install and setup a full database,
and if not, what file-based .so or .dll database engine is out there that also supports video, audio, images, and custom types.
* For each time you ignore one of these nuggets of wisdom, take a shot, question your sanity, quit halfway, and then write another koan about what you learned.
* If you do not have liquor on hand, for each time you would take a shot, spank yourself on the ass. For those who think this is a reward, for each time you would spank yourself on the ass, instead *don't* spank yourself on the ass.
* Take a sip if you *definitely* wildly misused terms from OOP, MVP, and spreadsheets.5 -
So I did this https://devrant.io/rants/797965/... which works fine until medium sized data.
However for large data the ETL pegs a 6 core Xeon (2.2GHz) with 50GB of ram. Because of it ends up doing six threaded compares, so 12 different data sets. Other than "pull less data", any tips?
Code (C#) is basically a Linq multi column join between two DataTables and when the compared columns don't match it returns as a var which is turned into a third DataTable to be SqlBulk loaded into the DB.
Table1 is external API return data (no windowing) and Table2 is from our DW.7 -
Is it just me or the so-called Cloud (or more accurately not our servers) allowed terribly inefficient technologies to exist as backends? Just google "clear grpc benchmark reddit" - I think there should be another column "price per hour in AWS for given resource usage". (sorry, can't post links yet)13
-
Working on a webpage. Using Flexbox for a 1-column layout. Now I need to display two Divs next to each other and I regret every lifechoice.
Why is it such an impossible task to put two divs in perfect alignment next to each other. Why oh lord have thou forsaken me.14 -
Print("Hello World")
When people design a brand new Postgresql schema (case sensitive) using a mix of upper and lower case letters.
Only to then proceed and escape every single table and column name in every single query.1 -
Managed to derive an inverse to karatsuba's multiplication method, converting it into a factorization technique.
Offers a really elegant reason for why non-trivial semiprimes (square free products) are square free.
For a demonstration of karatsubas method, check out:
https://getpocket.com/explore/item/...
Now for the reverse, like I said something elegant emerges.
So we can start by taking the largest digit in our product. Lets say our product is 697.
We find all the digits that produce 6 when summed, along with their order.
thats (1,5), (5,1), (2,4), (4,2), and (3,3)
That means for one of our factors, its largest digit can ONLY be 1, 5, 2, 4, or 3.
Lets take karatsubas method at step f (in the link) and reverse it. Instead of subtracting, we're adding.
If we assume (3,3)
Then we take our middle digit of our product p, in this case the middle digit of 697. is 9, and we munge it with 3.
Then we add our remaining 3, and our remaining unit digit, to get 3+39+7 = 49.
Now, because karatsuba's method ONLY deals with multiplication in single digits, we only need to consider *at most* two digit products.
And interestingly, the only factors of 49 are 7.
49 is a square!
And the only sums that produce 7, are (2,5), (5,2), (3,4), and (4,3)
These would be the possible digits of the factors of 697 if we initially chose (3,3) as our starting point for calculating karatsubas inverse f step.
But you see, 25 can't be a factor of p=697, because 25 is a square, and ends in a 5, so its clearly not prime. 52 can't be either because it ends in 2, likewise 34 ending in 4.
Only 43 could be our possible factor of p.
And we *only* get one factor because our starting point has two of the same digit. Which would mean p would have to equal 43 (a prime) or 1. And because p DOESNT (it equals 697), we can therefore say (3,3) is the wrong starting point, as are ALL starting points that share only one digit, or end in a square.
Ergo we can say the products of non-squares, are specifically non-prime precisely because if they *were* prime, their only factors would HAVE to be themselves, and 1.
For an even BETTER explanation go try karatsuba's method with any prime as the first factor, and 1 as the second factor (just multiply the tens column by zero). And you can see why the inverse, where you might try a starting point that has two matching digits (like 3,3), would obviously fail, because the values it produces could only have two factors; some prime thats not our product, or the value one, which is also not our product.
It's elegant almost to the level of a tautology. -
and this is why you dont let a first timer build your database....
"has 34 column names in index key list. The maximum limit for index or statistics key column list is 16"4 -
Why the FUCK did I decide to get this EXPENSIVE ASS MECHANICAL KEYBOARD before examining it to see if its software had non-windows support? THE SHIT IS WINDOWS ONLY AND IT WON'T RUN IN WINE!!! Okay, sure, there's an SDK, a C++ SDK. So I decide to download it and then... the "ReadMe.txt" looks like this:
(§@) Example•ÿø˝§∫®Á:
1.Ωd®“∞ı¶Êƒ“
2.Ωd®“Source Code;
3.Ωd®“ª°©˙
(§G) SDK •ÿø˝§∫≤[
1. CoolerMaster LED Table.xls : LED Øx∞}™Ì(6 row x 22 Column)
2. SDK Function.doc :¥£®—™∫®Á¶°ª°©˙
3. x86•ÿø˝: ∞ ∫A≥sµ≤®Á¶°Æw°B Lib¿…§Œº–¿Y¿…
3. x64•ÿø˝: 64 bit ∞ ∫A≥sµ≤®Á¶°Æw°B Lib¿…§Œº–¿Y¿…
I FEEL FUCKING CHEATED! WHAT THE FUCK AM I SUPPOSED TO DO NOW?!?!?!?!? THIS SHIT HAS NO VISIBLE DOCUMENTATION!!!15 -
Oh this defect is great!
Inherited an app that allows people to type in the name of their beneficiary in a form.
The database column is varchar(50) and the form has no size limit...beautiful2 -
Something I discovered at work today:
A sub procedure that takes three arguments:
A table name
Column list
Where clause
It concatenates all of those values together and executed the dynamically generated query.
Why??????????6 -
I'm having to use MS Word again today, and yet again I want to punch my computer in the balls, and frankly I could pull a better piece of software out of a pig's arse.
So there is a feature that automatically adds up the figures in a column to give you a total. Useful, right?
No. Because the total doesn't update automatically. There is even a setting somewhere to have it update before save, and when you turn this setting on, it sometimes updates before save depending on what mood it's in.
You can have it reliably update before you "print to pdf", but not before you "save as pdf".
Fine, there's probably another setting buried somewhere that actually works, but why the fuck is it not turned on by default? What kind of moron wants an automatic total that doesn't update automatically?
I first encountered this feature about 20 years ago, and in all that time none of the thousands of developers at MS has thought "this is shit, let's fix it."
But that's what a developer does, surely. They look at things and say "this is shit, let's fix it".
If you've been looking at something that's so obviously shit, and so easily fixed, for 20 years and not had any urge to fix it, you're not a developer, you're a cretin.
The stupidity cries out from the earth for vengeance.5 -
wtf boss!!!! Is it so hard to understand that having one column per year is a horrible bad practice?9
-
There's very little good use cases for mongo, change my mind.
Prototyping maybe? Rails can prototype, create/update/destroy db schemas really quickly anyways.
If you're doing a web app, there's tons of libs that let you have a store in your app, even a fake mongo on the browser.
Are the reads fast? When I need that, use with redis.
Can it be an actual replacement for an app's db? No. Safety mechanisms that relational dbs have are pretty much must haves for a production level app.
Data type checks, null checks, foreign key checks, query checks.
All this robustness, this safety is something critical to maintain the data of an app sane.
Screw ups in the app layer affecting the data are a lot less visible and don't get noticed immediately (things like this can happen with relational dbs but are a lot less likely)
Let's not even get into mutating structures. Once you pick a structure with mongo, you're pretty much set.
Redoing a structure is manual, and you better have checks afterwards.
But at the same time, this is kind of a pro for mongo, since if there's variable data, as in some fields that are not always present, you don't need to create column for them, they just go into the data.
But you can have json columns in postgres too!
Is it easier to migrate than relational dbs? yes, but docker makes everything easy also.11 -
Whaaaaat! You mean to tell me that setting grid-column-gap and grid-row-gap to 1em will make them both 1em? I really did not realize this thanks for clarifying! Is this really a bridge???
https://markus.oberlehner.net/blog/...3 -
The database column contains values, yet there is nothing in the code that inserts or updates the values in that column.
I'm not sure if the original author of this program wrote bad code or was some kind of malicious wizard. What I do know is that it scares me.5 -
We have 4k Monitors and SSDs with more than 120 GB, why there are still new projects that use a formatting style that doesn't have a clear relation of the opening { and corresponding closing }. i.e. put them either on the same line or column?
Please don't write code where the imaginary line between the { and } goes diagonally over other parts of the code. It makes it unreadable and my brain hurts from looking at it. Its better to have readable code and "waste" some lines and bytes for code that is easier to read.10 -
When the database you have to deal with has values in the type column that end with a whitespace...2
-
YAML: "The error appears to have been in [file] : line 47, column 7, but may be elsewhere in the file depending on the exact syntax problem." Shoot me.1
-
I feel with @gipsydanger
I had to work with snake case columns with a maximum name length of 16 characters. Abbreviations, acronyms and undocumented adfixes. The ORM models were generated with resolved pendants of the column names. There are typos in name resolving and some adfixes were used with different understandings which result in completely wrong field/property names for the ORM. As this ORM class generating process is separated from migrations some people did not care or check on the ORM.
Previous rant https://devrant.com/rants/1461563/1 -
Is it asking too much that a state agency use any kind of naming convention in their data management? I've come across about 7 different column names that all contain a value representing the number of students. Trying to decide whether I should send a deluge of tickets at their help system by submitting a ticket for every single row that contains any type of error.1
-
All I needed to do was temporarily change a 4 row by 5 column css-based <div> layout to a 2 row by 3 column css-based <div> layout. The layout is now right but links don’t work for no damned apparent reason. I really really really really really suck at my job as a coder and I just need to go live in a cave and never, ever touch a computer again.5
-
Update on my GitHub ( Classic ) project.
Now one item / note / .. is stuck?
If I try to move it to any other column
it just snaps right back (( ༎ຶ‿༎ຶ )) -
I'm currently working on a new (for me) legacy database that store percentile numbers in a varchar column . Seriously who the fuck had the that brilliant idea!!!4
-
I'm making an interface where I have a few columns, much like Trello. In each column there are cards. I want the user to be able to drag these cards an place them in any column, in any order they want. The problem is that at the same time they should be able to sort each column on date or whatever. Do you guys have any ideas on how to deal with the clash between custom sorting and auto sorting? Like what happens when you're in date sorting, and you change the order of the cards?
The implementation/programming is no problem. I just need help to figure out the interaction logic behind it.
Thanks... :)5 -
Rough night yesterday for my coworker who has forgotten we can't write code past column 72 and that col 80 is the end of the line.3
-
Code for Matrix Rain Using HTML
<!DOCTYPE html>
<html>
<head>
<title>Matrix Rain</title>
<style>
* {margin: 0; padding: 0;}
body {background: black;}
canvas {display: block;}
</style>
</head>
<body>
<canvas id="c"></canvas>
</body>
<script>
var c = document.getElementById("c");
var ctx = c.getContext("2d");
//making the canvas full screen
c.height = window.innerHeight;
c.width = window.innerWidth;
//english characters
var english = "1001010101110101010101010010101000101011101111010101010110101010101010101110000101";
//converting the string into an array of single characters
english = english.split("");
var font_size = 15;
var columns = c.width/font_size; //number of columns for the rain
//an array of drops - one per column
var drops = [];
//x below is the x coordinate
//1 = y co-ordinate of the drop(same for every drop initially)
for(var x = 0; x < columns; x++)
drops[x] = 1;
//drawing the characters
function draw()
{
//Black BG for the canvas
//translucent BG to show trail
ctx.fillStyle = "rgba(0, 0, 0, 0.05)";
ctx.fillRect(0, 0, c.width, c.height);
ctx.fillStyle = "#0F0"; //green text
ctx.font = font_size + "px arial";
//looping over drops
for(var i = 0; i < drops.length; i++)
{
//a random chinese character to print
var text = english[Math.floor(Math.random()*english.length)];
//x = i*font_size, y = value of drops[i]*font_size
ctx.fillText(text, i*font_size, drops[i]*font_size);
//sending the drop back to the top randomly after it has crossed the screen
//adding a randomness to the reset to make the drops scattered on the Y axis
if(drops[i]*font_size > c.height && Math.random() > 0.975)
drops[i] = 0;
//incrementing Y coordinate
drops[i]++;
}
}
setInterval(draw, 33);
</script>
<body>
</html>1 -
Teaching a colleague to use INDEX / MATCH in Excel
Me: Type in =MATCH() and select the reference cell, the column its in, and put 0 for the last value.
Them: OK... Done
Me: Now type in =INDEX() and select the column you want to match with, then put in the value you got from MATCH()
Them: OK... Done
Me: Now combine the two formulas
Them: How?
Me:...1 -
Fuck this shit! We had bug on website when tinymce was showing broken tables and could not save them correctly. So, the first thing you think about is tinymce is fucked up and you have to either upgrade, downgrade or fix it fucking yourself. Well, I spend more than hour tryingto figure this out. Then I found out that some fucker set column length in DB where data are stored to varchar 800!!! WTF, are you fucking serious?
-
I want to know the name of the evil mastermind who once conceived the "literal" function in Sequelize.
- You design a method to insert pieces of raw SQL exactly the way they are written, no further processing
- You release this method, you call it LITERAL to make sure people know its intended purpose: it is used to insert LITERALLY everything you write, nothing more and nothing less
- Then make sure this "literal" method changes the fucking case of column names. Because that's what "literal" means in the head of this rabid animal: you arbitrarily change the code written by the developer
WHY
WHY ARE ALL AR ORM DESIGNED BY FUCKING ANIMALS
ELOQUENT IS TRASH, SEQUELIZE IS TRASH, TENS OF DEVELOPERS AT WORK TO ALCHEMICALLY CREATE THE MOST ROTTEN CODE THEY POSSIBLY CAN, BECAUSE YOU MUST NOT BE ALLOWED TO WRITE ANY QUERY MORE ADVANCED THAN "SELECT * FROM users WHERE id =1", NOT A FUCKING SHRED OF DOCUMENTATION AND 16 MILLION LAYERS OF ABSTRACTION TO MAKE SURE EVERY BUG FUCKING STAYS THERE, DON'T YOU DARE TO USE A JOIN, DON'T YOU DARE TO TREAT A DMBS LIKE AN ACTUAL FUCKING DBMS INSTEAD OF A HOT STEAMING PILE OF METHODS IMPLEMENTED BY MONKEYS.6 -
> Can you help me make this excel document more readable when it's printed? *looking to change the text size and column widths*
Who do you think I am, Mr fucking clippy? Why are you printing it anyway? Step into the millennium and email it to them you fucking nugget, save the planet.
This was after three people already approached my desk in a line, five minutes after I got in. All asking stupid questions, which not only do they have a service desk for but could quite easily Google. -
A lady that I have been talking to suddenly went radio silent on me. And refused to answer my messages and calls.
Anyhow, I blocked her and deleted her contact but I’m so heartbroken. I hope I recover from this heartache. It’s so close. I thought it was gonna work. I thought this was the one.
This is just why I love computers. When you mess up, they tell you you mess up and even point to the line and column. Humans are damn difficult.4 -
Client: Can't you make the autoload column in wp_options 1/0 so it loads quicker?
Me: So you want me to redevelop WordPress? Or build you a custom platform?3 -
Alright... maybe it's time to call it quits...
NLegs changed the ID structure... The URL is like
http://.../yyyy/MM/dd/id.html
Before id was unique... so thats what I have in my DB, the ID column is int. primary key.
Now id by itself is no longer unique...
---
Actually no.... After changing the code to just pick the next ID (like autonumber) and check uniqueness using the url...
It turns out actually the "new issues" are old.... they just changed which image to show in the front page thumbnails...5 -
My company got a project from a client to maintain it. I checked the database and found there's a column named "Sorry_Created_Extra".
I just saw my near future clearly at that moment.2 -
So this happen to me today ....
I was hired some time ago to a company to make an App for Android and the app must interact with the Software of the company ...
There was needed to add some column into a table of the SQL DB for some features of the app to work better and an update as been submitted for the software (to be created the table) also. We told the IT department that they need to update the software first then the app on the android and start testing the new features on it ... they come to me and start complaining that the app didn't work as intended .... after 2 hour's trying to figure out what was the dam problem a thing come into my mind .... and I did ask if they did what was saying in the email, if they did update the software first then the app, and of course they only did update the app ...
Moral of the story, never assume that IT or other people it will do as it was instructed for the software work properly.
P.S. Sorry for my bad English :D1 -
!Rant
How do you all store photos on your site?
Personally, I setup a unique directory for each users, user table has directory name column and every photos that they upload are store in there. Any other ways?2 -
How resource calculations for software services like code analysis, monitoring, etc are done:
Opening fridge, putting all the beer one can find in it.
Opening the necessary tools, e.g Excel, Accounting software, ....
Drinking the first beer.
Starting to aggregate the monthly costs - cause you can never trust the reports written by someone else...
First beer poof.
Looking at the monthly cost, adding columns "Intended use", "Actual usage pattern", "Usage factor"...
Opening next beer...
Usage factor is btw a factor of 0.1 ... 1.0 - to give an estimate how much the products feature are actually used, for further analysis if the invest is justified or not...
Oh. Another half bottle gone...
Filling in the columns...
Oh. Bottle empty and the next one toooooooooooooooo...
*burping*
*cracking finger joints*
Now let's get to the sad part...
Next worksheet, adding infrastructure costs...
Cost and description as columns.
Hehe. Column sounds like gollum.
Another beer...
Ugh. Need the paper reports, manually typing off things for stuff that was e.g. tax deductible.
Many beers die during this task. Poor little beers, dying for such an boring and mundane task...
SUM is a real useful function. I don't think I can add numbers anymore.
Now we can add another sheet.
Hehe. Sheet sounds like shit. And yes, everything in this file is shit.
Summing up costs from both sheets and including the cost factor from 1
... Beeeeeeeer Beeeeer beer we need more beer here... Beer beer beer...
Where was I. Oh yeah. Cost factorization total vs effective.
Why do I want to get even more drunk.
Oh yeah. Most software is completely underused and the costs aren't justified.
Let's add some colored highlighting ...
Uuuuh. ,Too much red. Better change the highlights.
Too much red.
More beer.
Don't give a fuck.
Hm.
Time for some whiskey.
What else is there to do....
Oh yeah.
Diagrams.
The bloody wankers from accounting need diagrams as numbers are too boring.
Not that everything in accounting is boring, no matter how much you paint colors on it... *sigh*
Hm. More whiskey...
Hehe. Whiskey rhymes with frisky.
Uff. Now just need to write mail. Mail mail mail....
"Copy paste the last mail from last month"
Hm.
Ah.
*sipping whiskey*
Spell check extension - to the rescue.
Thesaurus *burps*.
Let's change a few words here and there... Maybe another paragraph there.
Uh....
Trying to attach file...
*fucking mouse is pretty constantly crashing into empty beer bottles*
Done.
Damn.
Need to press send button.
*Creating mess on the desk by just randomly crashing the beer bottles*
Done.
*Pressing computers power button*
Mwahahahaha. No mouse needed.
*regretting to stand up too quickly, nearly barfing on the floor*
Couch ... Where Couch...
After hitting several doors, frames and other stuff, the glorious mission ended successfully with a most graciously executed gut buster on the couch.
(Regretting next morning to have emptied two 6 packs and a few glasses of whiskey) -
Probably pure coincidence but if you look at the deconstruction of the dedekinds like so:
>>> decon(6)
offset: 1, exp: [[Decimal('2'), Decimal('1')], [Decimal('3'), Decimal('1')]]
>>> decon(20)
offset: 2, exp: [[Decimal('2'), Decimal('2')], [Decimal('5'), Decimal('1')]]
offset: 1, exp: []
>>> decon(168)
offset: 3, exp: [[Decimal('2'), Decimal('2')], [Decimal('5'), Decimal('2')]]
offset: 2, exp: [[Decimal('2'), Decimal('2')], [Decimal('3'), Decimal('1')], [Decimal('5'), Decimal('1')]]
offset: 1, exp: [[Decimal('2'), Decimal('3')]]
>>> decon(7581)
offset: 4, exp: [[Decimal('2'), Decimal('3')], [Decimal('5'), Decimal('3')], [Decimal('7'), Decimal('1')]]
offset: 3, exp: [[Decimal('2'), Decimal('2')], [Decimal('5'), Decimal('3')]]
offset: 2, exp: [[Decimal('2'), Decimal('4')], [Decimal('5'), Decimal('1')]]
offset: 1, exp: []
>>> decon(7828354)
offset: 7, exp: [[Decimal('2'), Decimal('6')], [Decimal('5'), Decimal('6')], [Decimal('7'), Decimal('1')]]
offset: 6, exp: [[Decimal('2'), Decimal('8')], [Decimal('5'), Decimal('5')]]
offset: 5, exp: [[Decimal('2'), Decimal('5')], [Decimal('5'), Decimal('4')]]
offset: 4, exp: [[Decimal('2'), Decimal('6')], [Decimal('5'), Decimal('3')]]
offset: 3, exp: [[Decimal('2'), Decimal('2')], [Decimal('3'), Decimal('1')], [Decimal('5'), Decimal('2')]]
offset: 2, exp: [[Decimal('2'), Decimal('1')], [Decimal('5'), Decimal('2')]]
offset: 1, exp: [[Decimal('2'), Decimal('2')]]
>>> decon(d('2414682040998'))
offset: 13, exp: [[Decimal('2'), Decimal('13')], [Decimal('5'), Decimal('12')]]
offset: 12, exp: [[Decimal('2'), Decimal('13')], [Decimal('5'), Decimal('11')]]
offset: 11, exp: [[Decimal('2'), Decimal('10')], [Decimal('5'), Decimal('10')]]
offset: 10, exp: [[Decimal('2'), Decimal('11')], [Decimal('5'), Decimal('9')]]
offset: 9, exp: [[Decimal('2'), Decimal('9')], [Decimal('3'), Decimal('1')], [Decimal('5'), Decimal('8')]]
offset: 8, exp: [[Decimal('2'), Decimal('10')], [Decimal('5'), Decimal('7')]]
offset: 7, exp: [[Decimal('2'), Decimal('7')], [Decimal('5'), Decimal('6')]]
offset: 6, exp: []
offset: 5, exp: [[Decimal('2'), Decimal('6')], [Decimal('5'), Decimal('4')]]
offset: 4, exp: []
offset: 3, exp: [[Decimal('2'), Decimal('2')], [Decimal('3'), Decimal('2')], [Decimal('5'), Decimal('2')]]
offset: 2, exp: [[Decimal('2'), Decimal('1')], [Decimal('3'), Decimal('2')], [Decimal('5'), Decimal('1')]]
offset: 1, exp: [[Decimal('2'), Decimal('3')]]
the powers in the 2's column go:
1, 2, 2, 2, 3, 3, 2, 4, 6
which are predicted by:
https://oeis.org/search/...
Again, probably only a coincidence, but kinda beautiful.2 -
Ditch them completely.
In modern browsers you can emulate their behaviour easily.
They make your layout unnecessarily complex.
What the fuck am I talking about?
Tables in HTML. Fuck them. It may be just me and I still do not understand all of their defaults and when ti apply which style to which table element (thead, th, td...) but I found out that I can make almost everything with divs, flexbox or even some fixed widths or heights much easier to what I want than with tables.
Especially if you layout a complex scrolling component with static top row and static first column, it is nearly impossible with tables (and even without them you still need JS).
Ah, and fuck IE with a dirty trident. That thing can die in hell.2 -
Fucking excel...
I opened up my CSV and changed values in one column... You fucking didn't need to take it in yourself to change all of my dates in another column to one you prefer, they were fucking fine! -
!rant
Question: If you are making an API for your Android App. Let say you have total of 50 rows currently and you have to sort a table column by price in ASC order.
Will you do the sorting in the Android App or Server side?14 -
One day, being new in the team i was not sure of all the DB column decodes, asked my senior member to send me decode of a column.
He sent me a 300 line SQL query. Took me 30min to understand it. -
That moment you setup 17 domains on sparkpost as a email delivery system
make your account secure with 2 factor authentication like a good infoSec enthusiast
Go on with your life
Having a Phone crash but nothing to worry because you made them backupz
Restore backupz
once again go on with your happy life.
Having to setup a different bounce action on sparkpost
logging in to sparkpost to make the adjustments
opening google authenticator
realising the backup you restored was before you added the sparkpost entry
mailing sparkpost asking to deactivate 2factor authentication
Having them tell me that they have no access to Google authenticator so they can't help me and all they can do for me is delete my account if i answer their 7569357 questions that i entered a year ago ..
--
You have access to your database yes ? You can delete my account but you can't adjust a fcking Boolean column from true to false? #@?#&!
Why even offer a feature where you have apparently no control over. Stuff like this happens all the time and almost no one saves that fcking authenticator secret.
Make people use authenticators to keep the hackers out, forces them out instead.4 -
I love being a part of a dev project as a non-dev employee, but I really wish I could leave VBA.
If for no other reason, because I'm tired of writing functions that end with "Me.Cells(Row, Column).Value" practically in my sleep.
There are a lot of other reasons, though...1 -
Now I'm a bit impressed by auto complete of VS2022.
The full text in grey is auto complete proposition.
Back story :
I have a table where datetime is stored as nvarchar(max).
I'm trying to convert that shit into a proper datetime2 column
But there are dates in ISO format, there are in MM/dd/yyyy, dd/MM/yyyy and there are some with hours/minutes parts.
So i'm making a little script to clean of all that up.
Ofc, not a perfect result, like 01/02/2022 will be considered as dd/MM/yyyy (98% of values are. But still cleaner than before1 -
-we have a huge nested object to represent this functionality.
- just save it in the DB under "settingsx" column as a stirng. No need for different columns
We had to parse it multiple times in the client and the server.
After a year in the company, I've managed to convince the team leader to move to json object at least2 -
"Let's join two views and create a custom column that acts as a primary key so that other tables can treat it like a foreign key" said no dev ever.
Or at least I had thought that until today when I started figuring out why our queries are so goddamn slow. I hate the previous devs so much.3 -
SharePoint have something called 'event receiver'. An event is triggered when the user inserts a new record in a list. That event must update a column in the same item. After a few minutes it starts to throw conflict errors while trying to update said column. Doesn't happen with every user. Also I wasn't able to reproduce this behavior in the dev environment.
So now I just recursively call the update method, passing an iterator parameter, repeating the same method until it successfully update the record. Or after 6 failures email someone to see what's going on. Just did it today and published at 7PM. Tomorrow gonna be a long day and I know I deserve it.1 -
Get told a colleague finished work on a new web service thing on Friday.
So I fire up SOAP UI. Get an error due to problems with a sql statement. Look through code, issues already fixed so I build the project ct add the new dll to the app, another error, this time a column included in a select statement that doesn’t exist in the table being queried.
Colleague is on holiday, there are no comments in the code and there’s no source control.
Boss wants to know if the column needs to be added, or whether colleague added it and then decided not to use it.
I think I have an idea what it is meant to happen, but my only exposure to this project is as a 30 minute intro, and we didn’t look at any of these parts.
And sadly I left my crystal ball at home today fml -
Here I am, 3:18 am, maybe I won't sleep today either, I hope I do... I'm going on with my uni project, a data science project. I've been wasting hours trying to understand why the fUcK 2 dataframes give me substantially different performances when they fucking shouldn't, since they should be the fUcKing sAmE. But apparently pandas is making fun of me... it seems that if you do something like:
df=original_df.loc[:, [some_cols]]
and some columns in [some_cols] don't exist in original_df, pandas won't give a shit and create a NaN column, or 0 based on how many virgin leprechauns ate bananas for Thanksgiving.
Plus I'm fucking freezing, in this apartment the heating system turns off at 23:59, it makes sense if you're in the fucking bed where you'll be fucking warm.
I miss software development... I wanna finish this MSc as soon as possible.
And here I am, listening to post-rock, writing jupyter notebooks, trying to be fucking positive.
It's not like I hate data science (maybe?), but I'm burnout.
Maybe I'll rewatch another time the video of Mr Robot with the song Where Is My Mind.
See ya.2 -
Thank you Matlab, for my daily dose of frustration.
Thank you Matlab, for deciding to surface-plot a 2D variable with the x axis = columns and y axis = rows, because of course that's the most intuitive way to go about it.
Because of course that's consistent with the standard way to refer to a variable's elements.
After all, everybody knows that Z(i, j) refers to the i-th column and j-th row of a matrix, right?
Thank you, Matlab, for depriving me of the little fuck I gave about getting something done today.
Now go die in a fire.6 -
MongoDB database with really relational data. One main collection that had refs to four other collections, all of those references necessary to populate data for a page view. Complicated aggregate to populate all the necessary data and then filter based on criteria selected by the user. And then the client decides that he wants the information to be sortable by column. Some of those columns are fields on the main model, no problem. Others are fields on the refs, which is more of a problem. Especially given that these refs aren’t one single object. They’re arrays of objects.
The revelation was that I could just write an aggregate function to flat map the main collection, returning only the fields necessary for the search, and output it to a new collection and instead use that new collection for displaying and filtering/sorting search results.
But you can’t run the aggregate all the time, you surely say. If anything changes in the main collection, it won’t be reflected in the search results!
Mongoose post(‘findOneAndUpdate’) hooks, my friends. Mongoose post(‘findOneAndUpdate’) hooks.
Never been so happy to have a thing working properly in my life.2 -
Just spent 30 mins vertically centering a damn image in a two-column Bootstrap row. Yeah, flexbox is great unless you want to stack the columns at mobile screen size like they do with Bootstrap normally. Then everything breaks and the original ugly hack just gets replaced by a slightly lesser evil.
I really hope that we sort this out somehow before colonising Mars.5 -
How do you diagnose speed issues?
I've been lumped with looking after a legacy app.
It connects to our ERP system to handle raising invoices etc. And in June is developed slowness, which we sort of fixed by making one section load later (the SQL was a horrible view in a view in a view).
We then upgraded our ERP software, and the SQL issues are resolved (had to upgrade SQL server etc at the same time) and now the legacy app is running really slowly.
I know that it is when it loops through a data set to set column values etc.
A particular project has 1900 time transactions and takes upto 2 minutes to load.
This part of the program hasn't been changed in over a year, and has only started running slowly since the upgrade.
Are there any good way I can investigate and diagnose exactly why it has suddenly started running slowly?8 -
Everything works hurray
- why not change this column in the database ?
Ok
- everything breaks -
Let's write additional 50 lines of code,,,
Still broken
but it worked once that's an accomplishment right? 🤣4 -
Had a legacy web forms app to maintain. With some generic event handler. There is a variable called "aDirtyHack" inside the query resolver for the grid. It adds a extra column for one customer.
-
Ever given access to production data to correct a data entry that doesn't have a PATCH api ready?
Ever ran UPDATE table set COLUMN="value"; without WHERE condition?
Ever done both of these sequentially?
Yeah. DB snapshots cost a bomb to restore :( -
Pulled into a meeting because a search didn't create a new table record for any result NOT found. Apparently, the user wanted dummy results to fill the table if what he searched for wasn't found.... And it was suppose to have nearly every column say "RECORD NOT FOUND". Just.... Why....
-
So GitHub's "Repository Refresh" layout is live now and they haven't fixed the damn .repohead (with the repo name and the links to Issues, Pull Requests, etc.) stretchting across the entire screen instead of being constrained to the middle column :/
If it annoys you just as much as it does me, just wack this CSS into a user css extensions and it's fixed:
.repohead .d-flex:first-of-type {
max-width: 1280px !important;
margin-left: auto !important;
margin-right: auto !important;
}
.repohead nav.js-repo-nav {
max-width: 1280px !important;
margin-left: auto !important;
margin-right: auto !important;
}
.repohead .UnderlineNav {
/* Remove repohead bottom divider */
box-shadow: none;
background-color: transparent !important;
}
.repohead {
/* Add repohead bottom divider to repohead so it stretches across the entire screen */
box-shadow: inset 0 -1px 0 #e1e4e8;
}9 -
Pardon the rant; some of it can probably attributed to me, but please indulge me of you could.
I'm tasked with creating a report that pulls data from some sql tables in c#and presents it using javascript. My manager was nice enough to lend me his old sql query, so I run with that using sql connections. Now I find out AFTER I get my sql query string working and retrieving data properly that my manager wanted it done using linq and entity framework, so now I have to start over, a process made only more "fun" by the confusing and unintuitive column names of our sql tables.
Moral of the story: don't take the easy way out.
After I spend some time fixing that up, I have to print out the data using javascript and html, which my manager was kind enough to lend me. Cue me shutting off my brain and thinking that I should have the program open and display this stuff itself. Let me tell you that converting a console application to a Windows form application is not a fun experience, especially when entity framework makes classes named "application" and "form" from your database tables. After finally getting the WebBrowser form to work, I'm hit with a javascript error from the library my manager referenced (he is a programmer himself). I tell him about the error and he just tells me to write the html code to a .html on disk like he did, but never explicitly said he did until just now.
Fixed moral of the story: don't take the easy way out, unless you should.
I should clarify I was given the whole raw sql query and html with some embedded javascript and a reference to chart.js. -
WHY does VS code load up Pandas dataframes so damn slowly? It’s bad enough that it seems to take an extra few seconds to get PyQt5 going, but the dataframes are awful, even with small 50 record Parquet files.
I don’t have the attention span to sit there and wait for this without finding myself playing with my phone or surfing.
I guess for debugging and testing I should just create a column A, column B, column C dataframe on the fly and give it some 1, 2, 3 kind of values.
But, Jesus, man... This shouldn’t take 30 seconds to load a simple form. 🙄2 -
Well, that's a lovely youtube ad, if I ever saw one
XML Parsing Error: no root element found
Location: https://secure.jdn.monster.com/rend...-...
Line Number 1, Column 1:
^
By the looks of it, it may have been an ad for monster.com . -
I have a non-dev colleague that created a report in our pseudo-self service viz tool. Shortly after creating and forwarding said report, he submits a ticket stating "the data, in the db is wrong. Every time I run my report, the sum (of a numeric column) is five time more than (and here is the funny part) when I run the SQL in developer!" My response, after reading this ticket: "it is the same data, from the same db, and the same tables! CHECK YOUR JOINS!!!!" His response: " found the issue. My bad! The report used outer joins vs' inner joins." Then he resolved the ticket!
-
https://xkcd.com/1808/
If you take only the 2nd half:
They can delete the space, rly? ALTER TABLE spacetime DROP COLUMN x1, x2, x3 or what? -
That moment when you open up a huge Excel and immediately see that column that is one pixel higher than the others. 🧐1
-
If you edit a column in a table in SQL Developer GUI you can loose your primary key in that table, even if you didnt touch the primary key column.
How fun is that?2 -
bcp in SQL Server can't export column headers. WTF?! Spent hours trying to find a solution that doesn't involve me typing all 250 columns.
Still haven't...1 -
after much discussion we removed the "implemented" column in our task board, now 10 homeless tickets stuck between "in progress" and "in review"
-
I'm writing a Python script to manipulate Excel files, I'm using the openpyxl module, does anybody know how can I check if a user input is in a column, I've done this:
newItem = input("What is the new item?")
for itemChecker in inventory["A"]:
>>>>if itemChecker == newItem:
>>>>>>>>item_on = True
>>>>if itemChecker != itemNuevo:
>>>>>>>>item_on = False
if the user input (newItem) is in the "A" column of the variable assigned to an Excel file called "inventory", the variable "item_on" is set equal to True, if the user input isn't in the "A" column, "item_on" is set equal to False
what am I doing wrong, I'm not getting any errors but it always says that the user input isn't at the "A" column (sets "item_on" equal to False) even when I know it is1 -
*Python:*
```
d = json.loads(str)
d['foo'] = bar
json.dumps(d)
```
*Scala:*
```
Caused by: TimerException{org.apache.flink.shaded.jackson2.com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `scala.collection.immutable.Map` (no Creators, like default constructor, exist): abstract types either need to be mapped to concrete types, have custom deserializer, or contain additional type information
at [Source: UNKNOWN; line: 1, column: 1]}
... 15 more
```2 -
Im creating a "settings" functionality of sorts, unique per "account"
Ideally I'd create a new table, FK it with the Accs table with each Setting variable being a column
But im also inclined to just turn it into a JSON and not bother with N columns for it specially since arrays are involved in the settings
Could version it to ensure that if Settings change on code-level, old accs with old settings dont get fucked up
Now this is a pet project so im free to experiment, not bound by high level design documents
What do y'all prefer/recommend? JSON<->Settings Obj or plain old Table/column with FKs9 -
Client. Should. Die.
Large table which needs to be filled with data - data needs to be prepared because there can be gaps in the data (data represents orders of supplier per day).
So layout is like this:
supplier1 supplier2 ...
date orders
date orders
date ....
Which already is fun. Not. Fetching data with several filters, prepping
data and assuring ordered output without gaps was painful...
The number of suppliers can be anything between 1 or >300 - limited is only the date range. there is an click event on every mofo column for enlarging the whole column and loading additional data via ajax.
Now in all this cringy mess.... I had to make it scrollable.
Horizontal and vertical.
wasn't much fun either.
Can someone please kill any client with the task : make this gigantic shit pile of dynamic table behave like Excel? -
"Just create a new text column on a table and store the IDs comma separated in it for many-to-many relationships!"
-
In typescript (angular) if i have a table USERS in the database and in typescript when i model this table
1) is it a good practice to write all fields exactly like i have in db table column?
2) in typescript am i supposed to write those fields as a class or interface and when should i use class and when to use interface?
While creating a model for the json response and request. Thanks3 -
Just replaced a mess of a 6 row, 6 column grid done using bootstrap with 4 lines of CSS3 grid layout (shorthand).
Why do we even need full Bootstrap when ya got Grid and flexbox now? Oh right, .btn colours... 😖😫😭3 -
I was writing a db on sql and I accidentally fucked up the key column.(as you can see in the pic) No, I didnt used AUTO_INCREMENT.
Is there a wei to make this right, other than doing it one by one?3 -
I must have offended Satan or something, but I'm pulling my hairs out over this client data that feels like a fractal of bad validation invented to torment me. Misspelled field names, improperly combined fields, entries in the wrong column, impossible addresses, non-matching staging and production data / keys, invisible freaking characters that ruin automated matching - every dam thing you fix and the next one hits you in the face like a clown stepping on a rake. Jesus.1
-
When someone truncates several tables and removes their column indices in DEV so my quick two line change testing goes from taking 30 minutes to 3 days while I restore all 200 million rows and re-index all the columns. 🙄
-
"Unexpectedly found nil while unwrapping an Optional value"
What dev thought this would be a good idea in Swift? Sometimes I hear the compiler's thoughts as it comes across this:
1. The dev explicitly told me this value would be optional.
2. I have a record from the database, and I see a 'nil' in the column for this value.
3. That's not "None" , Oh my god, I need there to be an explicit "None<CustomType>".
4. Shit shit shit shit. Oh my god.
5. PANIC!4 -
Why is the syntax of SQL INSERT so completely different to the syntax of UPDATE?
...proceeds to rewrite multiple 60 column inserts into updates...2 -
Has anyone ever tried to export a table in SAP HANA to csv format? Unfortunately, we are not allowed to access our SAP HANA environment directly from our development laptop (the SAP environment is a production environment, of course we don't have a develop or test environment nor does anyone feel the need to create one), so we need to email ourselves a csv file with the data we need to develop our models in python (I'm not kidding).
Anyhow, among other things, I need to manually add column names in the file, some columns are quoted, some are not, I cannot choose my delimiter, ...
Is this vendor lock-in the year 2023?4 -
ANYONE WHO ANSWERS IS A HERO! Im having a CSS issue and yes I’m a CSS noob! I have a flex box with two columns of data and I want the divs to stack when the screen gets narrow enough. The issue is that I want them to stack ordered by a data attribute. I wrote a media query like this
@media (max-width: 767 px) {
.row { flex-direction: column};
.row div { order: attr(data-ordinal) };
}
I want each of the divs to be ordered by the data-ordinal attribute (a number) when the screen gets at most 767 pixels or on a mobile device. I was banging my head for a while on this assshole. Can anyone find the issue here? I may have left out a few details but does this CSS at least LOOK ok? I’m new to media queries. PS sorry, whats the bot that does the highlighting? I forgot it, but luckily this is simple enough to read26 -
I forgot FuckING , (comma) in my android app while creating a column and waste half an hour in finding I got table is not exist Error.
.
.
Fuck you comma....2 -
I am currently creating a module where I have to put data in xls sheet from a given data, which contains date column,.
I have generated the sheet and the respective date column also has the format of Date which is default of Microsoft Excel.
But the big question noew arises that I am not able to sort the data according to the date column, the sorting is not working correctly.
If anyone has ever worked on this please tell!!3 -
Microsoft Foundation Classes - MFC. Spent 1 month to make a fixed column on a grid. Counter intuitive APIs.
-
What are you going to say when you'll know a more than 1yr experienced web developer working in PHP and MySQL does not know about indexing column in MySQL and submitting registration form (includes password) in GET?6
-
Explaining to my Scrum Master EVERY morning from scratch the technical details of the story so that he can give his blessing to why the story is still In Progress column!
-
Newbie here, is storing json in sql (as like column data) as weird as I think it is or are there valid use cases?
The one I heard, didn't get the details but something like "startup move fast"12 -
About to work on a small feature for my job's web app since I took a caffeine pill to finish up a college assignment. It's 12:34am; at least it's just a column addition to the DB.
-
Had a release retro today.
We had the usual Trello board with columns for "what went well, what was bad, what can we improve" etc.
columns for the bad and the improvements had 10-20 cards each.
column for what went well was empty.... -
Having to change the data type of a column in the database of an app is just the worst! I always forget to code the migration of the old data :(
-
Okay, I may regret this...but I am desperate.
Anybody know any recruiters looking for a remote JavaScript developer? Frontend, backend, fullstack, doesn't matter (see line 1, column 27)
I'm tired of being denied by companies 😭😭😭4 -
had a runtime error saying something tried to read an out-of-bounds element in a 2d vector; 1 day later I realize I had in a function assumed that the rows were major order instead of column as major, hence if the grid isn't square, it will read OOB at some point1
-
Imagine supporting blackbox software that still uses practices from the 1980s - unreadable 5 string DB2 column names, a custom piece of shit language you have to edit in what is essentially an Excel editor live on the server, etc.
Even better, the company that supports it has 6 month fix/release turnarounds. Six months in 2017! -
this moment when you write something to sync a 5 figure amount of entities from somewhere and halfway through a wild "sql exception: binary data truncated" weirdo occures because you where too lazy to adjust column constraints properly :-|3
-
MySQL tables named haphazardly, table column names in mixed cases, redundant columns and tables, the horror
-
#TIL Hibernate won't allow you to insert multiple rows if a PK Column is auto incrementing in one transaction because ¯\_(ツ)_/¯
-
New Project
M: Hey, check these two processes. Both took different paths for the same input. Here are the logs. Both are the same though.
Me: Ok... do we have a debugger?
M: No this product doesn't have a debugger
Me: Any unit tests i should know of?
M: We don't do unit testing. Everything is done in Integration Testing.
Me: Ok. So how can i check the db for this?
M: You can't, the access is restricted. You'll have to raise a ticket to other team with the sql output you need.
Me: Ok. So I hope you have the schema at least.
M: Yes we have the schema. But there was some issue last week so the values might not be there in the correct column. They may or may not be present where they are supposed to be.
Wtf am i supposed to do... fucking play football on ticketing system with the other team 😐 -
OK, so I've been working on processing a Japanese dictionary file and things are going smoothly for the most part. Out of ~185,000 entries, I've got 35 that are still causing problems.
The error I'm getting is "Incorrect string value '\xF0\xA4\xAD\xAF' for column...". I've checked all of my encoding and collation settings, and I'm pretty sure I've got it set to properly implement all of Unicode (as well as it does, anyway), as shown in the image attached. My suspicion is the problem characters are likely among the JIS X 0213 character set; in either case we're clearly dealing with a 4-byte character encoding issue here.
If needed I can attach a flag in the database and base64 encode these particular entries so the data isn't lost, but I'd like to just get it to handle the data properly in the first place if possible.
Anyone have any ideas on other items I can check to resolve the error?10 -
When grafic designer design a list of products where on top of the page is header with title, category description, big fucking image, big fucking category navigation and on second screen list of the products.
Just why? Why put the important stuff (products) on second screen? Just why? You have three asses of space, you fucker. You can put category list on fucking SIDE. How many time you did this shit?
What about multilevel categories when menu just show current category children? I need to go fucking back or what? FUCK YOU! Stick this stupid boxes into your ass and design real navigation.
What is so fucking great to having big ass monitors and design more and more one column websites, just why you fucking retard?4 -
We ended up finding ourselves with a bunch of tables that have mostly the same columns, but differ by a few. Every time we consume a REST API, we store the `access_token`s and expiration dates and the other OAuth data. However, each provider has slightly different requirements. For example, we store email addresses for email api's, other providers require us to store some additional information, etc. etc.. I'm tempted by the flexibility and lack of schema brought by document databases, but not enough to use one since they're generally slower and we already have everything in SQL. So I got the idea of using JSON columns to alleviate this issue: have a single table for all REST integrations (be it outlook or facebook), and then store the unique integration data inside of this JSON column for "additional data". This data is mostly just read, not filtered by (but ocasionally so). Has anyone had experience with this? How's the performance of JSON fields? Is this a good practice or will it get harder with more integrations?
-
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 -
Why do you fucking retards make the tinyint column nullable AGAIN and use 'null' as false instead of setting fucking false!
-
Team lead gave me a task, fix a script he made to update 28k+ lines that wasn't working (he was busy with other stuff)
So I fixed and tested it in our dev environment, which had about 10 lines to use as test
Worked well, but a single select getting 1 column in a table is taking more than 40 secs, I need this select to run for every line (I tried making it get all data at once but it was getting duplicated entries)
The damn table doesn't have index, I think this will be the longest script I've ever made 😅😅😅 -
Spoiler: This might be a dumb question
In this platform the rant count is showing for all people like a badge. And we can see that whenever someone comment in a feed or near the posted person. Do they have a separate column to keep track of rants ( ++ ) or is it a overload to call db count query of all ++ they recieved by various post and people because some people have 5000+ whenever their name appears7 -
Hey devrant , make the notifs sec like you can swipe rather than select the comment column or the ++'s column , I just want to swipe right and left rather than select them columns6
-
Looking into some javascript. Which function should I use... guess I have to start the day refactoring. What the f*ck, is good naming so hard:
...
function removeColumn(column) {
selectedColumns.remove(column);
};
function columnRemove(column) {
appliedColumns.remove(column);
}; -
FICK YOU EDMX AND FUCK YOU TFS SOURCE CONTROL! JUST WASTED 2 HOURS OF MY LIFE TO CHANGE A FUCKING COLUMN NAME!
It’s almost 2018 just right fucking SQL and use git.1 -
Currently working on a conversion of a tool we use to keep track of our working hours (like how much time did we spend on that task, that project etc.), because the old version of that language sucks ass and the database system sucks even more ass.
Besides the other stuff that's freaking horrible in that fucking shit tool (crashes when entering wrong input, etc.) - the genius that created that peace of crap (1997!) decided that he wants to use a fucking timestamp as a PK-column on some tables.
Why the fuck would you that?! Jesus fuckin' christ.
And of course, the fuckin apprentice has to deal with this shit and has to be finished yesterday x)3 -
What if, the newly added JSON datatype in mysql is a way to provide mysql with no-sql-like capabilities.
I mean, some would prefer no-sql cuz they beleive that the tables schema will evolve a lot.
An extra column in mysql table with json datatype called "custom_fields" would do the trick.
What do u think ?8 -
Ok so.. thoughts on MySQL,
SELECT max(column_name) from table_name;
Outputs the max value in the column by kinda traversing the whole column huh... Recursive🤔
While
SELECT concat(column_name) from table_name; outputs simple endl separated srrings. . .. no recursion. PHP backend sucks
😣7 -
Just keep your docs with your source on GitHub. Don't make me use your shitty website and don't subject me to your broken links and constant redirects. I fucking hate this shit so much just give me the raw documentation. Thats all I asked for.
And get rid of that HUGE example column that takes up half my display. -
How do people feel about including bugs and how'd you fix them in a job app/email? I have a couple companies that are super interesting to me but their public facing sites have a few layout issues (for example, the footer is squished into one column on mobile). I can definitely see how it would come off as arrogant, especially if it's a cold contact.
Thoughts?5 -
Today, I saw a table mean to store tags designed horizontally, each column store a tag with value 1 or 0. 🤦🏻♂️
-
Rant
Okay so I was given a task to add an additional column to the reports in our timesheet system a couple of days ago.
This system hasn't been modified in several years and was not written especially well.
The report generated is shown in a Windows forms datagrid.
I spent 2 fucking hours trying to figure out how data was getting added to this shitting thing when I realised that it was being done by shitting index on the SELECT statement.
God, why didn't the original Witter just use a bloody databinding -
We use Sequelize. This is how we do database structure changes:
- I create/change a model in Sequelize, and let it change my local database, then I do work on that
- I push the new code to a remote branch
- my boss/CTO/lead dev then manually creates/changes the relevant table(s) in our staging database
- I finally merge the branch I originally developed into the remote branch
- boss checks that everything is working
- at last, boss does the same process of modifying/creating tables in production database
- finally, staging code is merged into main
So right now:
- I'm changing a feature, forgot I was editing in the main branch
- go ahead and create a remote branch for it, pull locally, checkout local version of newly created branch
- try to run code
- oops, there's a missing column in one of my local database tables
- ask for boss for SQL script that will create the missing column and potentially add more data or whatever
- waiting for boss to respond
H-how can we improve this process? Boss has talked about us moving to use migrations but we never ended up doing it. I don't know much about migrations either. This is gonna suck so hard.3 -
Function in my Dao file is:
@Query("SELECT * from appData WHERE type = :type ORDER BY id DESC")
fun getData(type: String): Flow<List<AppData>>
The database contains a column of automatically generated int primary key 'id', a column of string named 'type', and another string column named 'content'.
A Part of code from my composable function is:
val currentRetrievedDate: Date = Date()
val currentDate: String = SimpleDateFormat("dd-MM-yyyy").format(currentRetrievedDate)
var lastDateObjectList by remember { mutableStateOf(emptyList<AppData>()) }
LaunchedEffect(streakCounterViewModel) {
coroutineScope {
streakCounterViewModel.appDataRepository.getDataStream("lastDate")
.collect { newDataList ->
lastDateObjectList = newDataList as List<AppData>
}
}
}
if (lastDateObjectList.size>1){/*TODO*/
for (i in 1 until lastDateObjectList.size){
LaunchedEffect (Unit){
streakCounterViewModel.deleteData(id = lastDateObjectList[i]!!.id,
type = lastDateObjectList[i]!!.type,
content = lastDateObjectList[i]!!.content)
}
}
}
val lastDateObject: AppData?/* = lastDateObjectList[0] ?: null*/
lastDateObject = if (lastDateObjectList.isNotEmpty())
lastDateObjectList[0]
else null
var lastDate = lastDateObject?.content ?: "00-00-0000"
var currentStreakObjectList by remember { mutableStateOf(emptyList<AppData>()) }
LaunchedEffect(streakCounterViewModel) {
coroutineScope {
streakCounterViewModel.appDataRepository.getDataStream("currentStreak")
.collect { newDataList ->
currentStreakObjectList = newDataList as List<AppData>
}
}
}
if (currentStreakObjectList.size>1){
for (i in 1 until currentStreakObjectList.size){
LaunchedEffect (Unit){
streakCounterViewModel.deleteData(id = currentStreakObjectList[i]!!.id,
type = currentStreakObjectList[i]!!.type,
content = currentStreakObjectList[i]!!.content)
}
}
}
val currentStreakObject: AppData?/* = currentStreakObjectList[0] ?: null*/
currentStreakObject = if (currentStreakObjectList.isNotEmpty())
currentStreakObjectList[0]
else null
var currentStreak = currentStreakObject?.content ?: "0"
In this code, the last login time and last streak of user is already saved, we just have to fetch the data from the local database, make sure that there are not more than 1 occurrences of same data type in the database, and then use that data. But this, instead of using the database values, uses 00-00-0000 as the lastDate, and uses "0" as the currentStreak (which should only be used for the first not, and in some rare situations only), and is not able to retrieve data from the database properly.
The data saving and updating logic is working fine, but only the retrieval part is causing some issue.
The complete project is also uploaded on github: at HealthEase repo of tauqirnizami4 -
I have been arguing with my company's analytic on bootstrap grid system for two days now. The guy doesn't understand what is so wrong about hardcoding bootstrap column percentages when in our company's layout rules it states we use the col 12 system
-
Is a calendar view that starts on a Monday column a bad or unusual UX? I'm used to seeing Sunday on the leftmost and Saturday on the rightmost. I'm not sure about other cultures. It's one of my tasks at work. Thank you.12
-
Hey database experts. MySql question:
I have a table with houses, there is the location, color, etc. Shall I make a column for the owner or make a separate table HouseToOwner - where I connect the id's? I have no idea why is it good practice but saw it in few cases. I have the same with the things inside like I would just make a boolean column for a TV-like haveTV - true/false. Tell me why to not fill everything in one table. thx17 -
I hate to even ask but...Thot I'd fool with the Zodiac cipher, Z408. Managed to paste the frequencies of English letters into Android Drive. Multiply that by 408 gives the expected # of letters. So I drag the 1st equation down the column to select the cells but that's ALL it does. Have used 2 other sheets, same thing. What's going on?1
-
Good day,
Please I need someone to help me with this:
I want help on a python code that'll display a 8x7 matrix such that numbers 1-9 appear without repetition in each row and column and the numbers appear at least six times in the table3 -
Not so awful I suppose as long as it's produces quality output
Still only interested in davinci
Question
When chatgpt recognizes stateful requests "modify the part of the procedure Jojon where it updates storeitem to add a column verifiedbyhuman and set it's value to true" is chatgpt feeding everything at once to do davinci ?1