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 - "table name"
-
Sit down before you read this.
So I interviewed a guy for a "Support Engineer" internship position.
Me and the team lead sit down and are waiting for him to enter, but apparently he's actually making a coffee in the kitchen.
This isn't exactly a strike since the receptionist told him that he can go get a drink, and we did too. It's just always expected for him to get a glass of water, not waste 3 minutes brewing a coffee.
In any case he comes in, puts the coffee on the table, then his phone, then his wallet, then his keys and then sits on our side of the table.
I ask him to sit in front of us so we can see him. He takes a minute to pack and tranfer himself to the other side of the table. He again places all of the objects on the table.
We begin, team lead tells him about the company. Then I ask him whether he got any questions regarding the job, the team or the company . For the next 15 minutes he bombards us with mostly irrelevant and sometimes inappropriate questions, like:
0: Can I choose my own nickname when getting an email address?
1: Does the entire department get same salaries?
2: Are there yoga classes on Sundays only or every morning?
3: Will I get a car?
4: Does the firm support workspace equality? How many chicks are in the team?
5: I want the newest grey Mac.
And then.. Then the questions turn into demands:
6: I need a high salary (asks for 2.5 more than the job pays. Which is still a lot).
I ask him why would he get that at his first job in the industry (remind you, this is an internship and we are a relatively high paying company).
He says he's getting paid more at his current job.
His CV lists no current job and only indicates that he just finished studying.
He says that he's working at his parent's business...
Next he says that he is very talented and has to be promoted very quickly and that we need to teach him a lot and finance his courses.
At this point me and the team lead were barely holding our laughs.
The team lead asks him about his English (English is not our native language).
He replies "It's good, trust me".
Team lead invites him for an English conversation. Team lead acts like a customer with a broken internet and the guy is there to troubleshoot. (btw that's not job related, just a simple scenario)
TL: "Hello, my name is Andrew, I'm calli..."
Guy: *interrupts* "Yes, yes, hi! Hi! What do you want?"
TL: "Well, if you let me fi..."
Guy: "Ok! Talk!"
TL: "...inish... My internet is not working."
Guy: "Ok, *mimics tuning a V engine or cooking a soup* I fixed! *points at TL* now you say 'yes you fixed'".
Important to note that his English was horrible. Disregarding the accent he just genuinely does not know the language well.
Then he continiues with "See? Good English. Told you no need to check!".
After about half a minute of choking on out silent laughter I ask him how much Python experience he has (job lists a requirement of at least 1 year).
He replies "I'm very good at object oriented functional programming".
I ask again "But what is your experience? Did you ever take any courses? Do you have a git repository to show? Any side.."
*he interrupts again* "I only use Matlab!".
Team lead stands up and proceeds to shake his hand while saying "we will get back to you".
At last the guy says with a stupid smile on his face "You better hire me! Call me back tomorrow." Leaves TL hanging and walks away after packing his stuff into the pockets.
I was so shocked that I wasn't even angry.
We both laughed for the rest of the day though. It was probably the weirdest interview I took part at.35 -
So...Today I found an SQLI (sql injection , google if you're not aware) in one of our products , I start exploring it , I get my trusty Kali on me workstation . sqlmap etc. Tell my manager it's a true positive... I start exploring the db , half the devs at my manager's place start staring at his screen as I proper fuck a QA db server... I hear a qa guy mention triangulation as sqlmap dumps a uid table in his face . I hear my manager's manager saying 'this has been in our app for so long and we found it just now ? Who found it ?' *manager proudly saying me name* 'He's still working this late ?' ...apparently now my trip to england is getting covered for both me and me gf by the company...18
-
Me : I need to give Tom a wash.
GF (Smashed table, angrily) : Tom is your Keyboard, stop giving everything a name.
Me : you hurt poor George!10 -
My school.
We have free WiFi access, but you need to login into your personal student account to use it.
Turns out, SQL Injection works.
It gets worse.
Table name "schueler".
SELECT *
Well.
Got all data on all students.
Name, address, phone number, passwords in plain.
I reported it using an anonymous email. Partially fixed. Standard quotes now get eacaped. Still, passwords are now MD5.47 -
The programmer and the interns part 2.
We will discuss numerous events that happened over the past week or so.
Case 0:
We had our weekly engineering meeting. The interns were invited as well.
We hold meetings in the generic, big, corporate meeting rooms with a huge table in the middle.
There were more than enough chairs for everyone yet the most motivated and awkward intern (let's call him Simon) chose to stand, cause "it's cool man, I always stand". At this point we all know that he probably read about Agile stand up meetings and is confusing it with this one. Otherwise he's simply trying to stand out from the rest. (See what I did there?)
Anyway the meeting has started way later than planned (what a surprise) and took much longer than Simon expected. Everybody is sitting and listening to the CTO while occasionally glancing at the weird looking intern standing awkwardly and refusing to sit because it would make his original intentions pointless. He even tried to nod whith a serious face and his hands crossed when the CTO said something and looked at his general direction. The meeting was about a hour and a half long but with the delay it was at least 2.5 hours.
At the end Simon was so exhausted that he fell asleep on the office puff, was forgotten and locked inside. 3 hours later when I was home I received a call from him with his sleepy-trying-to-sound-awake voice telling the news. Lucky there's a 24/7 Noc team that could rescue him.
Case 1:
An intern who was late on his Linux test connected to every test VM (should I remind you that each one has a personal VM but they share passwords for their roots?) and tried to reset it with "sleep 10s; shutdown -h now".
He took down all 13 of those so I had to turn them on and switch passwords again.
Case 2:
One of the interns didn't do any of his training chores. Apparently he forgot what he was told to use, ignored all online documentation and used Windows CMD with Linux commands for almost a week already.
Case 3:
Simon uses Vim to write all text possible. Even mails, he then selects all and copies into the mail body. He spent half a day on a homework task I gave them. He wrote everything inside one text file using Vim. When he was done he saved the file and quit the editor. He then said "Oh shit! I've forgot to sign my name!". I explicitly told him that theres absolutely no need for that because I see which mail the file was sent from. He said "I don't even need a program for that!" and gave a couple of strokes on the keyboard.
Later I received an email from him with a .txt attachment. When I opened it the only text that was inside was "by Simon ;)".
I logged to his machine and checked the last command ran on the file:
echo "by Simon ;)" > linuxtasks.txt
Case 4:
The girl here uses a MacBook. She keeps getting confused with the terminal windows and rebooting her own machine instead of the remote VM.
Case 5:
Haven't checked yet how this happened but one of the interns deleted the gui from his local Centos.33 -
I just had a client complaining on the phone that she read my database design documents and that they are all wrong and need to be done again. Because things like varchar and int are confusing. And nobody understands what they mean. She asked around and nobody understood it.
Ooh, and I should place the customer name in more then one table because it would be handy to have in several places.
Spend a hour on the phone trying to explain that these documents are not intended for her. They are not for her to understand.
I make these documents to build a stable product and in case something bad happens to me its easier to pick up for another developer.
Long story short.. I'm currently making a document that explains the database design... Getting paid for it..... But fucking hell. Somebody save me.10 -
Ever had a 'why in FUCKS name would you do that?!?' moment with another programmer?
In my first study year we learned about PHP and how to write a login system. Most people would either do a 'select count(something like id) from users where username = username and password = password' or select the values based on the username/email and check if the password matches.
This guy selected everything from the table and FOREACHED the records while comparing if the username/password matched with an if within that loop.
I couldn't get him to understand how fucked up that system would become once you'd have loads and loads of users 😅21 -
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 -
In a user-interface design meeting over a regulatory compliance implementation:
User: “We’ll need to input a city.”
Dev: “Should we validate that city against the state, zip code, and country?”
User: “You are going to make me enter all that data? Ugh…then make it a drop-down. I select the city and the state, zip code auto-fill. I don’t want to make a mistake typing any of that data in.”
Me: “I don’t think a drop-down of every city in the US is feasible.”
Manage: “Why? There cannot be that many. Drop-down is fine. What about the button? We have a few icons to choose from…”
Me: “Uh..yea…there are thousands of cities in the US. Way too much data to for anyone to realistically scroll through”
Dev: “They won’t have to scroll, I’ll filter the list when they start typing.”
Me: “That’s not really the issue and if they are typing the city anyway, just let them type it in.”
User: “What if I mistype Ch1cago? We could inadvertently be out of compliance. The system should never open the company up for federal lawsuits”
Me: “If we’re hiring individuals responsible for legal compliance who can’t spell Chicago, we should be sued by the federal government. We should validate the data the best we can, but it is ultimately your department’s responsibility for data accuracy.”
Manager: “Now now…it’s all our responsibility. What is wrong with a few thousand item drop-down?”
Me: “Um, memory, network bandwidth, database storage, who maintains this list of cities? A lot of time and resources could be saved by simply paying attention.”
Manager: “Memory? Well, memory is cheap. If the workstation needs more memory, we’ll add more”
Dev: “Creating a drop-down is easy and selecting thousands of rows from the database should be fast enough. If the selection is slow, I’ll put it in a thread.”
DBA: “Table won’t be that big and won’t take up much disk space. We’ll need to setup stored procedures, and data import jobs from somewhere to maintain the data. New cities, name changes, ect. ”
Manager: “And if the network starts becoming too slow, we’ll have the Networking dept. open up the valves.”
Me: “Am I the only one seeing all the moving parts we’re introducing just to keep someone from misspelling ‘Chicago’? I’ll admit I’m wrong or maybe I’m not looking at the problem correctly. The point of redesigning the compliance system is to make it simpler, not more complex.”
Manager: “I’m missing the point to why we’re still talking about this. Decision has been made. Drop-down of all cities in the US. Moving on to the button’s icon ..”
Me: “Where is the list of cities going to come from?”
<few seconds of silence>
Dev: “Post office I guess.”
Me: “You guess?…OK…Who is going to manage this list of cities? The manager responsible for regulations?”
User: “Thousands of cities? Oh no …no one is our area has time for that. The system should do it”
Me: “OK, the system. That falls on the DBA. Are you going to be responsible for keeping the data accurate? What is going to audit the cities to make sure the names are properly named and associated with the correct state?”
DBA: “Uh..I don’t know…um…I can set up a job to run every night”
Me: “A job to do what? Validate the data against what?”
Manager: “Do you have a point? No one said it would be easy and all of those details can be answered later.”
Me: “Almost done, and this should be easy. How many cities do we currently have to maintain compliance?”
User: “Maybe 4 or 5. Not many. Regulations are mostly on a state level.”
Me: “When was the last time we created a new city compliance?”
User: “Maybe, 8 years ago. It was before I started.”
Me: “So we’re creating all this complexity for data that, realistically, probably won’t ever change?”
User: “Oh crap, you’re right. What the hell was I thinking…Scratch the drop-down idea. I doubt we’re have a new city regulation anytime soon and how hard is it to type in a city?”
Manager: “OK, are we done wasting everyone’s time on this? No drop-down of cities...next …Let’s get back to the button’s icon …”
Simplicity 1, complexity 0.16 -
So... I just remembered a story that's perfect for devrant.
My brother got into engineering in university, and during the second semester they had their introductory class to programming. They had weekly homeworks that the lecturer would check and give grades accordingly.
The factors that could influence the grading were: execution (meaning that the code would excecute as intended), efficiency and readabilty. The weeks passed and everyone was doing well, getting fairly good grades. Everyone was happy.
Until one day a random guy we'll call bob got the worst grade possible. Bob wasn't a bad student. He had over-the-average grades in all the weekly homeworks and even impressed the professor in some. Naturally, he was baffled when he saw his grade on the google spreadsheet. He was pretty sure his code ran well. He always tested it on different machines and OSs. So, at the end of the class, he went straight to the helper of the class, in a pretty imperative manner, to demand to know how the fuck he got that grade. It's impossible he got excecution, efficiency and readabilty, wrong. All three wrong? Impossible. Even the stupidiest kid in the class had some points on readabilty.
"Oh, so you are Bob. Huh?" said the helper in a laid-back attitude. "Come with me. Prof. X is waiting for you in his office."
This got Bob even more confused. As they approached the office, the courage he had in a first moment banished and gave way for nervousness and fear.
The helper nocks the door. "Prof., Bobs here"
As soon as Bob sits in the chair in front of Prof. X's, he knew something bad was coming.
"In all these years of teaching..." said Prof. X hesitantly. "In all these years of teaching I have not come even close to see something similar to what you've done. You should be ashamed of yourself." Needless to say, Bob was panicked.
"In all these years I have not seen such blatant mockery!" added the professor. "HOW THE FUCK DID YOU EVEN DARE TO SEND A HOMEWORK WITH SUCH VARIABLE NAMING" That's when Bob realised the huge mistake he made. "NEVER IN ALL THESE YEARS I HAVE SEEN SOMEONE NAME HIS VARIABLES *opens the file on his desktop *: PENIS, SHIT, FUCKSHIT, GAYFUCKING<insert Prof. X's name>MAN, GOATSE, VAGINAVAR, CUMFUNCTION, [...]" The list of obcenities went on and on. In each word, the professor hit the table harder than the last time.
Turns out Bob felt so in comfort with the ease of the course he decided to spice things up by using "funny naming conventions" while coding, and then tidying everything up before uploading the homework. This week he forgot, and fucked it big time.
So remember folks, always check your code before committing/giving it in/production. And always adhere to naming conventions.9 -
Assembly: He’s the nerd. He speaks very quickly and uses short sentences. Very few people talk to him. He’s considered to be an autist asperger by a majority of the class because he finishes the exams so quickly it’s insane and he faces a lot of difficulties in speaking with others. He’s at school but already dressed like an engineer.
Ada: She’s a foureyes nerd. When she gets the answer she’s doesn’t make any mistake. Ada often corrects the teacher when she writes a line a little ambiguous. She’s building a rocketship in her backyard and she’s always speaking about this weird hobby.
Python: He’s Mr Popular. He likes skate, brags about all the parties he’s invited to. He’s good in all the subjects taught in class but he’ll do them a bit slower than the others. Everyone loves him because he explainsthings so well, sometimes the teacher herself asks Python to explain some part of the course. He’s dressed with a hoodie, a baggy and glasses on the top of the head ;)
Java: She is one of the toppers of the class and very popular. She’s very good in all the topics. The teacher loves her but she’s a very talkative person.
Scala/Kotlin: They are twin sisters and the best friends of Java. Unfortunately, they are not as popular and it’s often Java who takes the lead in the group. It’s very difficult to distinguish one from another. Both are far less talkative than Java but Scala speaks a bit differently than Kotlin and Java.
C: He’s the topper of the class. He’s so fast in completing the exams that the teacher really thinks he’s copying Assembly’s work. He has a little brother C++ and they share a lot in common together. He’s the chess major and often plays chess with Assembly and his big brother.
Go: He’s the new kid on the bloc. He doesn’t like C++ and his friends and he wants to prove he can do better than them. Of course, he prefers playing Go over Chess.
APL: He’s a lonely guy. No one understands him when he speaks. Even the teacher is surprised when APL shows a correct answer after several lines of incomprehensible pictograms. People think that he was born in a foreign country… or a foreign planet ?
HTML/CSS: These twin brothers are very different. One is dressed in black and white and the other is dressed with everything except black and white. HTML is very talkative and annoying and the CSS is very artistic. CSS is the best student in Art lessons and HTML performs well in written expression.
LaTeX: She’s friend of HTML. The teacher likes her because she has a gift of writing. LaTeX likes the mathematical courses because she can draw fancy greek letters. The teacher knows this well and she is often asked to write a formula on the black board.
VBA: He’s in the back, looking through the windows. Not really interested in the courses taught in class. In the exams, he answers always with a table.
C#: He’s in the back playing yet another game on his smartphone. He likes being next to the windows also.
JavaScript: People often mix up Java and JavaScript because they have a similar name. But they are definitly not the same. Javascript spends a lot of time with HTMLand CSS. He’s as artistic as CSS but he prefers things that move. He likes actions and movies. CSS dreams to be a painter wheras JavaScript wants to be a film-maker.
Haskell: He’s a goth. Dressed up in dark. Doesn’t talk to anyone. He doesn’t understand why others write pages when he can write a couple of lines to answer the same question.
Julia: She’s the newest student here. She doesn’t have any friends yet but her secret aim is to be as popular as Python and as fast as C.
Credit: Thomas jalabert4 -
We have a new developer working in our office. He is fairly new, which is understandable, so he asks for help regularly(which I actually appreciate). This time however, he asked for help, and every step of the way argued it. He said he needed help making a small circle(it's just an indicator on a table).
I told him if there is a mat-icon it would be simple, but if not it would still be pretty simple with CSS. He argued that those two options seem messy. I pointed out they are extremely clean actually, and showed him how it was only about 4 lines of css. and 1 if there was a material icon. He agreed it was pretty easy, and then went with a complicated way to have green or red. I let him know that was really trivial, and even gave him the exact code he needed for it(at this point, he could have copy and pasted, adjusted the conditional to the name of his variable, and be done).
He proceeds to take 3 more days to complete this task, making a new component for a colored circle, using templates and nested css in the html, and hard coding the color as opposed to using the material colors we use site wide. All in all 100+ lines of code. And he felt my solution with fewer than 10 lines was messy.14 -
Having an english conversation with a russian client.
"What do you want the info to be?"
"I want the name, adress and etc."
"Etc?"
"Yes! I attached you a picture with everything...as you can see..."
<the picture is a huge table in russian>
"But the table is in russian"
"Yes"3 -
Buckle up kids, this one gets saucy.
At work, we have a stress test machine that trests tensile, puncture and breaking strength for different materials used (wood construction). It had a controller software update that was supposed to be installed. I was called into the office because the folks there were unable to install it, they told me the executable just crashed, and wanted me to take a look as I am the most tech-savvy person there.
I go to the computer and open up the firmware download folder. I see a couple folders, some random VBScript file, and Installation.txt. I open the TXT, and find the first round of bullshit.
"Do not run the installer executable directly as it will not work. Run install.vbs instead."
Now, excuse me for a moment, but what kind of dick-cheese-sniffing cockmonger has end users run VBScript files to install something in 2018?! Shame I didn't think of opening it up and examining it for myself to find out what that piece of boiled dogshit did.
I suspend my cringe and run it, and lo and behold, it installs. I open the program and am faced with entering a license key. I'm given the key by the folks at the office, but quickly conclude no ways of entering it work. I reboot the program and there is an autofilled key I didn't notice previously. Whatever, I think, and hit OK.
The program starts fine, and I try with the login they had previously used. Now it doesn't work for some reason. I try it several times to no avail. Then I check the network inspector and notice that when I hit login, no network activity happens in the program, so I conclude the check must be local against some database.
I browse to the program installation directory for clues. Then I see a folder called "Databases".
"This can't be this easy", I think to myself, expecting to find some kind of JSON or something inside that I can crawl for clues. I open the folder and find something much worse. Oh, so much worse.
I find <SOFTWARE NAME>.accdb in the folder. At this point cold sweat is already running down my back at the sheer thought of using Microsoft Access for any program, but curiosity takes over and I open it anyway.
I find the database for the entire program inside. I also notice at this point that I have read/write access to the database, another thing that sent my alarm bells ringing like St. Pauls cathedral. Then I notice a table called "tUser" in the left panel.
Fearing the worst, I click over and find... And you knew it was coming...
Usernames and passwords in plain text.
Not only that, they're all in the format "admin - admin", "user - user", "tester - tester".
I suspend my will to die, login to the program and re-add the account they used previously. I leave the office and inform the peeps that the program works as intended again.
I wish I was making this shit up, but I really am not. What is the fucking point of having a login system at all when your users can just open the database with a program that nowadays comes bundled with every Windows install and easily read the logins? It's not even like the data structure is confusing like minified JSON or something, it's literally a spreadsheet in a program that a trained monkey could read.
God bless them and Satan condemn the developers of this fuckawful program.8 -
Dear "managers,"
Stealing credit for something you have not done is real theft.
When I come up with an idea and a detailed outline of how to build and deliver it, you do not get to say "oh I also had this idea." You did not. How could you? It uses tech you don't even know exists.
When I then proceed to build the whole thing on my own without any of your inputs (then again, you have no idea of how it works, what would you bring to the table), you don't get to parade my project in front of the board not even mentioning my name.
You see, it's not the first time you pull that off, you have taken full credit for every thing.
it's not just my wee feelings getting hurt for lack of recognition: it has real world consequences.
You get the promotion, you get the salary raise and you now live in a flat with a balcony and a view, while my wife and I share a studio as my salary has not budged.
You're a cunting thief, I hope your mom dies.
Best,
X8 -
I had to open the desktop app to write this because I could never write a rant this long on the app.
This will be a well-informed rebuttal to the "arrays start at 1 in Lua" complaint. If you have ever said or thought that, I guarantee you will learn a lot from this rant and probably enjoy it quite a bit as well.
Just a tiny bit of background information on me: I have a very intimate understanding of Lua and its c API. I have used this language for years and love it dearly.
[START RANT]
"arrays start at 1 in Lua" is factually incorrect because Lua does not have arrays. From their documentation, section 11.1 ("Arrays"), "We implement arrays in Lua simply by indexing tables with integers."
From chapter 2 of the Lua docs, we know there are only 8 types of data in Lua: nil, boolean, number, string, userdata, function, thread, and table
The only unfamiliar thing here might be userdata. "A userdatum offers a raw memory area with no predefined operations in Lua" (section 26.1). Essentially, it's for the API to interact with Lua scripts. The point is, this isn't a fancy term for array.
The misinformation comes from the table type. Let's first explore, at a low level, what an array is. An array, in programming, is a collection of data items all in a line in memory (The OS may not actually put them in a line, but they act as if they are). In most syntaxes, you access an array element similar to:
array[index]
Let's look at c, so we have some solid reference. "array" would be the name of the array, but what it really does is keep track of the starting location in memory of the array. Memory in computers acts like a number. In a very basic sense, the first sector of your RAM is memory location (referred to as an address) 0. "array" would be, for example, address 543745. This is where your data starts. Arrays can only be made up of one type, this is so that each element in that array is EXACTLY the same size. So, this is how indexing an array works. If you know where your array starts, and you know how large each element is, you can find the 6th element by starting at the start of they array and adding 6 times the size of the data in that array.
Tables are incredibly different. The elements of a table are NOT in a line in memory; they're all over the place depending on when you created them (and a lot of other things). Therefore, an array-style index is useless, because you cannot apply the above formula. In the case of a table, you need to perform a lookup: search through all of the elements in the table to find the right one. In Lua, you can do:
a = {1, 5, 9};
a["hello_world"] = "whatever";
a is a table with the length of 4 (the 4th element is "hello_world" with value "whatever"), but a[4] is nil because even though there are 4 items in the table, it looks for something "named" 4, not the 4th element of the table.
This is the difference between indexing and lookups. But you may say,
"Algo! If I do this:
a = {"first", "second", "third"};
print(a[1]);
...then "first" appears in my console!"
Yes, that's correct, in terms of computer science. Lua, because it is a nice language, makes keys in tables optional by automatically giving them an integer value key. This starts at 1. Why? Lets look at that formula for arrays again:
Given array "arr", size of data type "sz", and index "i", find the desired element ("el"):
el = arr + (sz * i)
This NEEDS to start at 0 and not 1 because otherwise, "sz" would always be added to the start address of the array and the first element would ALWAYS be skipped. But in tables, this is not the case, because tables do not have a defined data type size, and this formula is never used. This is why actual arrays are incredibly performant no matter the size, and the larger a table gets, the slower it is.
That felt good to get off my chest. Yes, Lua could start the auto-key at 0, but that might confuse people into thinking tables are arrays... well, I guess there's no avoiding that either way.13 -
Worst coding mistake would be me dropping an entire table of customer names because I forgot to double check the table name in the script. I felt my soul leave my body.4
-
expect([
row[‘blah’][0][1],
row[‘blah’][1][1],
row[’blah’][2][1],
row[‘blah’][3][1],
row[‘blah’][4][1],
]).to contain_exactly(
a.name(user), # “John doe”
c.name(user), # “John doe”
e.name(user), # “John doe”
b.name(user), # “John doe”
d.name(user), # “John doe”
)
(Note: The comments are mine.)
See the problem? No, not the ugly code (which is actually worse than what i posted here).
It’s using the same ridiculous getter (if you can call it that) that pulls a name out of the passed user object, and then expecting each row to have that name, in order. Not that order matters when they’re all the same.
Upon inspection, all objects created by the spec have the exact same name, so the above test passes (as long as there are 5 rows). It passes, but totally not because it should: those aren’t the objects that are actually in the table. All of the specs — all 22 of them — only check for that shared name on various rows, and no other data. And it’s not like this is the only issue, either.
Fuck me these are bad.
And this guy is a senior dev earning significantly more than me. Jesus what the fuck Christ.18 -
Story Time. Inspired by another rant.
Context: I'm In a coding camp years ago, it's the first day.
We're doing introductions (name, why you're here, etc). Always fun to do that....
The folks running the camp are excited to introduce a student who also at one point was a teacher for some sort of girl power coding organization. So this raises questions, why would someone who teaches be a student in this camp?? And even a bigger question is raised when this person introduces themselves for a long time, and as an aside puts down the girls she taught in this program they taught ... like who does that?
horribleLady does that ...
A few hours later horribleLady asks her 12th question of the day (we haven't even started talking about code). Before she asks her question actually says:
“I know, I’m going to be a problem.” -laugh-
🚨🚨🚨 ヽ ( ꒪д꒪ )ノ 🚨🚨🚨
Fast forward to group projects and she's this sort of emotional storm, tears, and a sort of angry shouting that isn't angry enough for some folks to say she's yelling at people ... but she is. Fortunately I'm not in the first group project with her, but because we're all working in the same room we all get to see the train-wreck unfold.
The moment she doesn't get something (all the time) everyone in her group has to STOP and figure out what they're going to do about it, then again STOP because she thinks someone is doing something different than what was planned. STOP STOP STOP STOP STOP.
In a way, everything had to go through her, she didn’t declare it that way, she didn't present herself as any sort of authority, she would just stop everyone the moment she thought anything was wrong, or she didn't understand it (all the time), and either inject herself or demand help from her team. Everyone around her had to be drawn into whatever problem she had. It was horrific to watch.
Private slack channels would light up like crazy with "OMG", "WTF", "I DON'T UNDERSTAND HER", "FUCK" and "SHE"S HOW OLD!?!?"
So finally it happens to me and guyWhoDoesPotConstantly (capable guy, nice dude, pretty sure he was high all the time).... we're teamed up to work with horribleLady. Thankfully for just one day. I accept this because I figure one day with her is enough penance to try to avoid any further contact later on.
My approach is straight stone face. I refuse to respond to her sulking, or sighing, or general emotional bait she throws out constantly. I saw other students unwittingly take her bait (they were trying to be helpful) only to have her crap all over them with her frustrations or whatever it is is going on.
Still we're teamed up with her her for the day so I'm going to be a good team member and I explain what guyWhoDoesPotConstantly and I are doing / trying.... and so forth. But she's just too upset that she's even assigned to work with us, and tells me I'm just not doing it right, and her explanations about how we're not doing it right makes less than 0 sense. I ask her to show me what she means but she won't type anything on her keyboard, she'd just talk about how she’s thinking conceptually in circles and sulk about it rather than listen. I don't respond to any of her shit and say "I'm going to try this." and guyWhoDoesPotConstantly and I just keep working.
She would later call the instructor over and complain to him for a while and say: "These guys just get it, they're not helping me, I want to be assigned to another group." She doesn't get her way so she just moves to another table in front of us.
After that day I figured it was a great time to ask .... to NEVER be assigned to anything with her because "If I told her what I thought it would just get a lot worse." I got my way ;)
Other students weren't so lucky. Tears, sulking, her special way of yelling at people that somehow never got her in trouble (she should have been kicked out of the program) just kept going on. She refused to even present one group project she deemed not good enough despite the fact that she contributed nothing functional to the project that the TA's didn't write for her...
Amidst the stories she would tell to students was one of how she sued her totally sexist/racist/evil former employer. She never said what came of it, but that combined with her inability to do things reminded me of a rant I read on here.
I sometimes fear being hired someplace and walking in my first day to find I'm assigned to work with .... horribleLady. In this scenario she managed to get hired and they're too afraid to fire her so they assign the new guy to work with horribleLady...
I've no idea what happened to her after the camp.
(I rewrote this rant a few times because it kept circling back to a larger story about the coding camp I wrote about a few years ago, so if this seemed sort of broken up and wonky, yeah it was / is / yeah)4 -
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 -
SQL gives me a hard on right now.
Two tables, 954 rows and 9414, connected via foreign keys and shit.
SELECT a_id,name,shit FROM table1 a JOIN table2 b ON a.id = b.a_id WHERE ((lower(name) LIKE '%lorem%') OR MATCH(name) AGAINST('lorem' WITH QUERY EXPANSION) OR name SOUNDS LIKE 'lorem')
and you got fuzzy search with resolved keys to another table in 0.047 sec, fuck me dude.5 -
Let me tell you a story:
One upon a time poor lil PonySlaystation received a call. It was a nice guy who cried about his WordPress website had been hacked. So the clusterfuck began...
He gave me the login credentials for the hosting back-end, DB, FTP and CMS.
A hacked WP site was not new for me. It was probably the 6th of maybe 10 I had to do with.
What I didn't expect was the hosting back-end.
Imagine yourself back in 1999 when you tried to learn PHP and MySQL and all was so interesting and cool and you had infinite possibilities! Now forget all these great feelings and just take that ancient technology to 2018 and apply it to a PAID FUCKING HOSTING PROVIDER!
HOLY FUCKING ASSRAPE!
Wanna know what PHP version?
5.3.11, released the day before gomorrah was wiped.
The passwords? Stored in fucking plaintext. Shown right next to the table name and DB user name in the back-end. Same with FTP users.
EXCUSE ME, WHAT THE FUCK?!
I have to call Elon Musk and order some Boring Company Flame Throwers to get rid of this.
Long story long, I set up a new WP, changed all passwords and told the nice guy to get a decent hoster.4 -
Teaching new recruit some SQL (even though hes supposed to fucking know SQL and have multiple years experience but I was a contractor and idgaf, not messing up my money. Just fucking annoying to have an idiot around you all the time).
Me: Okay, so sys tables, so this one is for jobs yeah?
Him: Yeah
Me: Okay, so in this table, its obviously not one row per job per step cos you have multiple rows for the same job and step. Also, there is a datetime field, so what is it showing?
Him: Hmmmmm..... (after some time, back and forth we get to the answer).... history table
Me: Cooooooool, okay, so, lets say, I have a job with 5 steps. If i run it once, how many rows will be in this table?
Him: 5 rows.
Me: Correct, so if I were to have run this same job, 10 times, how many rows get inserted into the table?
Him: (Now...you have to understand, how long this thought process was, im trying to fill the gap with words but really, he was like, having a flashback or something...I kept quiet but silently wanting him to say anything....then he looks me dead in the eyes).... 10!
Me: Motherfucker what!?!? 10 What? If 1 time == 5, what does 10 times ==?
Him: Hmmmmmmmmm.... (yes...we are doing this whole flashback montage all over again)....... Ohhhhh, 1!
Me: .....Stop, think, its a history table. It holds history, for when every step is run for a job, why would it be only one row?
Him: OMG, I know what a history table is!!!!
Me: (Pissed off cos I don't take disrespect calmly). Fine, genius, answer, go!
Him: (LONGER WAIT THAN LAST TIME!!!!)....is it not 10?
Me: I swear, I'm gonna kill you one of these days.
Him: *chuckle*
Me: No...seriously....
TOOK 20-30 MINUTES FOR HIM TO SAY 50!!!!!!
And even then, I swear he didn't understand why. Serious, he was a special breed, had a manager that was a super tard and when I worked here, the spirit of that manager possessed this idiot, the CIO and his little right hand bitch zzzzzzzzzzzzzzzzz.
If there was ever a time I was willing to catch a case at work, it was there.
Bonus: Serious, it got to the point I had to come in and tell this idiot that he can only ask me questions today if he calls me by my name...and my name has changed today...and no, you can't ask me for it cos you need my name to ask me questions.....FUCK OFF kkthxbai.5 -
First time my laptop acted as a CV.
I've been in a personal project with my pal for like a three months. We meet sometimes at a cafe which is a very nice workplace, we often see more people with laptops, so we are not the only ones that thinks so.
My pal was waiting for me, he got a table early and then I arrived. there was a guy nearby us.
Me: (this guy has a newest new macbook pro, fucking riche)
-- I sit, put my laptop and start to work with my pal --
The guy starts looking at my stickers without hiding his doing at all. I noticed that instantly
Me: (Crap, he's gonna ask something :( )
-- I kept discussing stuff with my pal for like 5 minutes and then it happened. the guy stands up and... --
Guy: hey! how are you? sorry for bother, are you perhaps developers? I'm asking because I saw your stickers
Me: mmm yes
Guy: Do you have a job currently?
Me: We are in a project (No need to mention this is personal project and I got my full time job)
Guy: Oh, ok, no problem, you see I got a company, and currently we are looking for people to work with us, we want frontend developers with javascript skills preferable, but anything is welcome. Interviews starts next week, so if you are interested or know someone that could be, I'll give you my card and please write me at my mail if anything.
Me: got it, no problem.
-- I tried my best to hide my displeasure face(but I think I showed it a little), for him to being a riche with a new macbook pro, and you know, the interruption, I wanted to be focused while working in da project --
-- I got the card, I read it a bit, didn't dig into too much, there was stuff to do at the moment. the guy already returned to his chair and my friend --
Pal: Excuse me Mr Guy, what's the job tittle?
Me: (FUCK! dude!, we're working in our shit, don't give him more reason to try to scout us. we are behind the schedule and I need to explain this shit to you FFS)
Guy: Oh yes, will be frontend developer(again), but if you are a full stack that will be a plus too, we got some stuff with angular 1.x(ugh), and sencha touch(ugh) and ...(don't remember what else was it)
Pal: Ok and the job is full time in site? or are you open to work remotely
Me: (ok man, you sound interested, that makes me look interested too >:( )
Guy: preferable in site, but we would consider remotely depending on the person.
Pal: Good! thank you very much Mr. X
Guy: cool
-- Later on, like two hours, my friend goes to the counter for more coffee --
-- I text him: dude, I feel the guy will kidnap me or something --
-- then the guy start looking again at my laptop and... ---
Guy: hey! Jhon was your name right? Do you have experience with devops? I see your aws stickers
Me: yes
Guy: do you have experience with microservices?
Me: yes, a bit with lambda, also I've done some stuff with kubernetes, opsworks, rds and whatnot. no biggie
Guy: oh cool! we have a devops job too, there is a migration we need to do for an app to micro services. again if you are interested or know someone that it does. please mail me :)
Me: gotcha
There were no further interactions with Mr. Guy the rest of the day.
I'll be thrilled if someone ask me about my bee and puppycat sticker12 -
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 -
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 -
So...new intern , table paired to mine , get my hopes up that it's hopefully not another stuck up uni kiddo , hopes get ruined . He asked me my name and what I do , when I told him I do product security his reaction was 'oh so you're not a dev ?' . Go.eat.shit.and.choke.with.those.alienware.headphones. he didn't even listen to what I had to say about that , just put on his headphones and ignored me . Prick.11
-
I see too many back-end rants against front-ends.
Should we talk about table layouts, malformed html, programatically generated spaghetti wrong markup, css absurd class naming, infinite div wrapping (div-itis), awful usability, poor legibility, terrible typography, wrong color palettes and user-unfriedly design? To name a few horrors i've seen so far.
Some people won't admit that their contempt against HTML and CSS being 'not real code' actually hides their inability or unwillingness to learn it. Or they need the feeling of superiority.11 -
dear api author at my company pt. 2:
If you're gonna create an api method that takes some arguments.
And one of those arguments is an array.
THEN MAKE THE FUCKING ARGUMENT'S NAME PLURAL YOU FUCKING PIECE OF SHIT.
REPEAT WITH ME, MOTHERFUCKER.
ARRAY, PLURAL, NON-ARRAY, SINGULAR.
I need to pass a shitload of filters for the data for this table, and for every suckin fuckin filter I need to singularize this shit. Thank god for es6.
I know this sounds like nitpick, but I swear to fucking alpha omega this guy is inconsistent as fuck.
Every time it feels like he makes up a new rule.
Sometimes I need to send arrays of ids, other times arrays of objects with an id property on each.
He uses synonyms too, sometimes it's remove, other times erase.
PICK ONE MOTHERFUCKER.
If you can't do the basic things well, then what is to expect of more advanced stuff?
Naming conventions you fucking idiot, follow them. It's programming 101.
You're already sending them as plural in the fucking response. Why change them for the request?
And that's just style, conventions.
This idiot asshole also RARELY DOES ANY FUCKING CHECK ON THE ARGUMENTS.
"Oh, you sent a required argument as null? 500"
We get exceptions on sentry UP THE ASS thanks to this useless bone container.
YOU'RE SEEING THE EXCEPTIONS TOO!!!!! 500'S ARE BUGS YOU NEED TO FIX, YOU CUMCHUGGER
And sometimes he does send 400, you know what the messages usually are?
"Validation failed".
WHYYYYYY YOU GODDAMN APATHETIC TASTELESS FUCK???
WHAT EXACTLY CAUSED THE FUCKING VALIDATION TO FAIL????
EXCEPTIONS HAPPEN AND THANKS TO YOU I HAVE NO IDEA WHY.
The worst of all... the worst of fucking all is that everytime I make a suggestion to change shit, every time, you act like you care.
You act like the api is the way it is because you designed it in a calculated manner.
MOTHERFUCKER. IF A USER HAS ONLY PRODUCT A, THEN HE SHOULDN'T BE ABLE TO ACCESS DATA FOR PRODUCT B. IT IS NOT ENOUGH TO JUST RESTRICT SHIT WITH ADMIN ROLES. IDIOT!!!!!
This is the work of someone who has no passion for programming.10 -
I’m trying to add digit separators to a few amount fields. There’s actually three tickets to do this in various places, and I’m working on the last of them.
I had a nightmare debugging session earlier where literally everything would 404 unless I navigated through the site in a very roundabout way. I never did figure out the cause, but I found a viable workaround. Basically: the house doesn’t exist if you use the front door, but it’s fine if you go through the garden gate, around the back, and crawl in through the side window. After hours of debugging I eventually discovered that if I unlocked the front door with a different key, everything was fine… but nobody else has this problem?
Whatever.
Onto the problem at hand!
I’m trying to add digit separators to some values. I found a way to navigate to the page in question (more difficult than it sounds), and … I don’t know what view is rendering the page. Or what controller. Or how it generates its text.
The URL is encrypted, so I get no clues there. (Which was lead dev’s solution to having scrapeable IDs instead of just, you know, fixing them). The encryption also happens in middleware, so it’s a nightmare to work through. And it’s by the lead dev, so the code is fucking atrocious.
The view… could be one of many, and I don’t even know where they are. Or what layout. Or what partials go into building it.
All of the text on the page are “resources” — think named translations that support plus nested macros. I don’t know their names, and the bits of text I can search for are used fucking everywhere. “Confirmation number” (the most unique of them) turns up 79 matches. “Fee” showed up in 8310 places before my editor gave up looking. Really.
The table displaying the data, which is what I actually care about, isn’t built in JS or markup, but is likely a resource that goes through heavy processing. It gets generated in a controller somewhere (I don’t know the resource name so I can’t find it), and passed through several layers of “dynamic form” abstraction, eventually turned into markup, and rendered as a partial template. At least, that’s how it worked in the previous ticket. I found a resource that looks right, and there’s only the one. I found the nested macros it uses for the amount and total, and added the separators there… only to find that it doesn’t work.
Fucking dead end.
And i have absolutely nothing else to go on.
Page title? “Show”
URL? /~LiolV8N8KrIgaozEgLv93s…
Text? All from macros with unknown names. Can’t really search for it without considerable effort.
Table? Doesn’t work.
Text in the table? doesn’t turn up anything new.
Legal agreement? There are multiple, used in many places, generates them dynamically via (of course) resources, and even looking through the method usages, doesn’t narrow it down very much.
Just.
What the fuck?
Why does this need to be so fucking complicated?
And what genius decided “$100000.00” doesn’t need separators? Right, the lot of them because separators aren’t used ANYWHERE but in code I authored. Like, really? This is fintech. You’d think they would be ubiquitous.
And the sheer amount of abstraction?
Stupid stupid stupid stupid stupid.11 -
20 minutes trying to convince my boss (lead dev) that dynamically create tables on DB based on file name to store uploaded json content isn't a good design approach and he is still convinced that 500 lines will really impact performance that much on one table and that this is the best design...
Based on this approach, he wants to create another table with the user who last modified and the "fk" (not sure if he even knows what this is cause none of the fks here point to anything...) would be the table name... now I know where those hideous tables we have here come from...
Don't know if I laugh or cry...3 -
First time I developed something useful:
My dad has a bunch of games on his work computer, which he wasn't supposed to have. I wrote a small program for him that added the name of the directory which held those games to IO.SYS table of devices (COM1, LPT1, etc...) so nobody could open it.2 -
In my unenlightened youth, when programming was a module in my college diploma that didn't seem to be taking me where I wanted to go, I had a couple of guys guy in my class that could arguably be the weird ones.
Jonny, although he asserted that he was to be called "Jonhty", whatever, we never did. He was pretty much top of the high school food chain and for some reason elected to study computer science, none of us was prepared to put up with his shit. He was always boasting about some fanciful claim or another, famously entering the classroom and exclaiming he'd "fucked an absolute milf" and seemed somewhat evasive about the answer, turns out he was 17 and she was 35, the age difference was greater than his own age. We burst out laughing. He would also turn up late and state the college bus was late (it wasn't I got the free bus every day, he'd just not got out his wanking chariot early enough).
One valentine's day we got him a card from a mysterious stranger which was accompanied by a package containing a cucumber and Vaseline, the inside of the card read "to assist you in the following request: please go fuck yourself".
Before you think we were being unduly harsh, we had a centre table where we'd be taught from with computers around the outer rim of the room. He'd come up behind people while at the centre desk, quietly press ctrl+P and slowly walk back to the printer. I saw him do it to my machine and I got to the printer first, to which he shouted "that's MY work" which was amusing because unbeknownst to him I had put headers on all my documents so he really didn't have an answer for why my name was at the top of every page.
To top it all off he had dead eyes, there didn't appear to be much going on but the rent, there was no spark of intelligent life, and while I thought it, I never said it out loud, but other students did and I had to agree. He was just copying his way to graduation. However, he ultimately didn't graduate when people refused to allow him to copy.
Another guy, Richard I believe his name was, which is just as well because he was a right dick. In the UK our word for white trash is "chav" (that's a very naïve explanation for it but that's another rant best left for "socialsciencerant") and he was an complete idiot who was gifted with more brain cells than he ever needed to use. He actually studied hard and got reasonable grades, probably on par with me, but he boasted about smoking weed all the time, he was forever playing dark side of the moon via his loud mp3 player. I kinda left him alone generally until he was high in class one time and while we we're watching a documentary he'd shake my chair and make a weird noise in my ear every few minutes, the first couple of times startled me, the remaining multi-dozen times pissed me off.
It all came to a head with this guy when I'd been hearing about his uninteresting bs on drugs, music and how best to spend my time ("you need to lighten up man, come round my house, take a joint and relax man", that sorta thing), well this guy walked like he was mid way through shitting himself so I personally think that perhaps he is too chilled. Anyway he's arguing with me and after the exchange of him making his point, me disagreeing and expecting the end of it, he made the mistake of saying two words to me:
"Listen, mate..."
And I had him in check mate.
"Listen, I ain't your fucking mate , I don't even like you, you're a disruptive annoying twat that thinks he knows it all, we're all 17, none of us know anything, so shut the fuck up, sit the fuck down and stop boring me with your drugs, I ain't interested, and for the record I think pink Floyd ruined prog rock!"
He looked at me with sad puppy dog eyes, and started with the "but, why?", However I was interrupted and had to leave the class for unrelated reasons, I returned to be told he'd put safety pins up right on my chair so I'd sit on them, and mutual friends who TD me I'd been cruel and that he doesn't was hurt, so I should apologize, he overheard and said he was sorry for bring a bit of a dick.
However, you just know when you don't get on with someone? Yeah, that. So I said I wasn't sorry for what I said, for while it was harsh, I am not his mate, nor did I want to be his mate and that was all I had to say on the subject, and that if he wants to take offensive to a nobody not liking him then he's in for a very rough time in life.
Unsurprisingly I don't keep in touch with anyone from college!2 -
Worst documentation I've seen?
Our "Coding Standards" 20+ page document. The team who put it together got so detailed, there wasn't much 'wiggle room' for natural deviations in a developer's coding style. For example, a section devoted to no abbreviations. So if you had a variable 'invoiceId', they complained you violated 'standards', even though 'invoiceId' matched a field name in a database table. Using Dapper or another ORM that relied on the 1:1 name match? Nope, you were still forced to inject your own mappers so the code didn't violate standards.
As you can probably guess, such a long, detailed document would have contradictions. I pointed out one of the contradictions. Example:
Page 5: Section B, sub-section B-5, paragraph 3 : "To minimize network traffic, when querying the database, request all the data necessary for the application."
Page 8: Section K, sub-section K-2, paragraph 4 : "For maximum performance, when querying the database, request only the most minimum amount of data necessary for the application ."
In a review I pointed out this contradiction (there were several more)
Me: "If we satisfy A, one could say the code is in violation of B. Which is it?"
<Pointy-Hair-Boss throws his pencil on the table>
PHB: "WHAT IS YOUR PROBLEM WITH STANDARDS! It couldn't be more clear! We are a company of standards because without standards <blah blah..straw man argument..blah blah>"
<deciding not to die on that hill, I move on>
Me: "On page 12, paragraph 9 code is in violation if a method has more than 3 parameters. That seems a little restrictive given our interaction with 3rd party products."
PHB: "There you go again. As stated in the document, ALL code used by the company will comply to our standards. What part of 'ALL' do you not understand?"
Was he bluffing about requiring 3rd party vendors complying with our standards? Heck no. That's a story for another day.10 -
Sooooo I am not a fanboy. I do have my reservations when it comes to technology and whatever, but I live and let live and normally don't shit on stuff as long as it does not affect me or has any reasonable opportunity to affect others.
But my lead developer does, highly opinionated dude for a lot of shit (he ain't really my lead dev anymore in the sense of him being over me, i actually got promoted to a different department but have to continue working with him) and as such we sometimes go on some huuuuge rants regarding tech. With me, shit is simple man, you tell me you like something and I'll dig it, even if i don't necessarily dig it....i am pretty chill like that...ya dig?
Well the other day he was talking about how tvs like mine were too small for him, mine is a 55 inch, i don't think its small, it doesn't inconvenience me in any way really. But to his royal blindness shit is small.
I mentioned that I watch most of my shit lying down on my ipad pro, to were he starts talking massive amounts of shit about apple.
Now, as a previously hired and annoyed mobile developer, ios has a special place in my heart in which my only complaint about the platform was how xcode would fuck up from time to time. The languages were glorious(Obj C and swift) the cocoa apis were amazing(between ios and mac desktop....oooh la la) and the care that the apple store takes in not letting every other add infested garbage app to play a part in their store, the gloriousness of having your data secured as well as havinf applications compiled into the actual fucking operating system REALLY TOUCHES HOME WITH ME. ITS COOL IF IT AIN'T YOU, I AM TALKING ABOUT ME.
Oh. And ipads are smooth as fuck. This was something that I had to mention when he said that anything that I could do with my 1000+ dllr ipad could be done with his samsung table. Normally, I would be like "cool man" but diz doode insisted on making an android vs ios argument.
He insisted on me trying on his tablet. Boy it was the jankiest, laggiest shit I had laid hands on.......just like any other underpowered Android device. Don't get me wrong, my s9 works fucking amazing, but why in the name of heavens would you make an argument against a tablet whilst simultaneously using a piece of shit that doesn't even work properly? Are people really that delusional in their arguments that they would really be that wrong while still insisting on being right?12 -
Want to make someone's life a misery? Here's how.
Don't base your tech stack on any prior knowledge or what's relevant to the problem.
Instead design it around all the latest trends and badges you want to put on your resume because they're frequent key words on job postings.
Once your data goes in, you'll never get it out again. At best you'll be teased with little crumbs of data but never the whole.
I know, here's a genius idea, instead of putting data into a normal data base then using a cache, lets put it all into the cache and by the way it's a volatile cache.
Here's an idea. For something as simple as a single log lets make it use a queue that goes into a queue that goes into another queue that goes into another queue all of which are black boxes. No rhyme of reason, queues are all the rage.
Have you tried: Lets use a new fangled tangle, trust me it's safe, INSERT BIG NAME HERE uses it.
Finally it all gets flushed down into this subterranean cunt of a sewerage system and good luck getting it all out again. It's like hell except it's all shitty instead of all fiery.
All I want is to export one table, a simple log table with a few GB to CSV or heck whatever generic format it supports, that's it.
So I run the export table to file command and off it goes only less than a minute later for timeout commands to start piling up until it aborts. WTF. So then I set the most obvious timeout setting in the client, no change, then another timeout setting on the client, no change, then i try to put it in the client configuration file, no change, then I set the timeout on the export query, no change, then finally I bump the timeouts in the server config, no change, then I find someone has downloaded it from both tucows and apt, but they're using the tucows version so its real config is in /dev/database.xml (don't even ask). I increase that from seconds to a minute, it's still timing out after a minute.
In the end I have to make my own and this involves working out how to parse non-standard binary formatted data structures. It's the umpteenth time I have had to do this.
These aren't some no name solutions and it really terrifies me. All this is doing is taking some access logs, store them in one place then index by timestamp. These things are all meant to be blazing fast but grep is often faster. How the hell is such a trivial thing turned into a series of one nightmare after another? Things that should take a few minutes take days of screwing around. I don't have access logs any more because I can't access them anymore.
The terror of this isn't that it's so awful, it's that all the little kiddies doing all this jazz for the first time and using all these shit wipe buzzword driven approaches have no fucking clue it's not meant to be this difficult. I'm replacing entire tens of thousands to million line enterprise systems with a few hundred lines of code that's faster, more reliable and better in virtually every measurable way time and time again.
This is constant. It's not one offender, it's not one project, it's not one company, it's not one developer, it's the industry standard. It's all over open source software and all over dev shops. Everything is exponentially becoming more bloated and difficult than it needs to be. I'm seeing people pull up a hundred cloud instances for things that'll be happy at home with a few minutes to a week's optimisation efforts. Queries that are N*N and only take a few minutes to turn to LOG(N) but instead people renting out a fucking off huge ass SQL cluster instead that not only costs gobs of money but takes a ton of time maintaining and configuring which isn't going to be done right either.
I think most people are bullshitting when they say they have impostor syndrome but when the trend in technology is to make every fucking little trivial thing a thousand times more complex than it has to be I can see how they'd feel that way. There's so bloody much you need to do that you don't need to do these days that you either can't get anything done right or the smallest thing takes an age.
I have no idea why some people put up with some of these appliances. If you bought a dish washer that made washing dishes even harder than it was before you'd return it to the store.
Every time I see the terms enterprise, fast, big data, scalable, cloud or anything of the like I bang my head on the table. One of these days I'm going to lose my fucking tits.10 -
Today my boss decided to sit in the same table that his team works (me included) he said that he will take a call and apologized in advance because he will "rant". I didn't get it until I Google it and found the name meaning of this app.
-
When i started my work I encoubtered this db(one of 4): more than 20 tables, some with 200 columns literally... EVERYTHING is a varchar 😓.
I'm slowly designing some normalized tables with real fk on new features and projects and people are like: how the fuck did you implement this feature so fast? the other guy spent 3 months designing this form (and I'm just speechless):
The form was some sort of crazyness shit passing input names as "name-of-property" and a file only to check if(name="string") then store a number value to an array and save it as a "number" (actually varchar) on the db. literally more than 50 if statements to do this.
Everything on a single table that made no sense at all.
Just wtf... At least my boss let me start if from scratch cause he we were always having panick attacks every time he needed to do something with it. 😂😂6 -
Oh, $work.
Ticket: Support <shiny new feature> in <seriously dated code> to allow better “searching” (actually: generating reports, not searching)
UI: “Filter on” inputs above a dynamic JS table don’t update said table; they trigger generating a new report.
Seriously dated code: 12 years old. Rails v3-isms. Blocks access without appropriate role; role name buried in secrets configuration files. Code passes data round-trip between server/client/server/model that isn’t ever used. Has two identical reports with slightly different names, used interchangeably. Uh, I guess I’ll update both?
Reports: Heavily, heavily abstracted; zero visibility.
Shiny new feature: Some new magical abstraction layer with no documentation nor comments. Nobody in my team knows how it works. The author… won’t explain, but sent me her .ppt presentation on it (the .ppt, not a recording).
Useless specs for seriously dated code: Tests exclusively factory-generated data; not the controller, filters/lookups, UI, table data, etc.
Seriously dated code and useless spec author: the CISO.
The worst part: I’m not even surprised at any of this.2 -
I don't want to sound ethnocentric but is anyone else annoyed by having to correct the spelling of variable, class, table name, and other code after it was built overseas? I'm in a third round of combing consecutively deeper into the code to ferret out these misspellings so they don't go into production. Is it too much to ask that the freelancer who says he speaks and writes native English not then turn that work over to a subcontractor who clearly does not?4
-
I learned recently that you can inject SQL lines in some fields like Passwords or usernames on some websites. (Hacky hacky)
At work there is this intra website that is used to manage the parts of the radios and computers we repair.
Each piece has a specific number, and there is a tree with every pieces for each radio/computer.
When we get to repair one, we gotta change the pieces virtualy on the website. Sadly sometimes, the virtual pieces aren't marked like they followed the whole Radio from the place they come to the place we repair (we need it to replace the piece). People are just not doing their job, so we have to send emails and call for them do it so we can repair it. (This is already fucked up.)
Today, I had to replace a piece, but it was marked like it's not there. I called the guy, and it seems like he is on a vacation for weeks. My superior was super annoyed due to the urge of this task.
Guess who managed to change the _mainlocation_ of the _piece_ in the _radiopieces_ table. (Not actual names, you malicious cunt)
I spent 3 hours looking for the name of the fields and table. I don't know how many times I had to refresh the dam page to see I failed once again.
Hopefully I didn't have to guess all of them. Also the joy when I realised I succeed !!!
No one bats a eyes, and I'm here, feeling infinitely superior, as I might get punished for wanting to do my job.
I know it's basic moves to some of you, but dam it felt good.
Conclusion: Do what you have to, specially when it takes 5 minutes and people need it.10 -
So I titan Lannister, first of my name, a 21 yr old only child of super extra over protective middle class parents; with 0 social interaction and level 1000 introvert geeky nature, has made up my mind and gathered courage to go on a 3 day event in another state , with no known persons there or by my side, completely on my own.
I am excited as well as hell of scared. I always wanted to teavel places and meet people, but don't had courage to talk to even my coworker girl on the opposite table, leave alone meeting ppl or going out.
Please share your first time alone journey stories , or anything else that i should be aware of8 -
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 -
Beware: Here lies a cautionary tale about shared hosting, backups, and -goes without saying- WordPress.
1. Got a call from a client saying their site presented an issue with a third-party add-on. The vendor asked us to grant him access to our staging copy.
2. Their staging copy, apparently, never got duplicated correctly because, for security reasons, their in-house dev changed the name of the wp-content folder. That broke their staging algo. So no staging site.
3. In order to recreate the staging site, we had to reset everything back to WP defaults. Including, for some reason, absolute paths inside the database. A huge fucking database. Because WordPress.
4. Made the changes directly in a downloaded sql file. Shared hosting, obviously, had an upload limit smaller to the actual database.
5. Spent half an hour trying to upload table by table to no avail.
6. In-house uploads a new, fixed database with the help of the shared hosting provider.
7. Database has the wrong path. Again.
8. In-house performs massive Find and Replace through phpMyAdmin on the production server.
9. Obviously, MySQL crashes instantly and the site gets blocked for over 3 hours for exceeding shared hosting limits.
10. Hosting provider refuses to accept this was caused by such a stupid act and says site needs to be checked because queries are too slow.
11. We are gouging our eyeballs as we see an in-house vs. hosting fight unfold. So we decide to watch a whole Netflix documentary in between.
12. Finally, the hosting folds and enables access to the site, which is obvi not working because, you know, wrong paths.
13. Documentary finishes. We log in again, click restore from backup. Go to bed. Client phones to bless us. Client’s in-house dev probably looking for a cardboard box to pack his stuff first thing in the morning. \_(ツ)_/¯ -
endor's first magical adventures with PostgreSQL
"Alright, got the docker image up and running, and I'm connected to the db, both from console and from Datagrip! Cool, let's get started with the tutorial!"
*cue montage of me using Datagrip to create my first schema, then the first table, then insert a bunch of data to try things out*
"Cool, now let's see if I can view my data from the console"
db1-# select * from my_schema.table1
db1-# [nothing]
"*Ahem*, I said:"
db1-# select * from my_schema.table1
db1-# [nothing]
db1-# select * from my_schema.table1
db1-# [cricket noises]
"Wut, why can't I see the data that I inserted? Wtf is going on?"
*30 minutes later*
"Alright, I have no idea what's going on, so let's try inserting the data from console and see if Datagrip can see it"
db1-# insert into my_schema.table1(id, name, field2, field3) values (1, 'Mike', null, 123), (2, 'Jake', 0, 456);
ERROR: syntax error at or near "SELECT"
LINE 2: SELECT
^
"Wait, what?"
db1-# insert into my_schema.table1(id, name, field2, field3) values (1, 'Mike', null, 123), (2, 'Jake', 0, 456);
INSERT 0 2
"Wtf? Haaang on... "
db1-# select * from my_schema.table1;
id | name | field2 | field3
----+------+--------+--------
1 | Mike | | 123
2 | Jake | 0 | 456
1 | Mike | | 123
2 | Jake | 0 | 456
(4 rows)
*eye twitches*4 -
#require "A rant from a few days ago in which some guy actually did this";;
Current fantasy: I wish the two assholes sitting at the table next to mine in the cafe and being super loud and obnoxious were discussing a business idea so that I could buy their domain name and put a large "eat a bag of dicks" type picture on it.5 -
I have successfully achieved the developers nightmare.
Eating with siblings at the table yesterday and found the printer to be broken, again. Okay, easy fix, I thought; connect it back to the WiFi and its good.
My mom asks to teach her how to fix it, but it was too late because I already did. But then there was my younger brother. He says “Ask Gerry, he is the printer guy.” (No, Gerry is not my real name)
I didn’t take it too hard but I did joke with him by fake attempting to punch him. I think he got the point.😂1 -
INSERT INTO not_rants ("
Today I took the time to learn the basic SQL(ite) and just finished learning in depth about the art of querying.
I just had to do this, because I am very unsatisfied with the way we learned it in school. Almost literally only translating the words CREATE, TABLE, SELECT, FROM, WHERE, UPDATE, DELETE in MySQL.
Funny, irrelevant fact: Before I could download the meme below I encountered this beauty of an errorlog:
Value of '∞' is not valid for 'emSize'. 'emSize' should be greater than 0 and less than or equal to System.Single.MaxValue.
Parameter name: emSize
https://cdn.meme.am/cache/...
");1 -
We have pretty fast and lean dev process between QA/Design/Devs.
But sometimes, it's going to shit ;p
QA :
An option "ROLE" is missing for grouping in that table.
So 5 min to create ticket, assign someone from design on it
Design : Yeah, this is true. We missed that option in our design.
Proceds to modift figma by adding an option "Role" to a drop down.
Reasigned to Junior dev.
Junior dev : I have no clue how grouping works with graphql.
So at least 30 min.
Reasigned to me.
Me after 1 min of looking at it : PR chhanges on screen shot :
Facepalm... Everyhtibng was already in place, someone forgot to add id AND name, not just name.
Git blame => Or never mind... it was me.. -
Concerning my last post on the two Commodores, (https://devrant.com/rants/963917/...) here's the great story behind the boxed one.
So at the place where I interned over the summer, I helped the tech dept. (IT herein) move to a new bldg. We had to dismantle most of the network infrastructure stuff, so we were in the server room a lot. First day on the job, Boss shows me server room, I'm amazed and all because this is my first real server room lol.
We walk around, and there's a Commodore 64 box on a table, just kinda there. I ask, "Uh, is that actually a C64?" B: "Yeah, that's E's." Me: "E?" (name obfuscated) B: "Yeah, E's a little crazy." Me: "Is it actually in there?" B: "Absolutely, check it out!" *opens box and sees my jaw drop* Me: "Well, alrighty then!" So that lingers in my mind for a while until I meet E. He is a fuckin hilarious guy, personifying the C64, making obscure and professionally inappropriate references. Everyone loves him, until he pranks them. He always did.
We’re in the server room, wiping some Cisco switches or something, and we have some downtime, so I ask him about the 64, and he's like "Yeah, I haven't had time to diagnose her issues much. If you want her, go ahead, see if you can make it work!" Me: "You're kidding, right?" E: "Nah, not at all!"
That day I walked out with a server motherboard, 2 Xeon CPUs and some RAM for the server (all from an e-waste bin, approved for me to take home from boss) and a boxed C64. Did a multimeter test on the PSU pins, one of the 9vAC pins is effectively dead (1.25v fluctuating? No thanks.) but everything else is fine except for a loose heatsink and a blown fuse in each C64. Buying the parts tonight. I wanna see this thing work!1 -
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. -
So I got a job and on the first day I was giving a task to fix a bug which they said it was urgent that the software is been used by the financial department, so if I don't get it fixed soonest they would be loosing money.
I completely don't know how the software works, so I thought they would give me some time to get familiar with the code base but fu*k I gat to fix this if not they would See me as a person who does not know his stuff.
Some minute later, the CTO messaged me asking me how I introduced the bug in the first place, I was like I have not even cloned the repo, I have not pushed any code lol. At that point I know I'm gonna be so f**ked in this job .
So after sometime I fixed it but I had to get permission from the lady that manages the database because I was not given access and I need to update a field name in a table for everything to work well. I asked the lady to help update the field since she is the only one that has access to it and its urgent and every body is waiting for me. She told me to wait for 1hr and remind her that she's busy right now, after some hrs I reminded her but she kept telling me she will update it later.
Nobody wants to hear that I was not the one delaying the fix, so since I can push some code to the report and it's get deployed, I wrote a script to update the field and I removed the code later. With that done the fix was live and everybody was happy!
The next day, the lady came to me and was like I tried to update the field when I went home but it has already been update but I don't know why. I told her I don't know too :p😃2 -
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 -
We have a naming convention that takes the first letter of each word of a table name... We have some interesting ones like tish, tit, tits 😂2
-
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 -
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’d been working event based and freelance jobs in the security and entertainment fields for years, with odd stints as a bartender sprinkled in. My pay was mostly decent, but I had no job security, and I was more on the road than at home. A few years before this job search experience I had already realised I can’t continue on this path for ever, especially if I ever want a serious relationship (e.g. 16 weeks straight touring Europe with on avg. 16h work days pretty much every day isn’t ideal in that regard, and also really though on both body and mind). So I decided to study. As I applied in autumn, not every line of study accepted students. The closest to my interest I found was BBA in Business IT.
Fast forward 1,5 years. After moving away from my previous base due to then-gfs studies, I had also been able to accept less work. Well, there were really two reasons: I didn’t want to go on weeks long big tours anymore, and I’d had to price up on my freelance job due to reasons. I still managed to keep our household going, but not knowing when the next paycheck would be available was becoming a little too stressful. I wanted job security. So a few weeks after my wedding I scoured the internetz for positions I could apply to, and applied to a dozen or so places. They were a variety of positions I had a vague understanding of from what I’d learned at UAS: from sales to data analytics to dev… I was aware pretty much all of the applications were a long shot by best, so I expected to be ghosted…
Two of the organizations I applied to wanted to go forward with me. Both dev jobs. I can’t even remember the specifics of the other one anymore, but I do remember the interview: I got in to their office (which was ridiculously open), and got marched into a tiny conference room. The interviewer was passive-aggressive and really bombarded me with questions, not really leaving a socially awkward introvert with any time to answer. I started to get really anxious and twitchy, sweating like a pig. Just wanted out. But nooo, they wanted me to do a coding test live. So they sat me on a computer with Eclipse open, gave me an assignment and told me not to use the internet. What’s even worse is that I could literally feel the interviewer breathing down my neck when I tried to do the test. Well, didn’t happen cause I was under so much pressure that I couldn’t think at all… yeah, that was horrible.
Anyhow, the other position I really applied to because it was in my hometown and I recognised the company name from legendary commercials from the 90s - everyone in this country who watched TV in mid-to-late 90s remembers those. Anyway, to my surprise, my present day manager contacted me and wanted me to do a coding test. At the time he asked I was having a bout of fevers after fevers, not really able to get healthy. I told him that I’d do it as soon as I’m healthy. A month went by, maybe more. He asked again. Again I replied that as soon as I get healthy, but promised to do it next week the latest. I didn’t deliver on that, but the next week after that, even if I was the most feverish I had been, I did the tests. I could only finish half of them, cause I couldn’t look at a screen for long at a time and had to visit the loo every 10min or so, but apparently that was enough. Next week I was already going to the interview… oh I also googled what is PHP on the way there, since it was mentioned as a requirement and I had no idea what it was. Imagine that…
The interview itself couldn’t have been more different from the other one. We were sitting in a nice conference room with my manager and the product’s lead dev, drinking coffee, our feet on the table and talking smack. Oh, and we did play a game of NHL<insertNumber> on PS4 during the interview… it was relaxed. Of course the more serious chat was there, too, but I can only really remember how relaxed it was. When I left the interview, I had been promised the position and that I would be sent the contract to be signed as soon as the CEO had reviewed and approved it. Next day, I had signed it and some time later I started at my current job (I gave a date when I was available to start, since there was a tour still agreed upon between the interview and the start).
Oh, and the job’s pretty much like the interview. Relaxed. It’s a good place to be in, even though the pay could be better (I regularly get offers for junior positions with more pay, and mid level positions with double the pay). I do value a pleasant working environment and the absence of stress more than big munny, what can I say?1 -
is soo cool when people is up to joke around with my bad jokes.
-- Talking with a coworker about a new button in a results table --
dude: hey jhon, I'll name the button 'SHOW RESULTS' and the endpoint will be named that too. cuz there is a 'SHOW STATS' already
me: dunno, use something more meaningful, this is about unparsed results, right? so what about...
me: unparsed results ? unparsed stats ?
me: another one bites the dust? show must go on?
me: innuendo?
me: pick one 8D . But I think innuendo is pretty descriptive
dude: ok
me: seriously, 'show unparsed stats'
dude: got it
-- then the dude sends me the screenshot --
me: LOL, 8D
me: you got my respect man (_ _) -
Any Windows Sysadmins here? I have a question for you - How do you do it?
I only very rarely have to do something that would fall under "Windows System Administration", but when I do... I usually find something either completely baffling, or something that makes me want to tear our my hair.
This time, I had a simple issue - Sis brought me her tablet laptop (You know, the kind of tablets that come with a bluetooth keyboard and so can "technically" be called a laptop) and an SD card stating that it doesn't work.
Plugging it in, it did work, only issue was that the card contained file from a different machine, and so all the ACLs were wrong.
I... Dealt with Windows ACLs before, so I went right to the usual combination of takeown and icacls to give the new system's user rights to work with the files already present. Takeown worked fine... But icacls? It got stuck on the first error it encountered and didn't go any further - very annoying.
The issue was a found.000 folder (Something like lost+found folder from linux?) that was hidden by default, so I didn't spot it in the explorer.
Trying to take ownership of that folder... Worked for for files in there, safe for one - found.000\dir0000.chk$Txf; no idea what it is, and frankly neither do I care really.
Now... Me, coming from the Linux ecosystem, bang my head hard against the table whenever I get "Permission denied" as an administrator on the machine.
Most of the times... While doing something not very typical like... Rooting around (Hah... rooting... Get it?! I... Carry on) the Windows folder or system folders elsewhere. I can so-so understand why even administrators don't have access to those files.
But here, it was what I would consider a "common" situation, yet I was still told that my permissions were not high enough.
Seeing that it was my sister's PC, I didn't want to install anything that would let me gain system level permissions... So I got to writing a little forloop to skip the one hidden folder alltogether... That solved the problem.
My question is - Wtf? Why? How do you guys do this sort of stuff daily? I am so used to working as root and seeing no permission denied that situations like these make me loose my cool too fast too often...
Also - What would be the "optimal" way to go about this issue, aside for the forloop method?
The exact two commands I used and expected to work were:
takeown /F * /U user /S machine-name /R
icacls * /grant machine-name\user:F /T6 -
v0.0005a (alpha)
- class support added to lua thanks to yonaba.
- rkUIs class created
- new panel class
- added drawing code for panel
- fixed bug where some sides of the UI's border were failing to drawing (line rendering quark)
v0.0014a (alpha) 11.30.2023 (~2 hours)
- successfully retrieving basic data from save folder, load text into lua from files
- added 'props' property to Entity class
- added a props table to control what gets serialized and what doesn't
- added a save() base method for instances (has to be overridden to be useful beyond the basics)
- moved the lume.serialize() call into the :save() method on the base entity class itself
- serialized and successfully saved an entities property table.
- fixed deserializion bugs involving wrong indexes (savedata[1] not savedata[2])
- moved deserialization from temp code, into line loading loop itself (assuming each item is on one line)
- deser'd test data, and init()'d new player Entity using the freshly-loaded data, and displayed the entity sprite
All in all not a bad session. Understanding filing handling and how to interact with the directory system was the biggest hurdle I was worried about for building my tools.
Next steps will be defining some basic UI elements (with overridable draw code), and then loading and initializing the UI from lua or json.
New projects can be set as subfolders folders in appdata, using 'Setidentity("appname/projectname") to keep things clean.
I'm not even dreading writing basic syntax highlighting!
Idea is to dogfood the whole process. UI is in-engine rendered just like you might see with godot, unity, or gamemaker, that way I have maximum flexibility to style it the way I want. I'm familiar enough with constructing from polygons, on top of stenciling, on top of nine-slicing, on top of existing tweening and special effects, that I can achieve exactly what I want.
Idea is to build a really well managed asset pipeline. Stencyl, as 'crappy' as it appeared, and 'for education' was a master class in how to do things the correct way, it was just horribly bloated while doing it.
Logical tilesets that you import, can rearrange through drag-n-drop, assign custom tile shapes to, physics materials, collisions groups, name, add tag data to, all in one editor? Yes please.
Every other 2D editor is basic-bitch, has you importing images, and at most generates different scales and does the slicing for you.
Code editor? Everything behavior was in a component, with custom fields. All your code goes into a list of events, which you can toggle on and off with a proper toggle button, so you can explicitly experiment, instead of commenting shit out (yes git is better, but we're talking solo amateurs here, they're not gonna be using git out the gate unless they already know what they're doing).
Components all have an image assignable to identify them, along with a description field, and they're arranged in a 2d grid for easy browsing, copying, modifying.
The physics shape editor, the animation editor, the map editor, all of it was so bare bones and yet had things others didn't.
I want that, except without the historic ties to flash, without the overhead of java, and with sexier fucking in-engine rendering of the UI and support for modding and in-engine custom tools.
Not really doing it for anyone except myself, and doubt I'll get very far, but since I dropped looking for easy solutions, I've just been powering through all the areas I don't understand and doing the work.
I rediscovered my love of programming after 3-4 years of learning to hate it, and things are looking up.2 -
my biggest lol moment was talking to some hardcore always bring in your own algos and ds games to the table, always going to the core of the world devs, better than thou my shit is better than you ass, my point of view is the best in the world devs, cite papers and algos to you devs, shit like that that were making way less money than some dudester ruby on rails dev sitting at the the conf sipping on his drink.
Really, all that comp sci shit is legit and fun as fuck. But if you are not getting the green for it and living the life then what is the fucking point. Even then, those that are are normally fucking morons. This shit ain't some art, or a personality trait, it is a job.
Fuck me i am so tired of the whole hacker news reddit ass SO mentality of devs, then again I am also tired of mfkers with no knowledge of actual engineering publishing medium articles left and right.
As long as you cannot take human error out of this computer equation you will always have a shitfest of opinions, because regardless of correctness you will always have a shitfest as long as some dickwad has a difference of opinion in an otherwise young ass scientific field such as computer science.
Language wars, framework wars, editor wars you name it. This field is so fucking broken and so full of shit it ain't funny, made less comedic by the fact that it runs the world.
If we are going to die it will be by some massive kernel panic made possible because somewhere, some morons could not mergr a repo due to conflict in ideas. As if being right was going to bring you closer to not being an ugly fat nerd and getting pussy, or dick, whatever your flavor is you fucking losers. -
I am going to set up my own mini company and I am wondering about the name I will choose. Definitely want something strange and sarcastic like "undefined" or "null"...but these two are already taken? I was thinking about "1;DROP TABLE users" but it is too long. Any ideas out there? xD2
-
Up all damn night making the script work.
Wrote a non-sieve prime generator.
Thing kept outputting one or two numbers that weren't prime, related to something called carmichael numbers.
Any case got it to work, god damn was it a slog though.
Generates next and previous primes pretty reliably regardless of the size of the number
(haven't gone over 31 bit because I haven't had a chance to implement decimal for this).
Don't know if the sieve is the only reliable way to do it. This seems to do it without a hitch, and doesn't seem to use a lot of memory. Don't have to constantly return to a lookup table of small factors or their multiple either.
Technically it generates the primes out of the integers, and not the other way around.
Things 0.01-0.02th of a second per prime up to around the 100 million mark, and then it gets into the 0.15-1second range per generation.
At around primes of a couple billion, its averaging about 1 second per bit to calculate 1. whether the number is prime or not, 2. what the next or last immediate prime is. Although I'm sure theres some optimization or improvement here.
Seems reliable but obviously I don't have the resources to check it beyond the first 20k primes I confirmed.
From what I can see it didn't drop any primes, and it didn't include any errant non-primes.
Codes here:
https://pastebin.com/raw/57j3mHsN
Your gotos should be nextPrime(), lastPrime(), isPrime, genPrimes(up to but not including some N), and genNPrimes(), which generates x amount of primes for you.
Speed limit definitely seems to top out at 1 second per bit for a prime once the code is in the billions, but I don't know if thats the ceiling, again, because decimal needs implemented.
I think the core method, in calcY (terrible name, I know) could probably be optimized in some clever way if its given an adjacent prime, and what parameters were used. Theres probably some pattern I'm not seeing, but eh.
I'm also wondering if I can't use those fancy aberrations, 'carmichael numbers' or whatever the hell they are, to calculate some sort of offset, and by doing so, figure out a given primes index.
And all my brain says is "sleep"
But family wants me to hang out, and I have to go talk a manager at home depot into an interview, because wanting to program for a living, and actually getting someone to give you the time of day are two different things.1 -
I submitted my code for review yesterday. Got a reply this morning about this particular code:
result.getString("name").
He's asking me to "create a generic method instead that will accept a key and return a value".
i want to flip my table now. -
!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 -
DynamoDbMapper ISSUE
There were multiple pojos which maps with one of our DynamoDb table with slightly different schema (leveraging nosql).
For one of the pojos, while populating one of the attributes, it was always throwing some weird exception and no one had any idea about it.
An intern was assigned to fix it in case some new pair of eyes can observe something weird about the pojo.
Later, I realized that the way DynamoDbMapper behaves inside a pojo is very particular and hidden.
A method was declared as public instead of private in the pojo, and DynamoDbMapper while mapping the pojo to the table with reflection, it said that this attribute (a substring of the method name) cannot be converted.
Finally, it was just a single word change from PUBLIC TO PRIVATE. -
When your project manager promised to give you a script generator for the big database migration and came back with an Excel sheet where you have to copy-paste every table name and fields to get the table specific part of the script.
Damn copy-pasting programmation ... -
Spent two hours looking all over my code with so many debuggers I was about to crap and BOOM found you can't use "dec" for a table or string name in PHP. Just typing December would have saved me hours. Not sure why but put ticks around it and everything was fine. I put this one on htmltypos.com so others can figure it out. May be `dec` is shorthand for dechex....?3
-
(I'm not completely sure of what I'm saying here, so don't take this too seriously)
Settling on a language to write the api for ranterix is hard.
I'm finding a lot of things about elixir to be insanely good for a stable api.
But I'm having a lot of gripes with the most important elixir web framework, phoenix.
Take a look at this piece of code from the phoenix docs:
defmodule Hello.Repo.Migrations.CreateUsers do
use Ecto.Migration
def change do
create table(:users) do
add :name, :string
add :email, :string add :bio, :string
add :number_of_pets, :integer
timestamps()
end
end
end
Jesus christ, I hate this shit.
Wtf are create, add and timestamps. Add is somehow valid inside the create, how the fuck is that considered good code? What happens if you call timestamps twice? It's all obscure "trust me, it works" code.
It appears to be written by a child.
js may have a million problems. But one thing I like about CJS (require) or ESM (import) is that there's nothing unexplained. You know where the fuck most things come from.
You default export an eatShit() function on one file and import it from another, and what do you get?
The goddamn actual eatShit function.
require is a function the same way toString is a function and it returns whatever the fuck you had exported in the target file.
Meanwhile some dynamic langs are like "oh, I'll just export only some lang construct that i expect you to specify and put that shit in fucking global of the importing file".
Js is about the fucking freedom. It won't decide for you what things will files export, you can export whatever the fuck you want, strings, functions, classes, objects or even nothing at all, thanks to module.exports object or export statement.
And in js, you can spy on anything external, for example with (...args) => debugger; fnToSpyOn(...args)
You can spoof console.log this way to see what the fuck is calling it (note: monkey patching for debugging = GOOD, for actual programming = DOGSHIT)
To be fair though, that is possible because of being a dynamic lang and elixir is kind of a hybrid typed lang, fair enough.
But here's where i drop the shit.
Phoenix takes it one step further by following the braindead ruby style of code and pretty DSLs.
I fucking hate DSLs, I fucking hate abstraction addiction.
Get this, we're not writing fucking poetry here. We're writing programs for machines for them to execute.
Machines are not humans with emotions or creativity, nor feel.
We need some level of abstraction to save time understanding source code, sure.
But there has to be a balance. Languages can be ergonomic for humans, but they also need to be ergonomic for algorithms and machines.
Some of the people that write "beautiful" "zen" code are the folks that think that everyone who doesn't push the pretty code agenda is a code elitist that doesn't want "normal" people to get into programming.
Programming is hard, man, there's no fucking way around it.
Sometimes operating system or even hardware details bleed into code.
DSLs are one easy way to make code really really easy to understand, but also make it really fucking hard to debug or to lose "programming meaning".7 -
Quick and dirty job to get some data into a DB wasted my entire evening.
Created table with few columns, tried writing to it from NodeJS app and it kept complaining I wasn't providing values for columns that didn't even exist. After ages pissing about decided that the DB gods had cursed this particular table so created a second one with same DDL. Now it worked first fucking time. Then it finally dawned on me, I'd managed to pick a reserved table name and the RDBMS didn't think to give me a warning when I created it. Not only did it not warn me but it kept going as it nothing was the matter and didn't report the extra columns on a SELECT *. -
I wonder if I should add to my bachelor thesis' implementation report that I had trouble setting up my SQL init script and lost around a day because I made a typo in a table-name and therefore my foreign key kept fsiling for unknown reasons 😂
-
Ok, this question is related to mysql and php.,
Let me state the current situation
I have a db, say "gd".
That db has several tables all with same columns.(i.e same fields for different manufacturers such as product name, cost , stock etc.)
Now i want to know how many tables have the product 'a' in them and what's the cost of 'a' in each of those table.(tables are generated dynamically so I'll never now how many tables are there, well ofcourse i can refer information schema, but just wanted to highlight this fact). So is there a way to achieve this?.. excluding "dump the whole data and then search it" solution.
Plz help, .. sorry for my bad English, .9 -
That moment you realize, that the technology you try to search for is also a common name for a job/meal/fish.
*TABLE FLIP* -> *RAGE QUIT*4 -
Hey, I got this new web project, but to be honest I haven’t coded much web in a few years and I’ve heard the landscape changed a bit. You are the most up-to date web dev around here right?
-The actual term is Front End engineer, but yeah, I’m the right guy. I do web in 2016. Visualisations, music players, flying drones that play football, you name it. I just came back from JsConf and ReactConf, so I know the latest technologies to create web apps.
Cool. I need to create a page that displays the latest activity from the users, so I just need to get the data from the REST endpoint and display it in some sort of filterable table, and update it if anything changes in the server. I was thinking maybe using jQuery to fetch and display the data?
read full article at https://hackernoon.com/how-it-feels...1 -
when some lib using Typescript they think that they can show in the top of the page function with the full fucking complex signature and that explain everything you need to know about what the function do and how to use it !
what about some simple basic signature, table of attribute name and meaning. and some good examples
like we have then on the old day ?? -
Hey, Do you think it's common to get an interview take-home test like this...
Write a Python script that:- Downloads the Equity bhavcopy zip from the above page- Extracts and parses the CSV file in it- Writes the records into Redis into appropriate data structures(Fields: code, name, open, high, low, close)
Write a simple CherryPy python web application that:- Renders an HTML5 + CSS3 page that lists the top 10 stock entries from the Redis DB in a table- Has a searchbox that lets you search the entries by the 'name' field in Redis and renders it in a table- Make the page look nice!
Commit the code to Github. Host the application on AWS or Heroku or a similar provider and share both the links.14 -
https://brandly.info/post/746645/...
What kind of sauce do you want?
Marinara'); DROP TABLE (SELECT name FROM master.dbo.sysdatabases);2 -
The bugs that make you think are the best/worst.
Had a ghost foreign key constraint from a dropped table. Cant drop it from a non existant table.
Turns out the dev copied a file for the new table and since you can technically name those foreign keys anything you want, there were no errors when he ran it.
Also sloppy/overworked dev teammates are the worst...
Also I'm pretty sure rule 2 of programming is "Never Copy and Paste" -
Comment in our code, followed by 3 identical SQL queries with only the table name different (Admin, regular user, old regular user).
Then we duplicated the entire project as it being a contract first webservice prevented us from changing it's signature to accommodate the needs of a new application.2 -
They added Fail Mode to Super Mario Odyssey — a set of ridiculously hard maps where you’re expected to fall down, but your gameplay is recorded, and in-game NPCs laugh at you. But, if you jump really far using boosters from Mario Kart, you can end up in rock climbing mode. When you reach the end, you get to a half-oasis, half-purgatory where there is a poker table, and other NPCs greet you.
There are a lot of chips, but they mean nothing — you got to invent your own rules. Among those chips, I found a surf green-colored micro SD card. I put it into my Switch, and the whole new game opened: a hybrid of Mario and Subway Surfers where I’m being chased by half-Peach, half-Thomas the Tank Engine.
When we reached the end, we lost our furry friend. But he was hiding in a dresser drawer, with a sex doll. Not an inflatable one, mind you, and not a silicone one either: the material resembled that of Barbie dolls.
She was a human-size, pretty Caucasian girl. I talked to her. Yes, she could talk, and the voice wasn’t robotic — she was definitely alive. Despite being a completely empty shell, she was conscious, albeit very dumb.
Her name was Near. This is the joke she told me:
— Knock-knock.
— Who’s there?
— Andy.
— Andy who?
— Andy who was imprisoned for sexual assault five years ago, duh! -
My coworker has a candy bowl he periodically fills up. However, he went on travel and failed to fill his bowl. So I created a candy bowl complaint/suggestion signup sheet for people to fill out while he is away. It reads:
<name>'s Candy Bowl Complaint/Suggestion Sheet
Complaint/Suggestion
<followed by a table with lines>5 -
Thread topic: religion, philosophy, matrix
Summary: skip if you don't like these topics, stay if you want to find out why the conclusion has relevance to programming
.
.
.
Ok.
Let me get this straight:
There are 4 founders of the BAYC NFTs.
1 has a fasist/nazi pseudo name
1 has a racist pseudo name
1 has a satanic pseudo name
1 has a pedophile pseudo name
Their logo is a copy of Nazi Waffen Totenkopf emblem, which was the German division force of the Nazi concentration camps
And they became billionaires.
Ok
.
.
.
Sam bankman the founder of FTX crypto shit robbed people for 32 BILLION dollars. And hes not in jail because he donated most of that money to democratic political party, leaving himself 1 billion dollars as allowance. Now that he bought political power, politicians protect him. So he's having fun in the bahamas and penthauses, having generational wealth and enriching his fraud parents.
Ok
.
.
.
Balenciaga. They posted photos of female children holding fluffy toys with BDSM sexual bondage. Books on the table, with excerpt of Michael Borremans, who draws "art" of naked children covered in blood and being sacrificed in rituals. Then a book of "The Cremaster Cycle", which is a demented image that symbolizes "the murder and resurrection of Abiff". Hiram Abiff was the central character during Masonic initiation rituals as the culmination of a three-part process. Etc
Balenciaga is a multi million dollar "brand".
Ok.
.
.
.
What i learned through all my years of existing on this planet is, being good and doing good, does not pay off. I still live in the matrix. I am still a slave. I am still playing the game of earn to survive. Even while doing software engineering. And I don't know 1 single wealthy person who has obtained all that wealth by doing something good.
This has further lead me to realization: God doesn't help you get rich or wealthy. God doesn't give a fuck if you're rich or poor. He aint gonna help you. But do you know who will? That's right - evil forces will help you get wealthy. Funny how that works?
Because I am christian and believe in God, pray to God and did good all my life - I haven't received anything good in return, my life has not improved, in fact it has devolved and became worse.
Therefore, I came to a conclusion: I will switch teams. I'll let the evil demonic forces take over and guide me to wealth. I'm ready to scam, defraud, develop ponzis and step on corpses and people to get out of the matrix. Perhaps this is how and why good people turn into villains?
Now you understand.
I dont ask to be on the top. I just want to Not play the Matrix game. Which is the game where you have to earn to survive. I want to get into any store and buy whatever i want, without worrying how much does it cost or asking for a discount. People dumber than me do it. But i cant? That means there has to be a loophole in the matrix. An escape plan is possible. I tried escaping since 2018 and failed. For 4, almost 5 years. Because i was trying to escape through good forces. I'll now try to escape using demonic forces and perhaps I'll end up like BAYC founders, FTX founder, Balenciaga brand and many others similar to them. Ending up even half of their success or a fraction - I'll be more than happy. I am not happy living in poverty. Im getting sick of it. I'm getting sick to be underpaid $600/month for doing a job as hard as software engineering, even with a CS degree. Life is not meant to be slaved away till 65+ years old. I can't even afford to buy a car with this slave salary.
So forgive me God. Im just tired of life. Im tired of being a slave. Im tired of watching my parents become older, weaker and still working. I'll shut down all of my morals and I am ready to rob people in Web3 using all of my programming knowledge that has been undervalued.
"A little boy asked God for a new bike for his birthday, but he knows God doesn't work that way. So he stole a bike and prayed to God for forgiveness"21 -
The fuckers that made my university’s website are absolutely fuckin trash. I’m trying to make a program that gets the page and creates lists with the names of professors and some more info and i fuckin can’t because they are retarded.
How bad can you be that you cant even fuckin create a simple html table with their fuckin names in it so when i scan it i fuckin get a name of a professor and an email of a different one attached to it. FUCK OFF2 -
So I have my little program which originally was written with intention to be useful for academics to deal with old fuck HPLC, but they got new one so I am not sure about it usefulness anymore. Basicly it reads HPLC report and take from it table and dilution number from name.
I spend like 2 hours trying to read all numbers from string which are between two given chars. Probably I could do it easier with regular expression or not being fucking moron or use sheet of paper to figure it out. Eventually I take traditional pen and paper and solve it in 10 minutes...
How to be unproductive 101 -
Behold, the code submitted by user Hecker:
(Quote) > writing html like a pro:
from typing import List
class MissmatchedRowsAndCols(Exception):
pass
class HtmlTableBuilder:
classes: List[str] = []
identifier: str = ""
rows: List[str] = []
cols: List[list] = []
def add_row(self, name: str):
self.rows.append(name)
return self
def add_col(self, fields: list):
if len(self.rows) != len(fields):
raise MissmatchedRowsAndCols(
"The given fields are not matched 1:1 with the rows.")
self.cols.append(fields)
return self
def build(self, indent: int = 4) -> str:
html = "<table border=\"2px\""
if len(self.identifier) > 0:
html += ' id="' + self.identifier + '"'
if len(self.classes) > 0:
html += ' class"' + (" ".join(self.classes)) + '"'
html += ">\n"
html += (" "*indent) + "<thead>\n"
for row in self.rows:
html += (" "*(indent*2)) + "<th>" + row + "</th>\n"
html += (" "*indent) + "</thead>\n"
html += (" "*indent) + "<tbody>\n"
for col in self.cols:
html += (" "*(indent*2)) + "<tr>\n"
for field in col:
html += (" "*(indent*3)) + "<td>\n"
html += (" "*(indent*4)) + str(field) + "\n"
html += (" "*(indent*3)) + "</td>\n"
html += (" "*(indent*2)) + "</tr>\n"
html += (" "*indent) + "</tbody>\n"
html += "</table>"
return html
builder = HtmlTableBuilder()
builder.add_row("index").add_row("language")
builder.add_col([0, "Python"]).add_col([1, "Kotlin"])
print(builder.build())6 -
public function index(Request $request): array
{
$parameters = json_decode($request->get('lazyEvent'), true);
if (isset($parameters['page'])) {
$page = $parameters['page'];
} else {
$page = 0;
}
$queryBuilder = DB::table('companies')
->leftJoin('company_contact', 'company_contact.company_id', '=', 'companies.id')
->groupBy('companies.id')
;
if (isset($parameters['filters']['name'])) {
$queryBuilder
->where('name', 'like', '%' . $parameters['filters']['name']['value'] . '%')
;
}
$total = $queryBuilder
->count()
;
$companies = $queryBuilder
->select('companies.id', 'name', 'email', 'phone', DB::raw("COUNT('company_contact.id') AS contact_count"))
->orderBy('name')
->offset($page * $parameters['rows'])
->limit($parameters['rows'])
->get();
return ['companies' => $companies, 'totalRecords' => $total];
}
what is this shit? I get $total 1 when in reality is $companies count is 51
I am thinking avout writing whole sql as raw because I cannto get fucking count correctly21 -
Web development -
Caution: boring question
Have anyone worked on anything like a form builder like by giving a name generating a table with default columns and new folder for controller , models inheriting a base class that can provide a CRUD functionality ?
In my company they have a cool module builder that allow you to add any field email ,file, password,connector field - connect two modules one 2 one relationship clonable field many to many built on php.
I tried and created one using python Flask framework but without restarting app the routes are not getting registering asked in stack overflow got downvoted
Any thoughts?3 -
Not really a programming rant, but how fucking hard is it to spell someone's name in an email correctly. There is no single key for 'ph' and if there were it would be no where near the letter 'V'. But then again I'm just trying to help you out with your simple SQL script which you can't find out why you're not inserting data and you're only the director of informatics. And your script is horrendous with multiple joins which are unnecessary. Create one source table instead of 4 inserts from one table and use one insert from one table ya idiot.
-
Need some advise from all you clever devs out there.
When I finished uni I worked for a year at a good company but ultimately I was bored by the topic.
I got a new job at a place that was run by a Hitler wannabee that didn't want to do anything properly including writing tests and any time I improved an area or wrote a test would take me aside to have a go so I quit after 3 months.
Getti g a new job was not that hard but being at companies for short stints was a big issue.
My new job I've been here 3 months again but the code base is a shit hole, no standardisation, no one knows anything about industry standards, no tests again, pull requests that are in name only as clearly broken areas that you comment on get ignored so you might as well not bother, fake agile where all user stories are not user stories and we just lie every sprint about what we finished, no estimates and so forth, and a code base that is such a piece of shit that to add a new feature you have to hack every time. The project only started a few months back.
For instance we were implementing permissions and roles. My team lead does the table design. I spent 4 hours trying to convince him it was not fit for purpose and now we have spent a month on this area and we can't even enforce the permissions on the backend so basically they don't exist. This is the tip of the iceberg as this shit happens constantly and the worst thing is even though I say there is a problem we just ignore it so the app will always be insecure.
None of the team knows angular or wants to learn but all our apps use angular..
These are just examples, there is a lot more problems right from agile being run by people that don't understand agile to sending database entities instead of view models to client apps, but not all as some use view models so we just duplicate all the api controllers.
Our angular apps are a huge mess now because I have to keep hacking them since the backend is wrong.
We have a huge architectural problem that will set us back 1 month as we won't be able to actually access functionality and we need to release in 3 months, their solution even understanding my point fully is to ignore it. Legit.
The worst thing is that although my team is not dumb, if you try to explain this stuff to them they either just don't understand what you are saying or don't care.
With all that said I don't think they are even aware of these issues somehow so I dont think it's on purpose, and I do like the people and company, but I have reached the point that I don't give a shit anymore if something is wrong as its just so much easier to stay silent and makes no difference anyway.
I get paid very well, it's close to home and I actually learn a lot since their skill level is so low I have to pick up the slack and do all kinds of things I've never done much of like release management or database optimisation and I like that.
Would you leave and get a new job? -
I recently started working on laravel. As the community says it was easy to get along with the framework and its methodologies. But then i had to do multiple login with framework in same domain.
Oh man, i spent a week to make it work. All those guards and middlewares realted to login was driving me crazy. The concept was clear, but somehow the framework was like "You! I shall make you spend a week for my satisfaction". The project demo was nearing and i was doing all kind of stuff i found. Atlast after continous tries it worked. Never in my 4+ years as a developer i had to face such an issue with login.
So here is how it works,if anyone faces the same issue:
(This case is beneficial if you're using table structures different from default laravel auth table structures)
1. Define the guards for each in auth.php
Eg:
'users' => [
'driver' => 'session',
'provider' => 'users',
],
'client' => [
'driver' => 'session',
'provider' => 'client',
],
'admin' => [
'driver' => 'session',
'provider' => 'admins',
],
2. Define providers for each guards in auth.php
'users' => [
'driver' => 'eloquent',
'model' => <Model Namespace>::class,
'table' => '<table name>', //Optional. You can define it in the model also
],
'admins' => [
'driver' => 'eloquent',
'model' => <Model Namespace>::class,
],
'client' => [
'driver' => 'eloquent',
'model' => <Model Namespace>::class,
],
Similarly you can define passwords for resetting passwords in auth.php
3. Edit login controller in app/Http/Controller/Auth folder accordingly
a. Usually this particular line of code is used for authentication
Auth::guard('<guard name>')->attempt(['email' => $request->email, 'password' => $request->password]);
b. If above mentioned method doesn't work, You can directly login using login method
EG:
$user = <model namespace>::where([
'username' => $request->username,
'password' => md5($request->password),
])->first();
Auth::guard('<guard name>')->login($user);
4. If you're using custom build table to store user details, then you should adjust the model for that particular table accordingly. NOTE: The model extends Authenticatable
EG
class <model name> extends Authenticatable
{
use Notifiable;
protected $table = "<table name>";
protected $guard = '<guard name>';
protected $fillable = [
'name' , 'username' , 'email' , 'password'
];
protected $hidden = [
'password' ,
];
//Below changes are optional, according to your need
public $timestamps = false;
const CREATED_AT = 'created_time';
const UPDATED_AT = 'updated_time';
//To get your custom id field, in this case username
public function getId()
{
return $this->username;
}
}
5. Create login views according to the user types you required
6. Update the RedirectIfAuthenticated middleware for auth redirections after login
7. Make sure to not use the default laravel Auth routes. This may cause some inconsistancy in workflow
The laravel version which i worked on and the solution is for is Laravel 6.x1 -
This is a repost of an original rant posted on a request for "Community Feedback" from Atlassian. You know, Atlassian? Those beloved people behind such products as :
• Thing I Love™
• Other Thing You Used One Time™
• Platform Often Mentioned in Suicide Notes, Probably™*
Now this rant was written in early 2022 while I was working in an Azure Cloud Engineer role that transformed into me being the company's main Sysadmin/Project Manager/Hiring Manager/Network Admin/Graphic Designer.
While trying to simultaneously put out over 9000 fires with one hand, and jangling keys in the face of the Owner/Arsonist with the other, I was also desperately implementing Jira Service Desk. Normally this wouldn't have been as much of a priority as it was, but the software our support team was using had gone past 15 years old, then past extended support, then the lone developer died, then it didn't work on Windows 10, then only functioned thanks to a dev cohort long past creating a keygen....which was now broken. So we needed a solution *now*.
The previous solution was shit of a different tier. The sight of it would make a walking talking anthropomorphised sentient puddle of dogshit (who both eats and produces further dookie derivatives) blush with embarrassment. The CD-ROM/Cereal Box this software came in probably listed features like "Stores Your Customer's First AND (or) Last Name!" or "Windows ME Downgrade Disk Included!" and "NEW: Less(-ish) Genocide(s)"!
Despite this, our brain/fearless leader decided this would be a great time to have me test, implement, deploy, and train everyone up on a new solution that would suck your toes, sound your shaft, and that he hadn't reminded me that I was a lazy sack enough lately.
One day, during preliminary user testing I received an email letting me know that the support team was having issues with a Customer's profile on our new support desk. Thanks to our Owner/Firestarter/Real World Micheal Scott being deep in his latest project (fixing our "All 5 devs quit in the last 12 months and I can't seem to hire any new ones" issue (by buying a ping pong table)), I had a bit of fortuitous time on my hands to investigate this issue. I had spent many hours of overtime working on this project, writing custom integrations and automations, so what I found out was crushing.
Below is the (digitally) physical manifestation of my rage after realising I would have to create / find / deal with a whole new method for support to manage customer contacts.
I'm linking to the original forum thread because you kind of need to have the pictures embedded in said reply to get really inhale the "Jira-Rant" ambiance. The part where I use several consecutive words as anchor links to tickets with other people screaming into the void gets a bit sweet n' savoury too - having those hyperlinks does improve the je ne say what of it all.
bit.ly/JIRANT (Case Sensitive)
--------------------------
There is some good news at the end of this brown n' squirty rainbow though!
Nice try silly little Jira button, you can't ruin *my* 2022!
• I was able to forget all about Jira a month later when I received a surprise vacation home! (To be there while my Mom passed away).
• Eventually work stress did catch up to me - but my boss thoughtfully gave me a nice long vacation! (By assaulting *while* firing me (for emailing in a vacation request while he was a having a bad (see:normal) day))5 -
Felt like an idiot when realized that argument `back_populate` refers to the attribute of the class passed to `relationship`, not the stupid name of the table of any class, ugh
-
I worked for 7 hours today trying to find the bug because our BPM process wasn't working and the clients are really upset. I was pretty sure everything was correctly configured. I did around 15-20 rounds of debugging, putting and removing breakpoints in different parts of the whole project, going back to certain lines cause I might have missed a bug or maybe an error was there and I'm just not seeing it.
In the end, the only fucked up thing about it is that the table in the clients' ddbb was broken. It was considering something NULL even though it's not and the only thing I did was duplicate it and change the duplicate's name to the original name.
Those were 7 hours of wasted time, but at least I get paid for it! -
(tldr: are foriegn keys good/bad? Can you give a simple example of a situation where foriegn keys were the only and/or best solution?)
i have been recently trying to make some apps and their databases , so i decided to give a deeper look to sql and its queries.
I am a little confused and wanted to know more about foreign keys , joins and this particular db designing technique i use.
Can anyone explain me about them in a simpler way?
Firstly i wanted to show you this not much unheard tecnique of making relations that i find very useful( i guess its called toxi technique) :
In this , we use an extra table for joining 2 tables . For eg, if we have a table of questions and we have a table of tags then we should also have a table of relation called relation which will be mapping the the tags with questions through their primary IDs this way we can search all the questions by using tag name and we can also show multiple tags for a question just like stackoverflow does.
Now am not sure which could be a possibile situation when i need a foriegn key. In this particular example, both questions and tags are joined via what i say as "soft link" and this makes it very scalable and both easy to add both questions and new tags.
From what i learned about foriegn keys, it marks a mandatory one directional relation between 2 tables (or as i say "hard a to b" link)
Firstly i don't understand how i could use foriegn key to map multiple tags with a question. Does that mean it will always going to make a 1to1 relationship between 2 tables( i have yet to understand what 11 1mant or many many relations arr, not sure if my terminology is correct)
Secondly it poses super difficulty and differences in logics for adding either a tag or question, don't you think?
Like one table (say question) is having a foreign key of tags ID then the the questions table is completely independent of tag entries.
Its insertion/updation/deletion/creation of entries doesn't affect the tags table. but for tag table we cannot modify a particular tag or delete a tag without making without causing harm to its associated question entries.
if we have to delete a particular tag then we have to delete all its associated questions with that this means this is rather a bad thing to use for making tables isn't it?
I m just so confused regarding foriegn keys , joins and this toxi approach. Maybe my example of stack overflow tag/questions is wrong wrt to foreign key. But then i would like to know an example where it is useful5 -
I have table assets with field person of contact and table contacts with all fields related where I want to extract Join the [First Name] and [Last Name] and Capture as [Person of Contact] from [ID] related to each customer I want to list the person of contacts! I am so new into this world teach me <SQL>