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 - "not that well written"
-
This code review gave me eye cancer.
So, first of all, let me apologize to anyone impacted by eye cancer, if that really is a thing... because that sounds absolutely horrible. But, believe me, this code was absolutely horrible, too.
I was asked to code review another team's script. I don't like reviewing code from other teams, as I'm pretty "intense" and a nit-picker -- my own team knows and expects this, but I tend to really piss off other people who don't expect my level of input on "what I really think" about their code...
So, I get this script to review. It's over 200 lines of bash (so right away, it's fair game for a boilerplate "this should be re-written in python" or similar reply)... but I dive in to see what they sent.
My eyes.
My eyes.
MY EYES.
So, I certainly cannot violate IP rules and post any of the actual code here (be thankful - be very thankful), but let me just say, I think it may be the worst code I've ever seen. And I've been coding and code-reviewing for upwards of 30 years now. And I've seen a LOT of bad code...
I imagine the author of this script was a rebellious teenager who found the google shell scripting style guide and screamed "YOU'RE NOT MY REAL DAD!" at it and then set out to flagrantly violate every single rule and suggestion in the most dramatic ways possible.
Then they found every other style guide they could, and violated all THOSE rules, too. Just because they were there.
Within the same script... within the SAME CODE BLOCK... 2-space indentation... 4-space indentation... 8-space indentation... TAB indentation... and (just to be complete) NO indentation (entire blocks of code within another function of conditional block, all left-justified, no indentation at all).
lowercase variable/function names, UPPERCASE names, underscore_separated_names, CamelCase names, and every permutation of those as well.
Comments? Not a single one to be found, aside from a 4-line stanza at the top, containing a brief description of that the script did and (to their shame), the name of the author. There were, however, ENTIRE BLOCKS of code commented out.
[ In the examples below, I've replaced indentation spacing with '-', as I couldn't get devrant to format the indentation in a way to suitably share my pain otherwise... ]
Within just a few lines of one another, functions defined as...
function somefunction {
----stuff
}
Another_Function() {
------------stuff
}
There were conditionals blocks in various forms, indentation be damned...
if [ ... ]; then
--stuff
fi
if [ ... ]
--then
----some_stuff
fi
if [ ... ]
then
----something
something_else
--another_thing
fi
And brilliantly un-reachable code blocks, like:
if [ -z "$SOME_VAR" ]; then
--SOME_VAR="blah"
fi
if [ -z "$SOME_VAR" ]
----then
----SOME_VAR="foo"
fi
if [ -z "$SOME_VAR" ]
--then
--echo "SOME_VAR must be set"
fi
Do you remember the classic "demo" programs people used to distribute (like back in the 90s) -- where the program had no real purpose other than to demonstrate various graphics, just for the sake of demonstrating graphics techniques? Or some of those really bad photo slideshows, were the person making the slideshow used EVERY transition possible (slide, wipe, cross-fade, shapes, spins, on and on)? All just for the sake of "showing off" what they could do with the software? I honestly felt like I was looking at some kind of perverse shell-script demo, where the author was trying to use every possible style or obscure syntax possible, just to do it.
But this was PRODUCTION CODE.
There was absolutely no consistency, even within 1-2 adjacent lines. There is no way to maintain this. It's nearly impossible even understand what it's trying to do. It was just pure insanity. Lines and lines of insanity.
I picture the author of this code as some sort of hybrid hipster-artist-goth-mental-patient, chain-smoking clove cigarettes in their office, flinging their own poo at their monitor, frothing at the mouth and screaming "I CODE MY TRUTH! THIS CODE IS MY ART! IT WILL NOT CONFORM TO YOUR WORLDLY STANDARDS!"
I gave up after the first 100 lines.
Gave up.
I washed my eyes out with bleach.
Then I contacted my HR hotline to see if our medical insurance covers eye cancer.32 -
Dev: this task is done, can I put it in review and do something else?
Me: sure, of course.
Dev: cool, just be aware I'll make some changes to it later.
Me: ... wait, then it's not done.
Dev: no it is, I just need to re-read it and make some changes.
Me: yeah, so it will be done when those changes are made.
Dev: but I don't know what those changes are.
Me: ... I get that ... but ... ok I'm extremely confused. Why do you think it's done.
Dev: because I've written everything I need to and I'm happy with it.
Me: ok so why do you want to make changes.
Dev: I don't.
Me: ... ... ... ... you ... you are really not being clear. If you don't want to make changes, and you are happy with it, why are you planning on making changes later ... after marking the task as done.
Dev: well if I re-read it and see something I don't like, I would like to change it.
Me: ok, so re-read it as many times as you like and make as many changes as you like. But don't mark it as done until it is done.
Dev: but it is done.
Me: no it's not.
Dev: it is, look.
Me: ... yeah looks ok at a quick glance.
Dev: ok so I can mark it as done?
Me: are you going to make more changes?
Dev: yes.
Me: then no.
Dev: why?
Me: BECAUSE ITS NOT DONE.
Dev: ok maybe I'm not explaining it clearly.
Me: ... we can both agree on that. Ok so to summarise, we don't mark something as done until we have stopped touching it. We don't half finish something and say it's done and comeback to it later. We mark it as done when we are happy with i.....
Dev: but I am happ.....
Me: *raises hand* I repeat, if it's done, we lock it away and stop touching it. If someone reads it and complains, we can come back to it with a new ticket. But it's not done until we think we are ready to send it on.
Dev: I am ready to send it, I just may want to change it.
Me: ... ... ... ... ... due to a new policy implemented just now, we are only allowed to send 1 email to a person each week. So unfortunately we can only send on 1 copy. So when you have that 1 copy, let me know.
Dev: ok, let me re-read it a few more times then.
Me: there you go.32 -
Root ain't givin' no fucks no mo'
My boss just demanded that I join a conference call. So, I call in, and there's three other people there.
He starts chewing me out for talking with some vendor directly (their VP emailed me directly and asked for a few things, and i was instructed to make him happy). Apparently I used "confusing wording" and "did not talk his language." Bossman was really getting into gear for a ten-minute berating.
It turns out that the guy in question only read half of my first email, and totally ignored the second email where I told him everything was finished and live and working. I told my boss quite bluntly that the guy should have read what I had written, and that he was an idiot. The boss's defense of the guy? "Well, he's a sales guy." I just laughed at him.
Later, bossman started in on me (once again) for not making enough progress on this ridiculous shared-spreadsheet sales tool he wants, saying "We discussed this a week ago!"
I casually reminded him that we had talked about it for the first time ever on Friday night (today is Tuesday), and he had said it wasn't going to be a priority for the next three weeks(!). Again he stopped in his tracks. Again, I laughed at him.
Guy's a tool and I'm so done with caring.
Root's going to be flippant and angry. Root's going to have fun (:
What's he gonna do, fire me? 😂25 -
Manager: Why aren’t you working?
Dev: I am, I’m just not typing because I’m thinking an issue out.
Manager: Well what is taking so long? You haven’t written any code for like 15 minutes, you’ve just been doodling on your notepad.
Dev: I’m not “doodling”. I’m taking notes and trying to visualize the issue. It’s a complicated issue with application stat—
Manager: Well just simplify it then
Dev: ?
Manager: Instead of making it a complicated issue just simplify it and then it won’t take you so long. You’re likely overthinking it, I never spend more than 30 seconds thinking about any issue before coming up with a solution. That’s what makes me so effective at my job is my ability to be lean like that.
Dev: …this issue is a bit harder than deciding what to have for lunch26 -
I am an indie game developer and I lead a team of 5 trusted individuals. After our latest release, we bought a larger office and decided to expand our team so that we could implement more features in our games and release it in a desirable time period. So I asked everyone to look for individuals that they would like to hire for their respective departments. When the whole list was prepared, I sent out a bunch of job offers for a "training trial period". The idea was that everyone would teach the newbies in their department about how we do stuff and then after a month select those who seem to be the best. Our original team was
-Two coders
-One sound guy(because musician is too mainstream)
-Two artists
I did coding, concept art(and character drawings) and story design, So, I decided to be a "coding mentor"(?).
We planned to recruit
-Two coders
-One sound guy
-One artist (two if we encountered a great artstyle)
When the day finally arrived I decided to hide the fact that I am the founder and decided that there would be a phantom boss so that they wouldn't get stressed or try flattery.
So out of 7, 5 people people came for the "coding trial session". There were 3 guys and 2 girls. My teammate and I started by giving them a brief introduction to the working of our engine and then gave them a few exercises to help them understand it better. Fast forward a few days, and we were teaching them about how we implement multiple languages in our games using Excel. The original text in English is written in the first column and we then send it to translators so that they can easily compare and translate the content side by side such that a column is reserved for each language. We then break it down and convert the whole thing into an engine friendly CSV kind of format. When we concluded, we asked them if they had any questions. So there was this smartass, who could not get over the fact that we were using Excel. The conversation went like this:(almost word to word)
Smartass: "Why would you even use that primitive software? How stupid is that? Why don't you get some skills before teaching us about your shit logic?"
Me:*triggered* "Oh yeah? Well that's how we do stuff here. If you don't like it, you can simply leave."
Smartass: "You don't know who I am, do you? I am friends with the boss of this company. If I wanted I could have all of you fired at whim."
Me:"Oh, is that right?"
Smartass:"Damn right it is. Now that you know who I am, you better treat me with some respect."
Me: "What if I told you that I am not just a coder?"
Smartass:"Considering your lack of skills, I assume that you are also a janitor? What was he thinking? Hiring people like you, he must have been desperate."
Me:"What if I told you that I am the boss?"
Smartass:"Hah! You wish you were."*looks towards my teammate while pointing a thumb at me* "Calling himself the boss, who does he think he is?"
Teammate:*looks away*.
Smartass:*glances back and forth between me and my teammate while looking confused* *realizes* *starts sweating profusely* *looks at me with horror*
Me:"Ha ha ha hah, get out"
Smartass:*stands dumbfounded*
Me:"I said, get out"
Smartass:*gathers his stuff and leaves the room*
Me: "Alright, any questions?"*Smiling angrily*
Newcomers: *shake heads furiously*
Me:"Good"
For the rest of the day nobody tried to bother me. I decided to stop posing as an employee and teaching the newcomers so that I could secretly observe all sessions that took place from now on for events like these. That guy never came back. The good news however, is that the art and music training was going pretty well.
What really intrigues me though is that why do I keep getting caught with these annoying people? It's like I am working in customer support or something.16 -
Mother of god, was listening to the US govt hearing of zuckerberg about the recent scandals. The amount of very fucking simple obvious questions he 'could not' answer normally...
Govt person: Would you be willing to change Facebook's business model if this was required for the security and privacy of Facebook users' accounts?
Zuck: I don't understand your question.
Sorry, WHAT?! You don't need particular rocket science to understand what's being asked here. A combination of common sense and knowing the English language and English grammar in combination with maybe having finished some form of education should be enough to understand this ridiculously easy question.
Do you need it written on a golden plate with fucking blue letters in Facebook's font with the S letters as dollar signs while drinking 10 gallons of 'fuck every persons privacy'?!
Or maybe shoving it up your ass in the form of heated/glowing metal letters of 10+ inches in height? We could arrange that as well.25 -
Last day on the contract from hell. I'd written a project with one other person in our spare time that performed a critical business function. The following conversation was had between myself, the job thief who was handed my job and their manager, with the 10 other IBM GS "dev domain experts" assigned to that team sitting silently on zoom:
Moi: hey all, what seems to be the problem?
JT: how to update the java for requirement?
Moi: I would assume a text editor, have you tried intellij
JTM: she's talking about ticket BS-101, the data is wrong
Moi: ah, well, you might want to fix that
JT: how to fix?
Moi: update the database and update the logic that depends on it
JTM: what changes are those?
Moi: the ones described in the ticket, I would assume, I'm no longer on that project
JTM: didn't you write this application?
Moi: yes.
JTM: ok, so do you know how to fix the issue?
Moi: definitely
JTM: ok... ... Can you tell us how to fix it?
Moi: yes.
*The sound of silence*
JTM: *will* you tell us?
Moi: I would, but I'm already off the clock, and as of an hour ago I no longer have a contract. And even if I did, I don't have a contract or authorization to work on that system. I'm not actually being paid for this call.
JTM: ... What are we going to do about this?
Moi: I have no idea
JTM: ok, so we can look at getting a 1 month contract to support this
Moi: I'm sure our firm has someone who can definitely help you out
JTM: *heavy raging* ... Can you do the work?
Moi: Unfortunatley, I'm already committed to a new contract at another customer. I also don't do one month contracts. I'm an engineer, not a car wash employee
JTM: well, I don't understand how you can just leave us in the lurch like this?!
Moi: well, respectfully, it was your decision to cut me from the budget because you thought you were close enough to end of the project to get it across the line with junior resources.
Interjecting-JT: I am senior!
Moi: Right. So, basically, you took ownership of the product before go live. We advised against it, in writing, numerous times. We also notified you that we would not carry a bench, so the project resources are now working on other things. We can provide you with new resources for a minimum 6 month duration who can help you out. Also, since we've cycled out, our rate has increased per the terms of our MSA.
JTM: we don't have budget for that! How are we supposed to do this?!
Moi: *zoom glare at JT* that question is more appropriate for your finance officer and the IT director. I can send a few emails and schedule a call with your account representative and the aforementioned individuals so you can hash this out.
-_---------------
I'm free! 🥳 That said, still plenty of residual fodder I need to get out of my system on these guys. Might need to start my own Dilbert.12 -
Here's a recent interview I had for an Android Developer job:
I: Interviewer, M: Me
I: hello, welcome
M: hi, thanks
I: do you know Kotlin?
M: yes, I've been working with it for 1.5 years and have written 3 projects in it
I: do you know RxJava, Dagger, Retrofit, and how to make Custom Views?
M: yes, I'm comfortable with them *explains*
I: do you know Room?
M: yes I do, I've done a lot of practices in it, but unfortunately have never needed to use it in production
I: what architecture do you use? Do you know MVP?
M: I'm currently using MVVM, but not MVP. I've debugged projects in it so I know what's going on in it
I: ok, do you have any questions for us?
M: how did I do?
I: I'm sorry sir, but you're not even a junior here
M: what? Why is that?
I: well you don't know Room and MVP?
M: I said I know them, just haven't used them in production.
I: well you have 3 years of experience but you dont even know Kotlin!
M: Kotlin was your first question and I said I have 3 projects in it. Did you even check the samples you asked for in the job posting?
I: SIR YOU'RE NOT A GOOD FIT FOR US, THANK YOU FOR COMING.
:/56 -
Started being a Teaching Assistant for Intro to Programming at the uni I study at a while ago and, although it's not entirely my piece of cake, here are some "highlights":
* students were asked to use functions, so someone was ingenious (laughed my ass off for this one):
def all_lines(input):
all_lines =input
return all_lines
* "you need to use functions" part 2
*moves the whole code from main to a function*
* for Math-related coding assignments, someone was always reading the input as a string and parsing it, instead of reading it as numbers, and was incredibly surprised that he can do the latter "I always thought you can't read numbers! Technology has gone so far!"
* for an assignment requiring a class with 3 private variables, someone actually declared each variable needed as a vector and was handling all these 3 vectors as 3D matrices
* because the lecturer specified that the length of the program does not matter, as long as it does its job and is well-written, someone wrote a 100-lines program on one single line
* someone was spamming me with emails to tell me that the grade I gave them was unfair (on the reason that it was directly crashing when run), because it was running on their machine (they included pictures), but was not running on mine, because "my Python version was expired". They sent at least 20 emails in less than 2h
* "But if it works, why do I still have to make it look better and more understandable?"
* "can't we assume the input is always going to be correct? Who'd want to type in garbage?"
* *writes 10 if-statements that could be basically replaced by one for-loop*
"okay, here, you can use a for-loop"
*writes the for loop, includes all the if-statements from before, one for each of the 10 values the for-loop variable gets*
* this picture
N.B.: depending on how many others I remember, I may include them in the comments afterwards19 -
Summing up many ridiculous meetings I've been in.
Many years ago we hired someone for HR that came from a large fortune 500 company, really big deal at the time.
Over the next 6 months, she scheduled weekly to bi-weekly, 1 to 2 hour meetings with *everyone* throughout the day. Meeting topics included 'How to better yourself', 'Trust the winner inside you'...you get the idea.
One 2-hour meeting involved taking a personality test. Her big plan was to force everyone to take the test, and weed out anyone who didn't fit the 'company culture'. Whatever that meant.
Knowing the game being played, several of us answered in the most introverted, border-line sociopath, 'leave me the frack alone!' way we could.
When she got the test results back, she called an 'emergency' meeting with all the devs and the VP of IS, deeply concerned about our fit in the company.
HR: "These tests results were very disturbing, but don't worry, none of you are being fired today. Together, we can work as team to bring you up to our standards. Any questions before we begin?"
Me: "Not a question, just a comment about the ABC personality test you used."
<she was a bit shocked I knew the name of the test because it was anonymized on the site and written portion>
Me: "That test was discredited 5 years ago and a few company's sued because the test could be used to discriminate against a certain demographic. It is still used in psychology, but along with other personality tests. The test is not a one-size-fits-all."
VP, in the front row, looked back at me, then at her.
HR: "Well....um...uh...um...We're not using the test that way. No one is getting fired."
DevA: "Then why are we here?"
DevB:"What was the point of the test? I don't understand?"
HR: "No, no...you don't understand...that wasn't the point at all, I'm sorry, this is getting blown out of proportion."
VP: "What is getting blown out of proportion? Now I'm confused. I think we all need some cooling off. Guys, head back to the office and let me figure out the next course of action."
She was fired about two weeks later. Any/all documentation relating to the tests were deleted from the server.16 -
After months and months of unrealistic deadlines, pulling late night shifts coupled with an insane commute and two very small children at home I had a total burnout. Turned up to work one morning, and stared at the Java code I had been writing for the past couple of days and it might as well have been written in Martian. The more I stared, and the more I tried to keep things together internally the less I was able to make sense of anything - just a random jumble of characters on screen that were as intelligible as the green scrolling lines from The Matrix.
My office manager saw that I was obviously in some distress and took me into a meeting room to have a quick chat - and there I was, a grown man of 35 bawling my eyes out like a two year old. Not the most edifying moment of my life.
However, the company couldn't have been more supportive afterwards; one of my colleagues drove the 100 miles to get me home in my car and took a train back up to the office; my GP signed me off work for six months and treated me for severe depression; the office instituted stricter working policies - not on the developers, but the sales/PM teams that were handing down ridiculous timescales simply so they could get a sale.
For my part, I've learnt to push back and say "NO!" - work is not your life, it's an important part of your life, but my no means everything. Don't feel beholden to a company to meet unrealistic targets that you haven't agreed to. Talk.3 -
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 -
They announce the results and that was where the fucking plot twist was.
I was *not* on the list. I was devastated, to the point of depression. I refused to get over it, sulked at home, fell sick, skipped college for next two weeks straight. It took a few more days for me to recover.
After several visits from my friends and a lot of convincing, I decided to go back to college. I felt hopeless and had pretty much resigned to my fate. Being the idiot that I am, I missed several other interview opportunities during that interim when I was despairing-away.
Semester exams were about to start and I get a call from my staff saying I had cleared the coding exam for one of the companies that was coming for recruitment the next day. I had written this exam like several months ago and didn’t even remember having written it. It was such a short notice and I had zero time to prepare and my psyche didn’t want to(remember how I had resigned to my fate?).
I did manage to make it to the interview. I was expecting a tough interview (this company had a reputation for having tough interview rounds) but all I got was a bunch of tree and linked list and search algorithm related questions (internship interview). I had two rounds. It did really go well but I had learnt to not get my hopes up. Then I noticed other interviewees being called for a third round and they asked me to go home. I was like “meh”. I was used to it at that point in time.
Very unexpected to me, (but i’m pretty sure y’all have guessed at this point) I get a call saying, they have recruited me as an intern! 6 months later, I was working as an employee!
When I look back today, I realize that my current job, in every way, is waay better than the one I had so desperately wanted! The pay, the timing, the location, my actual job description, all of it! As a bonus I have an awesome manager who trusts me! I work with remotely with a team with such high standards and I learn something new everyday.
In my two years here, I have built a couple automation systems from scratch, I have mentored an intern and got him a full time offer, I have had two free two-week trips to the US and I have been promoted once! I’m so glad I was rejected that day (:
Thank you for reading!17 -
*goes to the local town hall to get my new ID*
A week ago:
Clerk: Sorry sir, our systems don't work anymore, we can't process your request!
Me: Epic. Is there any sysadmin in here that can fix this pronto?
C: No it's a centrally managed system. It's managed by the people in ${another town}.
M (thinking): Well how about you fucking call them then, fucking user. Screaming blood and fire when nothing is wrong server-side but doing nothing when there is. Fucking amazing, useless piece of shit.
One week later, i.e. today:
M: Hey, I'd like to renew my ID card. I've got this announcement document here and my current ID card.
C: Oh no I don't need the announcement document. I need your PIN and PUK code letter.
M (thinking): What the fuck do you need that for.. isn't that shit supposed to be my private information..?
*gives PIN and PUK part of the letter*
C: Alright, to register your new ID card, please enter your PUK and then your PIN in this card reader here twice.
M: Sure, but I'd like to change both afterwards. After all they're written on this piece of paper and I'm not sure that just destroying that will be enough.
C: Sure sure you can change them. Please authenticate with the codes written on the paper.
*Authenticates*
C: So you'd like to change your codes, right?
M: Yeah but I'd like to change it at home. You know, because I can't know for sure that this PC here is secure, the card reader has a wired connection to your PC (making it vulnerable to keyloggers) and so on.
C: Impossible. You can't change your PIN at home. (What about the PUK?!)
M: But I've done that several times with my Digipass for my previous passport.. it is possible and I've done it myself.
C: Tut tut, impossible. I know it's impossible and therefore it is.
M (thinking): Thanks for confirming that I really shouldn't enter my personal PIN on your fucking PC, incompetent bitch.
M: Alright, I'll just keep this PIN, try at home and if it's really impossible because the system changed to remove this functionality (which I highly doubt, that'd be really retarded), I'll come back later.
(Just to get rid of this old stupid woman's ignorance essentially.)
C: Sure sure...
Me: I'd also like to register as an organ donor. Where can I do that?
C: That'd be over there. *points to the other room in the town hall*
FUCKING THANK YOU LORDS OF THE WICKED RAVEN AND THE LIBERATED TUX, TO GET ME AWAY FROM THAT STUPID FUCKING BITCH!!!
.. anyway. I've got my new ID and I'm an official organ donor now 🙂6 -
I might have posted this before. But I am going to post it again. Because emojis.
Me: 😁 Software lead I have finished coding the thing.
SL: 😀 Cool, good job. That is going to really help out the analysts.
Software Manager: 😐 hey I noticed you have coded a new thing and pushed it to integration.
Me: 😁 Yes.
SM: 😐 Well how do you know when it's done?
Me: 😑 . . . When you run it and it does the thing?
SM: 😐 Did you write test steps?
Me: 😕 Yeah . . . they're in the issue ticket.
SM: 😐 Yeah but how do you know those are right?
Me: 😕 Because I wrote the thing and the test steps?
SM: 😐 did you put any steps in our acceptance test procedure?
Me: 😕 No.
SM: 😐 why not?
Me: 😧 Because the acceptance test procedure tests requirements. There is no requirement for this functionality.
SM: 😑 Then why did you do it?
Me: 🤔 Because it was an internal request from the analysis team. There is no customer impact here.
SM: 😑 I really think we should write a requirement.
SL: 🤔 But what requirement is he going to attach this to?
SM: 😑 We don't have to attach it to a requirement. We can just test it once and remove it.
Me: 😒 SM, you know we never remove anything from the acceptance test procedure.
SM: 🙂 We do sometimes.
SL: 🤔 When was that I have worked here for twenty years and we have never removed a test from that document.
SM: 😑
SL: 😒
SM: 😑
SL: 😒
Me: 🤐
SM: 😧 I really think there should be an acceptance test written.
SL: 😧 Looks like you're writing an acceptance test.
Me: 😒 Alright as long as y'all're payin'. Shit I was just tryin' to save y'all money.
*acceptance test written and sent to peer review*
Peer: 😐 The requirement tested section doesn't have any requirements spelled out.
Me: 😅 No.
Peer: 🤔 Why?
Me: 😓 Because there is no requirement associated with this test.
Peer: 🤔 Then why are we adding an acceptance test?
Me: 😡 WELL AIN'T THAT A GOOD GOD DAMN QUESTION!?6 -
I was messaged on LinkedIn by a recruiter while I was in the UK for my honeymoon. When we got back home to Colorado I called him back and everything went well enough that a tech screen call was set up between four or five guys on the team, and me.
I was expecting to be grilled about various Linux, networking, video transcoding, database, and transaction handling questions and problems, as that was the bulk of the job's description. But instead they just gushed that they'd used software I'd written at previous jobs and loved it.
It was very friendly and they never challenged me (not being arrogant here-- they literally never tested me) and we wound up just talking about, "the job," and about how the work sucked without the tools and apps I'd written.
I got an offer for $30k more than what I asked, the next day.5 -
Never have I been so furious whilst at work as yesterday, I am still super pissed about going back today but knowing it's only for another few weeks makes it baerable.
I have been the lead developer on a project for the last 3~ months and our CTO is the product owner. So every now and then he decides to just work on a feature he is interested in- fair enough I guess. But everything I have to go and clean up his horrendous code. Everything he writes is an absolute joke, it's like he is constantly in Hackathon mode "let's just copy and paste some code here, hardcoded shit there and forgot about separation of code- it all goes in 1 file".
So yesterday he added a application to the project and instead of reusing a shared data access layer he added an entirely new ORM, which is near identical to the existing ORM in use, for this one application.
Being anal about these things, the first thing I did was delete his shit and simply reference the shared library then refactor a little code to make it compatible.
WELL!! I certainly hit a nerve, he went crazy spamming messages on Slack demanding I revert as it broke ONE SINGLE QUERY that he hadn't checked in (he does 1 huge commit for 10 of everyone else's). I stuck to my principals and explained both ORM's are similar and that we only needed one, the second would cause a fragmented codebase for no benefit whatsoever.
The lead Dev was then forced to come and convince me to revert, again I refused and called out the shit quality of their code. The battle raged on via the public slack group and I could hear colleagues enjoying the heated debate, new users even started joining the group just to get in on mine and the cto's difference of opinion.
I even offered to fix his code for him if he were to commit it, obviously that was not taken well ;).
Once I finally got a luck at the cluster fuck of shit he had written it took me around 5 minutes to fix and I ever improved performance. Regardless he was having none of it. Still the demands to revert continued.
I left the office steaming after long discussions with the lead Dev caught in the middle.
Fortunately my day was salvages with a positive technical discussion that evening at a company with whome I had a job offer from.
I really hate burning bridges and have never left a company under bad terms but this dictator is making me look forward to breaking the news today I will be gone in 4 weeks.4 -
My second job. I've been hired as a research specialist, not a developer, but they found out I could code during the interview.
Boss: hey, so we have our main product line that shares the control panel for all the models, right?
Me: unh, yeah
B: well, we need to know how it works.
M: sorry?
B: yeah, I mean, we should have a manual with all the tech documentation so we know how everything works
M: ...and didn't you handle the tech docs to the developers?
B: uh...no, actually we requests feature to the devs (note: external company) with a phone call, or email...now we need the specs.
Me: omg
...
The other company (which is part of the same group) handles me the source code.
It is a huge, 25k lines of spaghetti written by at least 7 people, one at a time, uncommented.
After a month I produce a 50page doc with how everything works, after actually compiling my resignation letter 3 times.
M: boss, here the docs
B: fine, I'll take a look
15 mins later
B: this is not what we need! You cannot describe those algorithm like this!
( I described the algorithms with their block flow, with a punctual verbal description)
M: umh.. So how do you need it?
B: we need an excel table, with all the entering conditions on the rows and all the exit conditions in columns, and the description of the condition of work in the crossing cells!
M: are you even serious?7 -
I've had 3 interviews with the same company. The first two interviews went pretty well, they looked interested, on the third they tell me "your CV says you are not graduated yet, we can't hire you now".
SO WHY THE FUCK DID YOU HAD TO WASTE MY TIME?
You've had my CV before the first interview, why the hell didn't you read that I am still a student? Is the first thing it's written on it! Stupid fuckers.5 -
I was expecting a 4th interview this afternoon for a position as a fullstack elixir developer.
Got a response from the CTO.
'Even if you pass all the tests with success, we could not go further because you're a junior and we're looking for a senior'
Well, dude, you've seen me 3 times and didn't understand that I was a junior ? My CV is not enough explicit ? It's written at the top of it...
So after a motivation interview, technical test, technical interview and Phoenix framework interview, they only realized yet the plot.
Good luck for your seniors to pass their knowledge to other seniors.17 -
So there is this girl who joined the company as a trainee.
The company developed a 1 year project to train 25 trainees and she joined saying that she already had some experience making websites. (remember this)
They started in the beginning of January and stayed for about 3 months just studying the platform (Salesforce) and receiving some classes from Senior Devs, on subjects like OOP basics, loops, conditions and features of the platform.
After this time they joined the teams, 2 joined my team, a guy with 32 years that worked 10 years in a bank and wanted to go for a IT job and the girl of 22.
We gave her a really small task, just to make a code to copy info from one field to the other on a list of objects.
After 3 days of saying she was working on it we asked her to show us the code, she had written the "code" directly in the class, VS Code was going crazy with errors. When we asked her "But where is the method?", she answered "What is a method?"
After it we had other experiences trying to teach her some things. The team was formed by me (mid level dev), another mid level dev, a senior and a architect (who was self taught and one of the best teachers I've ever seen).
We tried for about 3 months to teach her how to do basic stuff, like a for loop, and every time we learned that she was missing some "foundations" of this basic stuff, so we would come back and explain the foundation, and a couple times she needed to use this knowledge like a week later and didn't remember shit.
So after this the team talked with our leader that we wanted to let her go and focus on the other guy who was going really well and some other junior devs who had joined the team.
But the HR found out that she had sued her last company, we don't know the reason, but HR guys were afraid of firing her without a careful firing process.
So now we're stuck with her in the team, and everything we ask her to do need to be remade, not because the code is bad, but because it NEVER works
And after all this I still ask myself, how did she finish college? Every person that i know that studied CS or CS like courses had a lot of OOP or at least knew what a class and a method were supposed to be.29 -
Dev: “Ughh..look at this –bleep- code! When I execute the service call, it returns null, but the service received a database error.”
Me: “Yea, that service was written during a time when the mentality was ‘Why return a service error if the client can’t do anything about it?’”
Dev: “I would say that’s a misunderstanding of that philosophy.”
Me: “I would say it’s a perfectly executed example of a deeply flawed philosophy.”
Dev: “No, the service should just return something that tells the client the operation failed.”
Me: “They did. It was supposed to return a valid result, and the developer indicated a null response means the operation failed. How you deal with the null response is up to you.”
Dev: “That is stupid. How am I supposed to know a null response means the operation failed?”
Me: “OK, how did you know the operation failed?”
Dev: “I had to look at the service error logs.”
Me: “Bingo.”
Dev: “This whole service is just a –bleep-ing mess. There are so many things that can go wrong and the only thing the service returns is null when the service raises an exception.”
Me: “OK, what should the service return?”
Dev: ”I don’t know. Error 500 would be nice.”
Me: “Would you know what to do with error 500?”
Dev: ”Yea, I would look at the error log”
Me: “Just like you did when the service returned null?”
<couple of seconds of silence>
Dev: “I don’t know, it’s a –bleep-ing mess.”
Me: “You’re in the code, change it.”
Dev: “Ooohhh no, not me. The whole thing will have to be re-written. It should have been done correctly the first time. If we had time to do code reviews, I would have caught this –bleep- before the service was deployed.”
Me: “Um, you did.”
<a shocked look from Dev>
Dev: “What…no, I’ve never seen this code.”
Me: “I sat next to Chuck when you were telling him he needed to change the service to return null if an exception was raised. I remember you telling him specifically to pop-up an error dialog ‘Service request failed’ to the user when the service returned null.”
Dev: “I don’t remember any of that.”
Me: “Well, Chuck did. He even put it in the check-in comments. See…”
<check in comments stated Dev’s code review and dictated the service return null on exceptions>
Dev: “Hmm…I guess I did. –bleep- are you a –bleep-ing elephant? You –bleep-ing remember everything.”
<what I wanted to say>
No, I don’t remember everything, but I remember all the drive-by <bleep>-ed up coding philosophies you tried to push to the interns and we’re now having all kinds of problems I spend waaaaay too much time fixing.
<what I said, and lied a little bit>
Me: “No, I was helping Nancy last week troubleshoot the client application last week with the pop-up error. Since the service returned a null, she didn’t know where to begin to look for the actual error.”
Dev: “Oh.”1 -
So where to start... Let me preface this by saying I am a Software Architect for C# and do 99% dotnet development.
I just received a phone call from our Director of Development asking me to look at adding a feature for SSO with our companies main development project, which is written in PHP. I hope I made the correct changes but since I am not a PHP dev... I am not 100% confident in my code.
Now I am writing this as we are making the deployment Friday, December 29, 2017 at 5:00 pm. I should add that I am going on vacation for the next week.
So let me summarize... I am not a PHP developer, the non-PHP developer is making PHP changes on a Friday Night, and before a long weekend and before going on vacation.
I would like to point out that I said I was not 100% comfortable with this... but well this is what they wanted. I am not even sure what really to say about this though.6 -
Conversations I've genuinely had at work:
Me: "Do you want some advice understanding that function?"
Dev: "Yeah, please!"
Me: "Get a plastic bag and some super glue..."
Dev: "I think I'm seeing the light at the end of the tunnel!"
Me: "It's just the train of mental bitchslaps coming in the other direction."
... Some time later
Dev:"You were right... "
Dev: "If the system is so unstable, how does it keep working?"
Me: "Do you see any goats in the office?"
Dev: "Uhm no... Why would there be goats?"
Me: "There aren't, now, we ran out."
Dev: "The hell are you talking about?"
Me: "We just sacrifice our own blood to Cthulhu these days, it's cleaner and we didn't have to pay to have all the goats blood and waste matter to be cleaned up. That and it was needlessly cruel to the poor goats and that is why there is no goats and despite conventional logic the app continues to work."
Dev: "So what language is the web app written in?"
Me: "You need to understand I inherited this project, I had nothing to do with it's spawning..."
Dev: "OK, that sounds ominous... How bad is it?"
Me: "Java..."
Dev: "..."
Dev: "So what's it like working on this project? What should I expect?"
Me: "You'll call your grandmother during your lunch break just to know there's a world beyond this project. You'll go home, nose bleeding and you are gonna sit in the shower and rock back and forth, holding yourself and feeling like you're suffering imposter syndrome. You'll question why you joined this team and it'll get inside your head til it's all you think about..."
Dev: "Damn man, why are you still on it?"
Me: "Stockholm syndrome, it's too late for me..."
PM: "You're such a dark person, we're not gonna find you hanging from the lights one day are we?"
Me: "Impossible, we use those industrial fluorescent strip lights, there's no cord to hang from."
PM: "That really wasn't the comforting answer I was looking for."
Head of department: "So I need to apologize, you were never meant to be left on your to manage the product on your own, it's something someone way more senior should have been doing and we reassigned him. It wasn't professional of us, it wasn't fair of us, we're sorry. Truth be told,we're impressed you've not gone mad."
Me: "I think I have. Wibble."
A card goes round work for a sick member of staff I've never met.
Me: "How would you describe her condition?"
Dev: "She said that she 'survived' the surgery."
Me: "Yeah, I'm not great at being appropriate but even I think writing 'glad to hear that you are not dead' in a get well soon card isn't the done thing."5 -
Boss comes to me with an idea, we use a spreadsheet to store certain sets of links for clients, sometimes with dozens of links, he wants us to be able to push a button and open all the links in the sheet. I'll admit I'm not exactly proficient in excel but said I'd look into it.
I came up with a macro which seemed to work for a while but there were a few links now and then that didn't want to open due to the way excel apparently checks the links prior to actually opening them. I told my boss that I'd look into a better solution but was slammed in office with scheduled projects.
I ended up taking time at home over the next week learning how to make this happen in Python. After a week I've got a CLI Python app which takes in an excel workbook and asks the user to select a sheet. Well employees don't like CLI so they asked for a GUI. I had never made anything with a GUI before since I'm not a software developer, anything I had previously written was written for me so it didn't need a GUI to be useful.
Spent another two weeks at home developing this thing and finally got a working solution. Now several employees are using my app as part of their daily job, saving them well over an hour of just clicking links in a spreadsheet.
Boss goes on a long rant about how he appreciates me and is thankful I was able to figure this out in my own time and save him money. So I say "If you really wanna show you appreciate me, you could approve that raise I've been asking for."
He replies, "Haha, yeah, but that's not gonna happen."
(I and THE back end developer, and I make less than the copywriting interns, time to start looking)12 -
Google sucks!
No, not as e-mail or for privacy reasons. Sure, that too, but it comes with "free" stuff.
It sucks because it's breaking every possible record in the worst, shittiest, most insanely stupid APIs and integrations out there on the entire fucking planet!
It is comically stupid!
Aside from their LOVE of hard-deprecating APIs every few months, requiring constant, time consuming maintenance of every tool that integrates deeply with Google services, some of their APIs, for expensive stuff, look like they've been written by Bobby McFartface from 7th grade.
Take a look at DoubleClick Search (their ad performance reporting tool, that sure does sound like one). To upload custom, additional data, you must pass in a ton of parameter, and they REQUIRE some of them to have a specific, hardcoded value. What's the point in passing that parameter then you dickheads?!
But fine, so you uploaded some stuff using the API. Now you want to delete everything and try again after you fixed a bug - well you fucking CAN'T! You can't delete stuff, you can only mark them as "deleted" using an update call.
Bulk operations? Fuck no!
Can I just add on top? Well of course not! That will raise a ton of exceptions. Same message should be transmitted using the PUT, not POST request, in order to edit.
Can I send everything to PUT? Of course not! You can't edit something that's not there, dummy!
Can I see what's there so that I can update it, and add what's missing?
Well of course not! Why on Earth would you need to see what information is in there after you uploaded it? Who needs that anyway?
Simply send, pray, and hope that everything will be fine (it will not).
Like holy fucking crap, it can't get any more stupid!
Google is a huge pile of idiots who feed on only a single cow - the search engine.
It's times like these when I think that Google right now is the worst thing that exists for everyone in tech. It's dragging everyone down with their monopolies everywhere and complete idiocy in managing them.5 -
A couple of weeks ago, I asked the "brand manager" if he knew how to reset printers to their defaults before reconfiguring them, knowing full well that he did not. He assured me that he did. I smiled and let him leave.
He called me yesterday, frantic, because he didn't know how to reconfigure a printer that already had a password. After reminding him of the above, I told him how to put the printer in diagnostic mode and how to navigate the menus. Literally: "Turn the printer off, then hold down the feed paper button while turning the printer on. It will print out a bunch of diagnostics, and a menu at the bottom. Just follow the instructions at the bottom to use the menu"
Apparently following simple instructions is well outside of his abilities. After he spent five minutes fighting with it and complaining, I called him and walked him through powering the printer on while holding down the feed paper button. Terribly difficult.
The next step amounts to "hold down the feed paper button for more than 1 second." He spent ten minutes (ten!) on this unimaginably challenging step, and, frustrated at his inability to outsmart a simple button, he gave up completely.
He literally couldn't follow the instructions on the printout. I've attached a picture to show how ridiculous this is, and it saddens me terribly to report that I'm quite serious. he was literally unable to figure this out.
HE SPENT TEN MINUTES TRYING TO PUSH A BUTTON FOR >1 SECOND! TEN MINUTES!
That's what was too difficult for him! A button! With written instructions!
I can't even.
But the kicker?
Now he and the bossman want me to drive half an hour so I can push a button for ~1.2 seconds because they're utterly incapable.
I'm soo done.
So. done.7 -
ESTIMATING FUCKING HOURS.
Well not literally, that only takes 10 minutes.
But software estimation... anyone pretending to be good at it is a dirty liar. Adding a button? Uh, let's say 2 hours, I mean I gotta poop in between as well, and it's probably some broken bootstrap theme with hacked custom margins.
Building a commenting system coupled to an ancient CRM? Uh... maybe one day? Maybe a month? I don't even know what the CRMs looks like? You won't show me because "that's irrelevant"?
WELL THEN I DON'T FUCKING HAVE A CLUE.
And in the time we spent on discussing time estimations, I could have written like half of the feature... or zero... because you still haven't fucking shown me what the CRM API looks like.
YOU KNOW WHAT I'LL GIVE YOU AN ESTIMATION. ME. VACATION. DONE IN 6 WEEKS.6 -
2017 Recap + DEVBANNER !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
1. So, let's recap my 2017 first. It was awesome
Here is some list that I can remember
- finding my hobby (fsx, vatsim)
- finding computers aren't genius
- creating a new language
- major improvements in my unity skills
- found out i am friendly
- getting a job at google in a dream
- creating my banner in krita --> devbanner collab :D
- Logo creation fail
- CS class apply fail
- getting free stickers for the first time of my life
- getting death threats (lol)
- finishing my first ever big c# project
- got offensive words from a bot that i am a f***ing d***head.
- getting downvotes after creating such a shitty meme
- getting my rant featured in twitter
- finding that my friends love my game
- getting a sneak peak at the src of devrant
- coding with turbo c
- not using git cuz too lazy
- finds out msdn is god
- slowly hating unity, but likes it cuz it is using c#
- reaching level 2 in google foobar
- started 100+ projects this year and finished about 6 of them.
- devRant motivated me a lot
2. devBanner stuffs
So, how it all started is when I wanted to create my own logo. Some people will remember it. The one with arrows and cozyplales written on it. Then, I created my own banner with Krita (their text tool sucked). After that, due to some suggestions by the community, I decided to create a collab. From then, many people contributed to the devBanner project. Special thanks to @Kimmax for his awesome prototype of the frontend made during I was sleeping.
Now, before I talk more, I want to talk something. I don't post a rant about my collab cuz i want to get upvotes. I just want more people to use this simple creation software. You can literally use them anywhere, and it is FOSS.
Well....
If you want to create again, you can do so at https://devbanner.center
If you want to contribute, please do so by visiting https://github.com/devBanner
We are looking for a skilled frontend dev who can do the basic web stuffs. (we don't use frameworks currently for our frontend)
---------------------
Thanks everyone for making 2017 awesome. Can't wait to welcome 2018. Happy new year everyone, and I will drop my banner here.21 -
Been reviewing ALOT of client code and supplier’s lately. I just want to sit in the corner and cry.
Somewhere along the line the education system has failed a generation of software engineers.
I am an embedded c programmer, so I’m pretty low level but I have worked up and down and across the abstractions in the industry. The high level guys I think don’t make these same mistakes due to the stuff they learn in CS courses regarding OOD.. in reference how to properly architect software in a modular way.
I think it may be that too often the embedded software is written by EEs and not CEs, and due to their curriculum they lack good software architecture design.
Too often I will see huge functions with large blocks of copy pasted code with only difference being a variable name. All stuff that can be turned into tables and iterated thru so the function can be less than 20 lines long in the end which is like a 200% improvement when the function started out as 2000 lines because they decided to hard code everything and not let the code and processor do what it’s good at.
Arguments of performance are moot at this point, I’m well aware of constraints and this is not one of them that is affected.
The problem I have is the trying to take their code in and understand what’s its trying todo, and todo that you must scan up and down HUGE sections of the code, even 10k+ of line in one file because their design was not to even use multiple files!
Does their code function yes .. does it work? Yes.. the problem is readability, maintainability. Completely non existent.
I see it soo often I almost begin to second guess my self and think .. am I the crazy one here? No. And it’s not their fault, it’s the education system. They weren’t taught it so they think this is just what programmers do.. hugely mundane copy paste of words and change a little things here and there and done. NO actual software engineers architecture systems and write code in a way so they do it in the most laziest, way possible. Not how these folks do it.. it’s like all they know are if statements and switch statements and everything else is unneeded.. fuck structures and shit just hard code it all... explicitly write everything let’s not be smart about anything.
I know I’ve said it before but with covid and winning so much more buisness did to competition going under I never got around to doing my YouTube channel and web series of how I believe software should be taught across the board.. it’s more than just syntax it’s a way of thinking.. a specific way of architecting any software embedded or high level.
Anyway rant off had to get that off my chest, literally want to sit in the corner and cry this weekend at the horrible code I’m reviewing and it just constantly keeps happening. Over and over and over. The more people I bring on or acquire projects it’s like fuck me wtf is this shit!!! Take some pride in the code you write!16 -
One Thursday noon,
operation manager: (looking at mobile)what the.....something is wrong i am getting bunch of emails about orders getting confirmed.
Colleague dev: (checks the main email where it gets all email sent/received) holy shit all of our clients getting confirmation email for orders which were already cancelled/incomplete.
Me: imediately contacting bluehost support, asking them to down the server so just that we can stopp it, 600+ emails were already sent and people keep getting it.
*calls head of IT* telling the situation because he's not in the office atm.
CEO: wtf is happening with my business, is it a hacker?
*so we have a intrusion somebody messed the site with a script or something*
All of us(dev) sits on the code finding the vulnerabilities , trying to track the issue that how somebody was able to do that.
*After an hour*
So we have gone through almost easch function written in the code which could possibly cause that but unable to find anything which could break it.
Head asking op when did you started getting it actually?
Op: right after 12 pm.
*an other hour passes*
Head: (checking the logs) so right after the last commit, site got updated too?. And....and.....wtf what da hell who wrote this shit in last commit?
* this fuckin query is missing damn where clause* 🤬
Me: me 😰
*long pause, everyone looking at me and i couldn't look at anyone*
The shame and me that how can i do that.
Head: so its you not any intrudor 😡
Further investigating, what the holy mother of #_/&;=568 why cronjob doesn't check how old the order is. Why why why.
(So basically this happened, because of that query all cancelled/incomplete orders got updated damage done already, helping it the cronjob running on all of them sending clients email and with that function some other values got updated too, inshort the whole db is fucked up.)
and now they know who did it as well.
*Head after some time cooling down, asked me the solution for the mess i create*
Me: i took backup just couple of days before i can restore that with a script and can do manual stuff for the recent 2 days. ( operation manager was already calling people and apologising from our side )
Head: okay do it now.
Me: *in panic* wrote a script to restore the records ( checking what i wrote 100000000 times now ), ran...tested...all working...restored the data.
after that wrote an apology email, because of me staff had to work alot and it becomes so hectic just because of me.
* at the end of the day CEO, head, staff accepted apology and asked me to be careful next time, so it actually teached me a lesson and i always always try to be more careful now especially with quries. People are really good here so that's how it goes* 🙂2 -
I just had a rather stressful morning. I should've known something was up by the sounds of thunder as I walked into the office.
I sat down and checked my emails. There was an email from the boss who was away on a business trip. The subject read, "CRITICAL BUG" and my name was mentioned. "Great...No time for coffee", was my first thought.
I began searching commits to see when and how the bug came to be. "SHIT! It was my fault", I said aloud.
(A bit of backstory, I am Irish, working in Germany with a B2 level of the German language.)
I now had to communicate the problem quickly with a senior developer who is Russian. He can't speak English well and I would not expect him to speak it. We are in Germany after all. I tried my best to communicate the issue, but I found it so difficult to understand his German in a Russian accent. Normally, in the office I speak German except when it is urgent and I must explain a problem in greater detail through English. I got past that obstacle, however, the real challenge of fixing the bug awaited.
After 2 hours of coding, I had a solution and committed it to the master branch. All the while, I had been replying to the bosses emails with updates, probably with many grammer mistakes.
We have no dedicated testers here and the code is written in a way which makes it very difficult to test (i.e. it was written many years ago). When I had initially written the code, I tested rigorously and found no issues.
Just needed to rant. I need a coffee break now...4 -
Allright, I'm pissed.
Warning: more than 4k characters written by a non native english speaker ahead.
Legend:
Storytelling
> Short summary of the current situation
> "Something being said"
> (Something being thought)
* Actions *
-- Background --
In an attempt to reorganize my desktop I accidentally deleted a folder I called "development". In there I stored links to all my IDEs (Not sure how you call these in english), but also some workspaces like unity (Not much stuff there, processing (just some hobby stuff) AND Eclipse (FUCKING EVERYTHING RELATED TO SCHOOL WEB DEVELOPMENT). Now 3 days have passed and I realized this important folder was missing. Cleared that windows trash the instant I deleted the trash on my desktop.
> Shit, Regret
Install a file restore programm. Do every possible search. Nothing found.
> Big shit
Deadline was in like 3 days. Week was fucking rough so:
> "Screw this, the teacher nevet corrects the assignments and also fuck JSP"
Fast forward 2 months to last week. Teacher starts checking assignments.
> Fuck
* Sees pattern: Only students with missing or bad marks are checked. *
* Feels save *
Teacher approaching me while working on current projects.
* Doesn't feel save anymore *
> "Well, I'ld like to see your THAT programm"
> Well fuck
* Tells the truth *
> "Well that's unfortunate, but I must write a mark. Do you really have nothing to show?"
* Remember that I worked on the school pcs when I started *
> (Better than nothing. Gotta try it)
* Teacher checks programm, not pleased *
> (Fuck me, but at least it's over...)
> Nope
* Teacher calls me over *
> "With the mark I had to write today you can't reach that good mark even with a good examination, what are we gonna do about this?"
> "Well, there were other assignments that were never checked. Could we replace that mark with one of those?"
* Teacher agrees *
> (Srly bless this guy for that support)
My best choice was an Android app we had to develop during December in pairs. I did the front end (90% of the whole work) and my partner the backend (10 %). I also did 30 % of these 10 %, because I had to review the shit he wasn't able to debug himself.
> brainlogic.exe provided by windows vista
This distribution was partly my fault since I overestimated the work needed for the backend, but also the fault of that fucker. I mean, he didn't tell me the professor already provided 90 % of the backend...
Rest of the week was really busy (always 1 or 2 things to study for each day, workout and family stuff).
Yesterday (It's past 12 already) I arrived at ~9 pm in the dorm I could finally start reviewing my code.
Internet gets shut down at 10 pm.
Gotta hurry.
* Opens project *
* Sees half a year old code *
* Fights urge to puke *
> (Alright I gotta do this. For the mark!)
* waits for gradle to index files *
* Remembers the fact that I haven't opened Android Studio in the last 2 months *
For those who don't develop with android studio: This is an equivalent to ~10k windows updates waiting to be installed
> (Well, gotta work with this kinda old version)
"gradle sync failed"
> ( Ok, just restart it. You're fine )
* Android Studio doesn't react anymore and/or renders *
* Waits 5 min *
* Restarts laptop *
* Android Studio is reacting again*
"gradle is synching"
9:45 pm: gradle is done and I can finally compile my app
> FML
* Sees App launched on phone *
* Almost pukes again *
> (This was the assigment for the UX chapter, so design doesn't matter)
UX is decent. Proceeds with testing stuff. Save paths work, but some bugs can be caused by going of it
* fixes as much as possible *
* Takes quick look at backend *
Date date = new Date (GregorianCalender.getInstance().getTimeInMillis());
C'mon, I asked you to be the backend. You got 90% of the methods already written by the teacher and had 2 months to write the interfaces to my Front end AND you come up with shits like that.
Note: this example is a minor example of brainlogic.exe
I did what I could to make improve my situation. Hopefully he doesn't discover the bugs. And If it's a backend bug then I could't care less, since that was not my job!
Wish me luck for today!undefined web development jsp school assignment not my job fuck up android studio tldr; not getting paid enough for this shit gradle blame backend9 -
I found this on Quora and It's awesome.
Have I have fallen in love with Python because she is beautiful?
Answer
Vaibhav Mallya, Proud Parseltongue. Passionate about the language, fairly experienced (since ...
Written Nov 23, 2010 · Upvoted by Timothy Johnson, PhD student, Computer Science
There's nothing wrong with falling in love with a programming language for her looks. I mean, let's face it - Python does have a rockin' body of modules, and a damn good set of utilities and interpreters on various platforms. Her whitespace-sensitive syntax is easy on the eyes, and it's a beautiful sight to wake up to in the morning after a long night of debugging. The way she sways those releases on a consistent cycle - she knows how to treat you right, you know?
But let's face it - a lot of other languages see the attention she's getting, and they get jealous. Really jealous. They try and make her feel bad by pointing out the GIL, and they try and convince her that she's not "good enough" for parallel programming or enterprise-level applications. They say that her lack of static typing gives her programmers headaches, and that as an interpreted language, she's not fast enough for performance-critical applications.
She hears what those other, older languages like Java and C++ say, and she thinks she's not stable or mature enough. She hears what those shallow, beauty-obsessed languages like Ruby say, and she thinks she's not pretty enough. But she's trying really hard, you know? She hits the gym every day, trying to come up with new and better ways of JIT'ing and optimizing. She's experimenting with new platforms and compilation techniques all the time. She wants you to love her more, because she cares.
But then you hear about how bad she feels, and how hard she's trying, and you just look into her eyes, sighing. You take Python out for a walk - holding her hand - and tell her that she's the most beautiful language in the world, but that's not the only reason you love her.
You tell her she was raised right - Guido gave her core functionality and a deep philosophy she's never forgotten. You tell her you appreciate her consistent releases and her detailed and descriptive documentation. You tell her that she has a great set of friends who are supportive and understanding - friends like Google, Quora, and Facebook. And finally, with tears in your eyes, you tell her that with her broad community support, ease of development, and well-supported frameworks, you know she's a language you want to be with for a long, long time.
After saying all this, you look around and notice that the two of you are alone. Letting go of Python's hand, you start to get down on one knee. Her eyes get wide as you try and say the words - but she just puts her finger on your lips and whispers, "Yes".
The moon is bright. You know things are going to be okay now.
https://quora.com/Have-I-have-falle...#4 -
Long rant ahead.. so feel free to refill your cup of coffee and have a seat 🙂
It's completely useless. At least in the school I went to, the teachers were worse than useless. It's a bit of an old story that I've told quite a few times already, but I had a dispute with said teachers at some point after which I wasn't able nor willing to fully do the classes anymore.
So, just to set the stage.. le me, die-hard Linux user, and reasonably initiated in networking and security already, to the point that I really only needed half an ear to follow along with the classes, while most of the time I was just working on my own servers to pass the time instead. I noticed that the Moodle website that the school was using to do a big chunk of the course material with, wasn't TLS-secured. So whenever the class begins and everyone logs in to the Moodle website..? Yeah.. it wouldn't be hard for anyone in that class to steal everyone else's credentials, including the teacher's (as they were using the same network).
So I brought it up a few times in the first year, teacher was like "yeah yeah we'll do it at some point". Shortly before summer break I took the security teacher aside after class and mentioned it another time - please please take the opportunity to do it during summer break.
Coming back in September.. nothing happened. Maybe I needed to bring in more evidence that this is a serious issue, so I asked the security teacher: can I make a proper PoC using my machines in my home network to steal the credentials of my own Moodle account and mail a screencast to you as a private disclosure? She said "yeah sure, that's fine".
Pro tip: make the people involved sign a written contract for this!!! It'll cover your ass when they decide to be dicks.. which spoiler alert, these teachers decided they wanted to be.
So I made the PoC, mailed it to them, yada yada yada... Soon after, next class, and I noticed that my VPN server was blocked. Now I used my personal VPN server at the time mostly to access a file server at home to securely fetch documents I needed in class, without having to carry an external hard drive with me all the time. However it was also used for gateway redirection (i.e. the main purpose of commercial VPN's, le new IP for "le onenumity"). I mean for example, if some douche in that class would've decided to ARP poison the network and steal credentials, my VPN connection would've prevented that.. it was a decent workaround. But now it's for some reason causing Moodle to throw some type of 403.
Asked the teacher for routers and switches I had a class from at the time.. why is my VPN server blocked? He replied with the statement that "yeah we blocked it because you can bypass the firewall with that and watch porn in class".
Alright, fair enough. I can indeed bypass the firewall with that. But watch porn.. in class? I mean I'm a bit of an exhibitionist too, but in a fucking class!? And why right after that PoC, while I've been using that VPN connection for over a year?
Not too long after that, I prematurely left that class out of sheer frustration (I remember browsing devRant with the intent to write about it while the teacher was watching 😂), and left while looking that teacher dead in the eyes.. and never have I been that cold to someone while calling them a fucking idiot.
Shortly after I've also received an email from them in which they stated that they wanted compensation for "the disruption of good service". They actually thought that I had hacked into their servers. Security teachers, ostensibly technical people, if I may add. Never seen anyone more incompetent than those 3 motherfuckers that plotted against me to save their own asses for making such a shitty infrastructure. Regarding that mail, I not so friendly replied to them that they could settle it in court if they wanted to.. but that I already knew who would win that case. Haven't heard of them since.
So yeah. That's why I regard those expensive shitty pieces of paper as such. The only thing they prove is that someone somewhere with some unknown degree of competence confirms that you know something. I think there's far too many unknowns in there.
Nowadays I'm putting my bets on a certification from the Linux Professional Institute - a renowned and well-regarded certification body in sysadmin. Last February at FOSDEM I did half of the LPIC-1 certification exam, next year I'll do the other half. With the amount of reputation the LPI has behind it, I believe that's a far better route to go with than some random school somewhere.25 -
If I died, I would have one regret.
I once worked in a code base whose messiness would make an oil spill in the fucking pacific ocean look like spilled milk on the floor in comparison.
Naturally, it had bugs. Oh BOY did it have bugs. Most of them were taken care of well enough. Or about as well as anyone insane enough to work in that code could.
There was just this one bug, which I still (un)fondly call "my bug of 2 years". It. Just. Didn't. Make. Sense.
It was written in JavaScript. Naturally. Which by itself, is the metaphorical programming language equivalent of a pile of horse manure. But this bug. It was the guano icing on top of the horse manure cake which is JavaScript.
I LITERALLY spent 2 years trying to find a solution. I woke up at night, thinking of explanations. I had dreams about fixing the damn thing. And I never did.
On the day I left the job, I had to pass it on to a friend (who hasn't solved the fucker yet either).
I hated that bug with all my heart. But..
Now that I think back, all the books I read, all the docs that I scoured, every non working fix I coded and every failed efforts I made on it, eventually made me a better programmer.
So cherish your bugs and issues. Sometimes, they come, not to hurt you, but to help you grow (unless you use JS, those bugs just wanna fuck you).3 -
It was friday evening and almost everyone in office had left. I was assigned a bug related to some of my code changes. I called my senior to help me debug (has three years of experience, whereas me having only one year exp, who is also a very good friend of mine *always helps in debugging*).
So the code goes
switch (someEnum) {
case One:
doSomething()
// no break
case Two:
t.x = someEnum
break
case Three:
.....
}
I had recently added new enun One and was reciting the code logic to him as we were looking through code.
Him: Hey you haven't set t.x in case One. How did you miss that?
Me: No look, I haven't but a break on it. It will go ahead and set it in next case.
Him: What are you talking about? if the someEnun is One why would it execute Two case. Lets copy that line up there and try it locally.
Me: No no no wait. Are you saying that groovy doesn't need breaks in switch (Me being new to groovy but good with Java).
Him: Why would you need break in switch case even in Java?
Me: *stares at him*
Him: I'm going to execute a psvm right freaking now.
Me: *while he writes the psvm* Why did you think there were breaks in switch in any code?
Him: Shut up. *writes psvm code cursing me everywhere*
*executes code*
No way. Really??
Me: Tell me why do you think are there breaks in switch.
Him: I though they were to get you out of switch block and not execute the default block.
Me: So were you coding switch until now without breaks?
Him: I don't know man. I'm starting to doubt all the switches I have ever written.
Me: Anyway that's not the problem, so moving on.
*a while later*
Him: If a interviewer would ask me how would you rate yourself in Java. I would be like "Well I worked on various projects for 3 years in Java, but didnt know why we put breaks in switch. So you figure it out yourself."
One of the best moments in office.8 -
I was getting a freelancer job to do some backend work for a company in India that is working for a huge company in Saudi Arabia.
The customer in india was my primary contact, I wasn't allowed to talk to the guys in Saudi Arabia. My contact, we'll call him Aman, asks if i can do frontend too. I decline. Now what follows were 4 weeks of backend work during which Aman called me 10-15 times per day via skype to ask me how I was progressing, and if "insert spec here" was already done. He even called me in the middle of the night, well aware of the different time zones.
But in the end all the work is done, Aman is happy. I request payment.
Aman: We can't pay you yet, you didn't do the frontend!
Me: I'm not doing frontend.
Aman: It's just a few simple changes and then we're done.
Me: Gnnn, fuck it, what do you need?
Aman: Our customer would like the frontend to look better.
Me: Ok, so what exactly should look better?
Aman: All of it.
Me: Do you have any specs?
Aman: No just make it look more modern.
Me: So you want me to rework the whole frontend? That's not just a few simple changes...
Aman: How long would you need?
Me: I actually don't do that kind of work.
Aman: We pay you double your hourly rate if you do this and finish it fast.
(This is were I should have just said no... but the greed...)
Me: Ok, but it will take me about 3 weeks to do that.
Aman: OK.
Me: Do you have any preferences as to how it should look?
Aman: No, just surprise us.
(After this sentence I really should have gotten the hell out of Dodge)
After working 3 weeks changing over 20.000 lines of CSS and most of the HTML I present Aman with the changes.
Aman: No our customer doesn't like the changes. Can you make a different version?
Me: What doesn't he like, any specifics, coloring, styling of lists or the buttons?
Aman: He doesn't like the whole thing. Please make us another version.
Me: Ok, you are the customer, but it would really help if you give me some pointers as to how it should look like.
Aman: Just do your best.
Me: ..., ok, that's helpful.
2 weeks later...
Aman: No our customer liked the version before better. But could you make it look more modern.
Me: *Bangs head against wall repeatedly*
Me: What do you mean by modern?
Aman: It should look more modern, as a whole.
Me: Ok, I get that, but could you give me an example?
Aman: Sends me a screenshot of the overview screen with all the elements encircled and modern written beside them.
1 week later...
Aman: The customer has decided, he likes the original version best. Can you undo all the changes?
Me: Sure but that'll take like 1 hour.
Aman: Oh by the way we were asked by accounting why the price for this project was so high?
Me: *hugh* *gnn* what?
Aman: Well at the beginning, you estimated the backend and frontend work to be done in 4 weeks.
Me: The frontend was never part of the original estimate.
Aman: Can you do anything concerning your hourly rate, so that we can get back to the original pricing.
Me: *make a mental note to never work with an intermediary company in india again and cancels the job requesting the due payment*
Luckily I got paid the full amount but not before having another 10 Skype call with Aman...17 -
I love how the Keybase Linux client installs itself straight into /keybase. Unix directory structure guidelines? Oh no, those don't apply to us. And after uninstalling the application they don't even remove the directory. Leaving dirt and not even having the courtesy to clean it up. Their engineers sure are one of a kind.
Also, remember that EFAIL case? I received an email from them at the time, stating some stuff that was about as consistent as their respect for Unix directory structure guidelines. Overtyping straight from said email here:
[…] and our filesystem all do not use PGP.
> whatever that means.
The only time you'll ever use PGP encryption in Keybase is when you're sitting there thinking "Oh, I really want to use legacy PGP encryption."
> Legacy encryption.. yeah right. Just as legacy as Vim is, isn't it?
You have PGP as part of your cryptographic identity.
> OH REALLY?! NO SHIT!!! I ACTIVELY USED 3 OS'S AND FAILED ON 2 BECAUSE OF YOUR SHITTY CLIENT, JUST TO UPLOAD MY FUCKING PUBLIC KEY!!!
You'll want to remove your PGP key from your Keybase identity.
> Hmm, yeah you might want to do so. Not because EFAIL or anything, just because Keybase clearly is a total failure on all levels.
Written quickly,
the Keybase team
> Well that's fucking clear. Could've taken some time to think before hitting "Send" though.
Don't get me wrong, I love the initiatives like this with all my heart, and greatly encourage secure messaging that leverages PGP. But when the implementation sucks this much, I start to ask myself questions about whether I should really trust this thing with my private conversations. Luckily I refrained from uploading my private key to their servers, otherwise I would've been really fucked. -
writing library code is hard.
there are sooo many details that go into writing good libraries:
designing intuitive and powerful apis
deciding good api option defaults, disallowing or warning for illegal operations
knowing when to throw, knowing when to warn/log
handling edge cases
having good code coverage with tests that doesn't suck shit, while ensuring thry don't take a hundred years to run
making the code easy to read, to maintain, robust
and also not vulnerable, which is probably the most overlooked quality.
"too many classes, too little classes"
the functions do too much it's hard to follow them
or the functions are so well abstracted, that every function has 1 line of code, resulting in code that is even harder to understand or debug (have fun drowning in those immense stack traces)
don't forget to be disciplined about the documentation.
most of these things are
deeply affected by the ecosystem, the tools of the language you're writing this in:
like 5 years ago I hated coding in nodejs, because I didn't know about linters, and now we have tools like eslint or babel, so it's more passable now
but now dealing with webpack/babel configs and plugins can literally obliterate your asshole.
some languages don't even have a stable line by line debugger (hard pass for me)
then there's also the several phases of the project:
you first conceive the idea, the api, and try to implement it, write some md's of usage examples.
as you do that, you iterate on the api, you notice that it could better, so you redesign it. once, twice, thrice.
so at that point you're spending days, weeks on this side project, and your boss is like "what the fuck are you doing right now?"
then, you reach fuckinnnnng 0.1.0, with a "frozen" api, put it on github with a shitton of badges like the badge whore you are.
then you drop it on forums, and slack communities and irc, and what do you get?
half of the community wants to ban you for doing self promotion
the other half thinks either
a) your library api is shitty
b) has no real need for it
c) "why reinvent the wheel bruh"
that's one scenario,
the other scenario is the project starts to get traction.
people start to star it and shit.
but now you have one peoblem you didn't have before: humans.
all sorts of shit:
people treating you like shit as if they were premium users.
people posting majestically written issues with titles like "people help, me no work, here" with bodies like "HAAAAAAAAAALP".
and if you have the blessing to work in the current js ecosystem, issues like "this doesn't work with esm, unpkg, cdnjs, babel, webpack, parcel, buble, A BROWSER".
with some occasional lunatic complaining about IE 4 having a very weird, obscure bug.
not the best prospect either.3 -
The more depressed you get over the current state of software is how you know you made it.When you start making your own opinions and say"wow these people are full of shit"
Primary example, the web development overblown bullshit. Fuck me dude, you really don't need that full featured react, vue, angular framework to make sense of shit. You are going over the top for fucking ajax functionality and state management that you could do by yourself without needing to learn a full framework, by the time you finish learning react you probably would have been better served with standard vanilla af JS and server side rendering.
Our world is full of fads and many talented people that perpetrate them. Its fine, it is a the nature of the beast. But a lot...A LOT of software is very POORLY written. And adding levels of abstraction over a very broken paradigm (web in this case) does and will not make it better.
Basically I am fucking hating being a web developer and want to go back to a time in which we cared about how much memory consumption our applications made as well as not worrying about the fucking frontend having the ability to implement machine learning.
I want to run sublime.exe and being sure that it is a native application to my system and not using a fucking contained web browser to implement my fucking text editor. With 20mb of ram at most instead of 500mb WTF.
I knew I made it when I could read comments on Hacker news and reddit and say "this idiot is full of shit", I knew I made it when I would sigh heavily at the idea of having another project rather than having a fan girl attitude towards it.
I knew I made it when people writing about software development meant shit to me rather than the wonder of what the fuck they were talking about.
I knew I made it when getting laid was more important to me than fucking around with code.
pussy > code
Fuck you.13 -
Tl;dr
Longest Rant I've written so far.
How to manage a school (by out school director):
Did this student do something spezial to emphasize the school?
-No: Ignore him
-Yes: Did the student achieve this with the help of this schools staff?
-No: Take all the credit
-Yes: Hahaha, just a joke, nobody receives help from the school. Goto -No
Q: Should this class get the 5 day trip, they've been waiting for the whole year?
Director: No.
Q: But they don't even participate in other trips just to go there.
D: No
(Good thing she did not have the last word there)
Does the school director need this one week trip to india, just to talk once about stuff, you can talk about via email, to a sponsor?
D: "Of course I deserve it"
D: "We need faster internet in this school"
Network admins: "But it won't be of any use, if the network can't handle it. We'll need better pcs (and network conponents) on top of that"
D: "No, bot enough money available for that one." *browses email with IPad paid by school money*
Teacher: "I want to realize project xy with the students. We'll need around 1200€ (for 20 people)."
D: "Can place xy at our school to as advertise?"
T: "No, but it's be a valuable le-"
D: "600 at most."
(Again denied by people who aren't fcking assholes. We got 1500€, so 300€ per group)
D: So what makes you think you can teach informatics in this school"
Applicant: "Well, I'm friends with one of your teacher here. We went to university together, where I learn't nothing about informatics and I don't even understand the principles of this subject"
D: "Close enough. Hired, you can teach them all the theory stuffy. You don't have to prepare that yourself another teacher has done so. Just read it from his documents."
*In class with the mentioned teacher talking about Threads*
*Le wild code appears*
while (doStuff())
System.out.println ("Thread working...");
System.out.println ("Thread terminated");
T: "... and most importantly, when you have done all the work be sure to terminate the thread with 'System.out.println ("Thread terminated");'"
Should this teacher be allowed to participate in this seminar about burnouts?
D: "No, I can't afford paying the supplenze."
Staff: "We need to talk with the director about this."
S: "Not in her office. The cafeteria maybe"
*Not in the cafeteria either*
S: "Seems like she didn't come to achool today. Let's try tomorrow"
(^ Stuff that happens almost daily. Screw semicolons. I see her only once a month at most)
*Student send 5000 emails by accident* (Shit happens 😂😅😂😅)
D: "You gonna work here for a full afternoon"
*Student arrives for his punishment*
Staff: "Good that you're here. Do this real quick."
*10 min. Later*
Student: "Done"
Staff: "Well, we have no more work to give you, so you might as well leave"
DONE!!! Good job coming so far.
Our school is supposed to be the best, but internally it's one big meme.4 -
I'M TIRED OF HEARING THAT DEVELOPMENT IS NOT A CREATIVE FIELD! Creativity is emerging new ideas from non-existent ones. It is not confined to pretty designs or well-written copy. Sure, devs are logical problem solvers – but not a single dev will solve those problems the same way. Code is like the paint on our dark-themed canvases and you can see yourself out if you think devs are just robotic coding machines8
-
➡️You Are Not A Software Developer⬅️
When I became a developer, I thought that my job is to write software. When my customer had a problem, I was ready to write software that solves that problem. I was taught to write software.
But what customers need is not software. They need a solution to their problem. Your job is to find the most cost-effective solution, what software often is not.
According to the universal law of software development, more code leads to more bugs:
e = mc²
Or
errors = (more code)²
The number of bugs grows with the amount of code. You have to prioritize, reproduce and fix bugs.
The more code you write, the more your team and the team after it has to maintain. Even if you split the system into micro services, the complexity remains.
Writing well-tested, clean code takes a lot of time. When you’re writing code, other important work is idle. The work that prevents your company from becoming rich.
A for-profit company wants to make money and reduce expenses. Then the company hires you to solve problems that prevent it from becoming rich. Confused by your job title, you take their money and turn it into expensive software.
But business has nothing to do about software. Even software business is not about software. Business is about making money.
Your job is to understand how the company is making money, help make more money and reduce expenses. Once you know that, you will become the most valuable asset in the company.
Stop viewing yourself as a software developer. You are a money maker.
Think about how to save and make money for your customers.
Find the most annoying problem and fix it:
▶️Is adding a new feature too costly? Solve the problem manually.
▶️Is testing slow? Become a tester.
▶️Is hiring not going well? Speak at a meetup and advertise your company.
▶️Is your team not productive enough? Bring them coffee.
Your job title doesn’t matter. Ego doesn’t matter either.
Titles and roles are distracting us from what matters to our customers – money.💸
You are a money maker. Thinking as a money maker can help choose the next skill for development. For example:
Serverless: pay only for resources you consume, spend less time on capacity planning = 💰
Machine Learning: get rid of manual decision-making = 💰
TDD: shorter feedback cycle, fewer bugs = 💰
Soft Skills: inspire teammates, so they are more productive and happy = 💰
If you don’t know what to learn next — answer a simple question:
What skills can help my company make more money and reduce expenses?
Very unlikely it’s another web framework written in JavaScript.
Article by Eduards Sizovs
Sizovs.net17 -
"I keep telling you, I'm not a pilot"
"and I keep telling you, you fly boys crack me up!"
I'm not a developer, but I'm doing some complex things and I need the benefit of computers to work things out, so I know enough programming to get me by. Recently one of the uppers decided that all the amateur spaghetti python programs I'd quickly slapped together should be developed into tools that the clients engineers can use!
"How long do you need!."
" I have no idea how to make something like that",
"but it's all just maths right! you can figure it out",
"probably, given long enough bu.. "
"okay get started and we'll check in in a couple of weeks" "hold o.." "I'll give your pride and joy to the graduate to fuck up while you're working on that" "wai.. " "anyway got take this call, good luck"
┗|`O′|┛
So here I am.. I have no idea what I'm doing.
So since I have a working knowledge of python, fortran and VBA, someone suggested I learn nim, which was not what he sold it as. Then a software engineer that went to the same uni as me, suggested RUST! you can't mess up rust, and look at this I created (shows me a decent looking desktop application) "I'll help you out". But it wasn't really that easy.
Then I asked some questions... that was my first mistake, that's not acceptable until you know what you're doing apparently. Especially when the answers are in the docs you can't find in a topic you don't understand for a version you're not using solved with a tool you've never heard of for an operating system you forgot existed. Look at this moron asking a question.
Okay to be fair, I went through the rust docs and it was well written, and I do really like this language. But I do not have a degree in computer science, and so many docs for crates are just written with an expectation of a certain level of knowledge. As soon as there's a build error, it's at least 3 -4 days of me faffing about trying to decipher hieroglyphics.
..and the graduate is about to unwittingly commit manslaughter..
I'm sure whoever needs to fix this mess in the future will post a rant about this train wreck.6 -
If programming languages were countries, which country would each language represent?
Disclaimer: its just a joke
Java: USA -- optimistic, powerful, likes to gloss over inconveniences.
C++: UK -- strong and exacting, but not so good at actually finishing things and tends to get overtaken by Java.
Python: The Netherlands. "Hey no problem, let'sh do it guysh!"
Ruby: France. Powerful, stylish and convinced of its own correctness, but somewhat ignored by everyone else.
Assembly language: India. Massive, deep, vitally important but full of problems.
Cobol: Russia. Once very powerful and written with managers in mind; but has ended up losing out.
SQL and PL/SQL: Germany. A solid, reliable workhorse of a language.
Javascript: Italy. Massively influential and loved by everyone, but breaks down easily.
Scala: Hungary. Technically pure and correct, but suffers from an unworkable obsession with grammar that will limit its future success.
C: Norway. Tough and dynamic, but not very exciting.
PHP: Brazil. A lot of beauty springs from it and it flaunts itself a lot, but it's secretly very conservative.
LISP: Iceland. Incredibly clever and well-organised, but icy and remote.
Perl: China. Able to do apparently almost anything, but rather inscrutable.
Swift: Japan. One minute it's nowhere, the next it's everywhere and your mobile phone relies on it.
C#: Switzerland. Beautiful and well thought-out, but expect to pay a lot if you want to get seriously involved.
R: Liechtenstein. Probably really amazing, especially if you're into big numbers, but no-one knows what it actually does.
Awk: North Korea. Stubbornly resists change, and its users appear to be unnaturally fond of it for reasons we can only speculate on.17 -
Hello, I'm now gonna rant for a bit. I'm usually not a ranty person (wait, why am I on this site again?) , but here we go. I sometimes feel misunderstood about my side projects.
I don't know about you guys, but when I program on my free time, sometimes I just want to grab a glass of wine and explore things I think bout during the day. So, during the start of my CS-education, when I started to get my programming feet a little warm, I wrote this tic-tac-toe game (as you do...), and I thought "Well I know how to play the game. Surely I can program an AI to play against". So I thought hard for an evening or two and came up with something that wasn't too shabby (I can't win).
Then another time when learned about creating GUIs we got to do simple menu based stuff with buttons and pulldown menus following a certain structure, but we also learned that positions of components can be set freely. So I thought "Well, if I can freely change the positions of components, surely I can animate stuff and if I map that to some keys I can create a real time game!". So I wrote a small platformer with two squares that ideally succeed in killing one another. After animation I started fantasising about 3D rendering, so I created a small application which creates the illusion of 3D, which was cool and all, but that got me dreaming of creating a real 3D engine. It became almost like a cause of mine; to understand how it all works and create a 3D engine from scratch.
So now I've written a 3D engine. A simple one, mind you, without all the bells and whistles, but still a 3D engine.
So, after all this rambling, what is this rant about? It's about how people react to all this. The reactions are divided. Some are impressed, mostly people who cannot program, but others are like "hm...". For example, during job interviews, when people ask me if I've done anything on the side and I mention this, people usually go like ".... hm... :| Well that's great. So mostly just done your own stuff?". Well YES! What is that supposed to mean? That I've not created shippable applications? I've explored, which I myself believe is valuable! I believe I've learned something along the way. And most importantly I've enjoyed it. Maybe I'm over interpreting this, but sometimes it feels like people don't even understand the joy in it, like it's illogical. Why create something that in the end won't create any real value?
Am I alone in this? Or perhaps, have I just written far to long and uninteresting a rant for anybody to read this far? I don't know. You tell me.13 -
*Looks up advice on how to implement something
*Finds reasonable, well written advice on Stack Overflow that recommends not using <insert latest framework here>
*Ignores advice
*Two hours of exasperated coding and git resets later
*Goes back and upvotes advice -
"I'm almost done, I'll just need to add tests!"
Booom! You did it, that was a nuke going off in my head.
No, you shouldn't just need to add tests. The tests should have been written from the get go! You most likely won't cover all the cases. You won't know if adding the tests will break your feature, as you had none, as you refactor your untested mess in order to make your code testable.
When reading your mess of a test case and the painful mocking process you went through, I silently cry out into the void: "Why oh why!? All of this suffering could have been avoided!"
Since most of the time, your mocking pain boils down to not understanding what your "unit" in your "unit test" should be.
So let it be said:
- If you want to build a parser for an XML file, then just write a function / class whose *only* purpose is: parse the XML file, return a value object. That's it. Nothing more, nothing less.
- If you want to build a parser for an XML file, it MUST NOT: download a zip, extract that zip, merge all those files to one big file, parse that big file, talk to some other random APIs as a side-effect, and then return a value object.
Because then you suddenly have to mock away a http service and deal with zip files in your test cases.
The http util of your programming language will most likely work. Your unzip library will most likely work. So just assume it working. There are valid use cases where you want to make sure you acutally send a request and get a response, yet I am talking unit test here only.
In the scope of a class, keep the public methods to a reasonable minimum. As for each public method you shall at least create one test case. If you ever have the feeling "I want to test that private method" replace that statement in your head with: "I should extract that functionality to a new class where that method public. I then can create a unit test case a for that." That new service then becomes a dependency in your current service. Problem solved.
Also, mocking away dependencies should a simple process. If your mocking process fills half the screen, your test setup is overly complicated and your class is doing too much.
That's why I currently dig functional programming so much. When you build pure functions without side effects, unit tests are easy to write. Yet you can apply pure functions to OOP as well (to a degree). Embrace immutability.
Sidenote:
It's really not helpful that a lot of developers don't understand the difference between unit, functional acceptance, integration testing. Then they wonder why they can't test something easily, write overly complex test cases, until someone points out to them: No, in the scope of unit tests, we don't need to test our persistance layer. We just assume that it works. We should only test our businsess logic. You know: "Assuming that I get that response from the database, I expect that to happen." You don't need a test db, make a real query against that, in order to test that. (That still is a valid thing to do. Yet not in the scope of unit tests.)rant developer unit test test testing fp oop writing tests get your shit together unit testing unit tests8 -
Well... I had in over 15 years of programming a lot of PHP / HTML projects where I asked myself: What psychopath could have written this?
(PHP haters: Just go trolling somewhere else...)
In my current project I've "inherited" a project which was running around ~ 15 years. Code Base looked solid to me... (Article system for ERP, huge company / branches system, lot of other modules for internal use... All in all: Not small.)
The original goal was to port to PHP 7 and to give it a fresh layout. Seemed doable...
The first days passed by - porting to an asset system, cleaning up the base system (login / logout / session & cookies... you know the drill).
And that was where it all went haywire.
I really have no clue how someone could have been so ignorant to not even think twice before setting cookies or doing other "header related" stuff without at least checking the result codes...
Basically the authentication / permission system was fully fucked up. It relied on redirecting the user via header modification to the login page with an error set in a GET variable...
Uh boy. That ain't funny.
Ported to session flash messages, checked if headers were sent, hard exit otherwise - redirect.
But then I got to the first layers of the whole "OOP class" related shit...
It's basically "whack a mole".
Whoever wrote this, was as dumb and as ignorant to build up a daisy chain of commands for fixing corner cases of corner cases of the regular command... If you don't understand what I mean, take the following example:
Permissions are based on group (accumulation of single permissions) and single permissions - to get all permissions from a user, you need to fetch both and build a unique array.
Well... The "names" for permissions are not unique. I'd never expected to be someone to be so stupid. Yes. You could have two permissions name "article_search" - while relying on uniqueness.
All in all all permissions are fetched once for lifetime of script and stored to a cache...
To fix this corner case… There is another function that fetches the results from the cache and returns simply "one" of the rights (getting permission array).
In case you need to get the ID of the other (yes... two identifiers used in the project for permissions - name and ID (auto increment key))...
Let's write another function on top of the function on top of the function.
My brain is seriously in deep fried mode.
Untangling this mess is basically like getting pumped up with pain killers and trying to solve logic riddles - it just doesn't work....
So... From redesigning and porting from PHP 7 I'm basically rewriting the whole base system to MVC, porting and touching every script, untangling this dumb shit of "functions" / "OOP" [or whatever you call this garbage] and then hoping everything works...
A huge thanks to AURA. http://auraphp.com/
It's incredibily useful in this case, as it has no dependencies and makes it very easy to get a solid ground without writing a whole framework by myself.
Amen.2 -
So... remember my first rants about my network at my last ship?
https://devrant.com/rants/2076759/...
https://devrant.com/rants/2076890/...
https://devrant.com/rants/2077084/...
Well... I had to visit them for an unrelated matter and found out that they are to pass general inspection the next week. Among the inspectors is a member of the cyber defence team. I took a quick look at the network, finding the things I'd expect:
- No updates passed to the server or installed since I left
- No antivirus updates since I left
- All certificates were expired
- Most services were shut down or unused
- All security policies were shut down
- Passwords (without expiration now) were written on post-it and stuck on screens
- ... and more!
I told the XO (the same idiot that complained about them CONSTANTLY) and he just shrugged me off and told me to """fix""" it. In one fucking afternoon.
I. SHIT. YOU. NOT.
The new admin there is a low ranking person who hasn't the faintest idea of how this works, and isn't willing to learn, either. They just dumped the duty on him, and he seems not to care. The cyber security inspector is going to have a field day. Or get grey hairs.
I told the XO that I needed at least a week to get them into working order (I have to re-set up my virtual Windows 2012 R2 server, download 2 years' worth of updates, repair 2 years of neglect etc.). The answer was what I expected:
"You know computers, you can do your magic and get it done in an afternoon."
Thank god I got transferred and don't have to answer to that idiot any more. Now, popcorn time, as I watch the fireworks.
Yes, I am a vengeful guy. I have told them, twice now, of what would happen. They didn't listen. At least now, with an official report on their heads, they just might.3 -
My first job was actually nontechnical - I was 18 years old and sold premium office furniture for a small store in Munich.
I did code in my free time though (PHP/JS mostly, had a litte browsergame back then - those were the days), so when my boss approached me and asked me whether I liked to take over a coding project, I agreed to the idea.
Little did I know at the time: I was supposed to work with a web agency the boss had contracted to build their online shop. Only that he had no plan or anything, he basically told them "build me an online shop like abc(a major competitor of ours at the time)"
He employed another sales lady who was supposed to manage the shop (that didn't exist yet). In the end, I think 80% of her job was to keep me from killing my boss.
As you can imagine, with this huuuuge amout of planning and these exact visions of what was supposed to be, things went south fast and far. So far that I could visit my fellow flightless birds down in the Penguin's republic of Antarctica and still need to go further.
Well... When my boss started suing the web agency, I was... ahem, asked to take over. Dumb as I was, I did - I was a PHP kid and thought that Magento, being written in PHP, would be easy to master. If you know Magento, you know that was maybe the wrongest thing I ever said.
Fast forward 3 very exhausting months, the thing was online. Not all of it worked yet, but it was online and fairly secure.
I did next to everything myself, administrating the CentOS box the shop was running on, its (own) e-mail server, the web server, all the coding required for the shop (can you spell 12 hour day for 8 hour pay?)
3 further months later, my life basically was a wreck, I dragged myself to work, the only thing I looked forward being the motorcycle ride home. The system worked though.
Mind you, I was still, at the time, working with three major customers, doing deskside support and some admin (Win Server 2008R2 at the time) - because, to quote my boss, "We could not afford a full time developer and we don't need one".
I think i stopped coding in my free time, the one hobby I used to love more than anything on the world, somewhere Decemerish 2012. I dropped out of the open source projects I was in, quit working on my browser game and let everything slide.
I didn't even care to renew the domains and servers for it, I just let it die without notice.
The little free time I had, I spent playing video games and getting drunk/high.
December 2013, 1.5 years on the job, I reached my breaking point and just left, called in sick at least a week per month because I just could not see this fucking place anymore.
I looked for another job outside of ALL of what I did before. No more Magento, no more sales, no more PHP. I didn't have to look for long, despite what I thought of my skills.
In February 2014, I told my boss that I quit. It was still seven months until my new job started, but I wanted him to know early so we could migrate and find a replacement.
The search for said replacement started in June 2014. I had considerably less work in the months before, looks like he got the hint.
In August 2014, my replacement arrived and I got him started.
I found a job, which I am still in, and still happy about after almost half a decade, at a local, medium sized ISP as a software dev and IT security guy. Got a proper training with a certificate and everything now.
My replacement lasted two months, he was external and never really did his job - the site, which until I had quit, had a total of 3 days downtime for 3 YEARS (they were the hoster's fault, not mine), was down for an entire month and he could not even tell why.
HIS followup was kicked after taking two weeks to familiarize himself with the project. Well, I think that two weeks is not even barely enough to familiarize yourself with nearly three years of work, but my boss gave him two days.
In 2016, the shop was replaced with another one. Different shop system, different OS, different CI. I don't know why and I can't say I give a damn.
Almost all the people that worked at the company back with me have left for greener pastures, taking their customers (and revenue) with them.
As for my boss' comments, instructions and lines: THAT might not be safe for work. Or kids. Or humans in general. And there wouldn't be much left if you put it through a language filter...
Moral of the story: No, it's not a bad thing to leave a place if you're mistreated there. Don't mistake loyalty with stupidity!
And, to quote one of my favourite Bands: "Nothing matters when the pain is all but gone" (Tragedy + Time by Rise Against).8 -
Step 1: Run to the store to buy a USB card reader because all of a sudden you have a need to use a 16Mb CF card that was tossed in a junk drawer for 20 years (hoping it still works, of course), but that was the easy part...
Step 2: Realize that the apps - your own - you want to run on your new (old) Casio E-125 PocketPC (to re-live "glory" days) are compiled in ARM format, not MIPS, which is the CPU this device uses, and the installer packages you have FOR YOUR OWN APPS don't include MIPS, only ARM (WHY DID I DO THAT?!), so, the saga REALLY begins...
Step 3: Get a 20-year old OS to install in a Hyper-V VM... find out that basic things like networking don't work by default because the OS is so damn old, so spend hours solving that and other issues to get it to basically run well enough to...
Step 4: Get that OS updated so that it's at least kind/sorta/maybe (but between you and me, not really!) safe online, all without a browser that will work on ANY modern site (oh, and good luck finding a version of Firefox that runs on it - that all took a few hours)...
Step 5: Okay, OS is ready to go, now get 20-year old dev tools that you haven't even seen in that many years working. Oh, do this with a missing CD key and ISO's that weren't archived in a format that's usable today, plus a bunch of missing dependencies because the OS is, again, SO old (a few MORE hours)...
Step 6: Get 20-year old code written in a language you haven't used in probably almost that long to compile, dealing with pathing issues, missing libs, and several other issues, all the while trying to dust off long-dormant knowledge somewhere in the deep, dark recesses of your brain... surprisingly, it all came back to me, more or less, in under an hour, which lead to...
Step 7: FINALLY get it all to work, FINALLY get the code to compile, FINALLY get it transferred to the device (which has no network capabilities, by the way, which is where the card reader and CF card came into play) and re-live the glory of your old, crappy PocketPC apps and games running on the real thing! WOO-HOO!
Step 8: Realize it's 3:30am by the time that's all done and be VERY thankful that you're on vacation this week or work tomorrow would SSUUCCKK!!!!
Step 9. Get called into work the next day for a production issue despite being tired from the night before and an afternoon of errands, lose basically a whole day of vacation (7 hours spent on it) and not actually resolve it by after midnight when you finally say that's enough :(
Talk about your highs and your lows.6 -
Red flags in your first week of your software engineering job 🚩
You do the first few days not speaking to anyone.
You can't get into the building and no one turns up until mid day.
The receptionist thinks you're too well dressed to work in this building, thinks you're a spy and calls security on you.
You are eating alone during lunch time in the cafeteria
You have bring your own material for making coffee for yourself
When you try to read the onboarding docs and there aren't any.
You have to write the onboarding docs.
You don't have team mates.
When you ask another team how things are going and they just laugh and cry.😂😭
There's no computer for you, and not even an "it's delayed" excuse. They weren't expecting you.
Your are given a TI PC, because "that's all we have", even though there's no software for it, and it's not quite IBM compatible.
You don't have local admin rights on your computer.💀
You have to buy a laptop yourself to be able to do your job.
It's the end of the week and you still don't have your environment set up and running.
You look at the codebase and there are no automated tests.
You have to request access every time you need to install something through a company tool that looks like it was made in 2001.
Various tasks can only be performed by one single person and they are either out sick or on vacation.
You have to keep track of your time in 6 minute increments, assigned to projects you don't know, by project numbers everyone has memorised (and therefore aren't written down).
You have to fill in timesheets and it takes you 30 minutes each day to fill them in because the system is so clunky.🤮
Your first email is a phishing test from the IT department in another country and timezone, but it has useful information in it, like how to login to the VPN.
Your second email is not a phishing test, but has similar information as the first one. (You ignore it.)
Your name is spelled wrong in every system, in a different way. 2 departments decide that it's too much trouble, and they never fix the spelling as long as you work there. One of them fixes it after you leave, and annoys you for a month because you haven't filled out the customer survey.6 -
Well, for starters there was a cron to restart the webserver every morning.
The product was 10+ years old and written in PHP 5.3 at the time.
Another cron was running every 15 minutes, to "correct" data in the DB. Just regular data, not from an import or something.
Gotta have one of those self-healing systems I guess.
Yet another cron (there where lots) did run everyday from 02:00 to 4ish to generate the newest xlsx report. Almost took out the entire thing every time. MySQL 100%. CPU? Yes. RAM? You bet.
Lucky I wasn't too much involved at the time. But man, that thing was the definition of legacy.
Fun fact: every request was performed twice! First request gave the already logged-in client an unique access-token. Second request then processed the request with the (just issued) access-token; which was then discarded. Security I guess.
I don't know why it was build this way. It just was. I didn't ask. I didn't wanted to know. Some things are better left undisturbed. Just don't anger the machine. I became superstitious for a while. I think, in the end, it help a bit: It feels like communicating with an alien monster but all you have is a trumpet and chewing gum. Gentle does it.
Oh and "Sencha Extjs 3" almost gave me PTSD lol (it's an ancient JS framework). Followed by SOAPs WSDL cache. And a million other things.5 -
Worst collaboration experience story?
I was not directly involved, it was a Delphi -> C# conversion of our customer returns application.
The dev manager was out to prove waterfall was the only development methodology that could make convert the monolith app to a lean, multi-tier, enterprise-worthy application.
Starting out with a team of 7 (3 devs, 2 dbas, team mgr, and the dev department mgr), they spent around 3 months designing, meetings, and more meetings. Armed with 50+ page specification Word document (not counting the countless Visio workflow diagrams and Microsoft Project timeline/ghantt charts), the team was ready to start coding.
The database design, workflow, and UI design (using Visio), was well done/thought out, but problems started on day one.
- Team mgr and Dev mgr split up the 3 devs, 1 dev wrote the database access library tier, 1 wrote the service tier, the other dev wrote the UI (I'll add this was the dev's first experience with WPF).
- Per the specification, all the layers wouldn't be integrated until all of them met the standards (unit tested, free from errors from VS's code analyzer, etc)
- By the time the devs where ready to code, the DBAs were already tasked with other projects, so the Returns app was prioritized to "when we get around to it"
Fast forward 6 months later, all the devs were 'done' coding, having very little/no communication with one another, then the integration. The service and database layers assumed different design patterns and different database relationships and the UI layer required functionality neither layers anticipated (ex. multi-users and the service maintaining some sort of state between them).
Those issues took about a month to work out, then the app began beta testing with real end users. App didn't make it 10 minutes before users gave up. Numerous UI logic errors, runtime errors, and overall app stability. Because the UI was so bad, the dev mgr brought in one of the web developers (she was pretty good at UI design). You might guess how useful someone is being dropped in on complex project , months after-the-fact and being told "Fix it!".
Couple of months of UI re-design and many other changes, the app was ready for beta testing.
In the mean time, the company hired a new customer service manager. When he saw the application, he rejected the app because he re-designed the entire returns process to be more efficient. The application UI was written to the exact step-by-step old returns process with little/no deviation.
With a tremendous amount of push-back (TL;DR), the dev mgr promised to change the app, but only after it was deployed into production (using "we can fix it later" excuse).
Still plagued with numerous bugs, the app was finally deployed. In attempts to save face, there was a company-wide party to celebrate the 'death' of the "old Delphi returns app" and the birth of the new. Cake, drinks, certificates of achievements for the devs, etc.
By the end of the project, the devs hated each other. Finger pointing, petty squabbles, out-right "FU!"s across the cube walls, etc. All the team members were re-assigned to other teams to separate them, leaving a single new hire to fix all the issues.5 -
I fucking hate chained methods. Ok, not all of them. Query things like array.where.first... that stuff is ok.
Specially if it's part of the std lib of a lang, which would be probably written by a very competent coder and under scrutiny.
But if you're not that person, chances are you'll produce VASTLY inferior code.
I'm talking about things like:
expect(n).to.be(x).and.not(y)
And the reason I don't like it is because it's all fine and dandy at first.
But once you get to the corner cases, jesus christ, prepare to read some docpages.
You end up reading their entire fucking docs (which are suboptimal sometimes) trying to figure if this fucking dsl can do what you need.
Then you give up and ask in a github issue. And the dev first condescends you and then tells you that the beautiful eden of code he created doesn't let you do what you want.
The corner cases usually involve nesting or some very specific condition, albeit reasonable.
This kind of design is usually present in testing or validation js libraries. And I hate all of those for it.
If you want a modern js testing lib that doesn't suck ass, check avajs. It's as simple as testing should be.
No magic globals, no chaining, zero config. Fuck globals forced by libs.
But my favorite thing about it that is I can put a breakpoint wherever the fuck I want and the debugger stops right fucking there.
Code is basically lines of statements, that's it, and by overusing chaining, by encouraging the grouping of dozens of statements into one, you are preventing me from controlling these statements on MY code.
As an end dev, I only expect complexity increases to come from the problems themselves rather than from needlessly "beautified" apis.
When people create their own shitty dsl, an image comes to my mind of an incoherent rambling man that likes poetry a lot and creates his own martial art, which looks pretty but will get your ass kicked against the most basic styles of fighting.
I fucking hate esoteric code.
Even if I had to execute a list of functions, I'd rather send them in an array instead of being able to chain them because:
a) tree shaking would spare from all the functions i didn't import
b) that's what fucking arrays are for, to contain several things.
This bad style of coding is a result of how low the barrier to code in higher level langs are.
As a language or library gets easier to use you might think that's a positive thing. But at the same time it breeds laziness.
Js has such a low learning curve that it attacts the wrong kind of devs, the lazy, the uninspired, the medium.com reader, the "i just care about my paycheck" ones.
Someone might think that by bashing bad js devs I'm trying to elevate myself.
That'd be extremely stupid. That's like beating a retarded blind man in a game and then saying "look, I'm way better than this retarded blind man".
I'm not on a risky point of view, just take a stroll down npmjs.com. That place is a landfill. Not really npm's fault, in fact their search algorithm is good.
It's just the community.
Every lang has a ratio of competence. Of competent to incompetent devs.
You have the lang devs and most intelligent lib devs at the top. At the bottom you have the bottom.
Well js has a horrible ratio. I wouldn't be shocked to find out that most js devs still consider using import or await the future.
You could say that js improved a lot, that it was way worse beforr. But I hate chaining now, and i hated back then!
On top of this, you have these blog web companies, sucking the "js tutorial" business tit dry, pumping out the most obscenely unprofessional and bar lowering tutorials you can imagine, further capping the average intelligence of most js devs.
And abusing SEO while they're at it, littering the entire web with copy paste content.2 -
I spent over a decade of my life working with Ada. I've spent almost the same amount of time working with C# and VisualBasic. And I've spent almost six years now with F#. I consider all of these great languages for various reasons, each with their respective problems. As these are mostly mature languages some of the problems were only knowable in hindsight. But Ada was always sort of my baby. I don't really mind extra typing, as at least what I do, reading happens much more than writing, and tab completion has most things only being 3-4 key presses irl. But I'm no zealot, and have been fully aware of deficiencies in the language, just like any language would have. I've had similar feelings of all languages I've worked with, and the .NET/C#/VB/F# guys are excellent with taking suggestions and feedback.
This is not the case with Ada, and this will be my story, since I've no longer decided anonymity is necessary.
First few years learning the language I did what anyone does: you write shit that already exists just to learn. Kept refining it over time, sometimes needing to do entire rewrites. Eventually a few of these wound up being good. Not novel, just good stuff that already existed. Outperforming the leading Ada company in benchmarks kind of good. At the time I was really gung-ho about the language. Would have loved to make Ada development a career. Eventually build up enough of this, as well as a working, but very bad performing compiler, and decide to try to apply for a job at this company. I wasn't worried about the quality of the compiler, as anyone who's seriously worked with Ada knows, the language is remarkably complex with some bizarre rules in dark corners, so a compiler which passes the standards test indicates a very intimate knowledge of the language few can attest to.
I get told they didn't think I would be a good fit for the job, and that they didn't think I should be doing development.
A few months of rapid cycling between hatred and self loathing passes, and then a suicide attempt. I've got past problems which contributed more so than the actual job denial.
So I get better and start working even harder on my shit. Get the performance of my stuff up even better. Don't bother even trying to fix up the compiler, and start researching about text parsing. Do tons of small programs to test things, and wind up learning a lot. I'm starting to notice a lot of languages really surpassing Ada in _quality of life_, with things package managers and repositories for those, as well as social media presence and exhaustive tutorials from the community.
At the time I didn't really get programming language specific package managers (I do now), but I still brought this up to the community. Don't do that. They don't like new ideas. Odd for a language which at the time was so innovative. But social media presence did eventually happen with a Twitter account that is most definitely run by a specific Ada company masquerading as a general Ada advocate. It did occasionally draw interest to neat things from the community, so that's cool.
Since I've been using both VisualStudio and an IDE this Ada company provides, I saw a very jarring quality difference over the years. I'm not gonna say VS is perfect, it's not. But this piece of shit made VS look like a polished streamlined bug free race car designed by expert UX people. It. Was. Bad. Very little features, with little added over the years. Fast forwarding several years, I can find about ten bugs in five minutes each update, and I can't find bugs in the video games I play, so I'm no bug finder. It's just that bad. This from a company providing software for "highly reliable systems"...
So I decide to take a crack at writing an editor extension for VS Code, which I had never even used. It actually went well, and as of this writing it has over 24k downloads, and I've received some great comments from some people over on Twitter about how detailed the highlighting is. Plenty of bespoke advertising the entire time in development, of course.
Never a single word from the community about me.
Around this time I had also started a YouTube channel to provide educational content about the language, since there's very little, except large textbooks which aren't right for everyone. Now keep in mind I had written a compiler which at least was passing the language standards test, so I definitely know the language very well. This is a standard the programmers at these companies will admit very few people understand. YouTube channel met with hate from the community, and overwhelming thanks from newcomers. Never a shout out from the "community" Twitter account. The hate went as far as things like how nothing I say should be listened to because I'm a degenerate Irishman, to things like how the world would have been a better place if I was successful in killing myself (I don't talk much about my mental illness, but it shows up).
I'm strictly a .NET developer now. All code ported.5 -
TLDR: crappy api + idiot ex client combo rant // devam si duška
I saw a lot of people bitching about APIs that don't return proper response codes and other stuff..
Well let me tell you a story. I used to work on a project where we had to do something like booking, but better..crossbreed with the Off&Away bidding site (which btw we had to rip off the .js stuff and reverse engineer the whole timer thingy), using free versions of everything..even though money wasn't an issue (what our client said). Same client decided to go with transhotel because it was sooooo gooood... OK? Why did noone heard of them then?
Anyhow, the api was xml based.. we had to send some xml that was validated against a schema, we received another that was supposed to be validated againts another schema.. and so on and so on..
...
...
supposed..
The API docs were nonexistent.. What was there, was broken English or Spanish.. Even had some comments like Add This & that to chapter xy.. Of course that chapter didn't even exist yet. :( And the last documentation they had, was really really old..more than a year, with visible gaps, we got the validation schemas not even listed in the docs, let alone described properly.
Yaaay! And that was not everything.. besides wrong and missing data, the API itself caused the 500 server error whenever you were no longer authenticated.
Of course it didn't tell you that your session was dead.. Just pooof! Unhandled crap everywhere!
And the best part?! We handled that login after inspecting what the hell happened, but sent the notification to the company anyways.. We had a conf call, and sent numerous emails explaining to them what a 'try catch' is and how they should handle the not authenticated error <= BTW they should have had a handled xml response for that, we got the schema for it! But they didn't. Anyhow, after two agonizing days talking back and forth they at least set up the server to be available again after the horrified 500 error. Before, it even stopped responding until reset (don't ask me how they managed to do that).
Oh yeah, did I mention this was a worldwide renown company?! Where everybody spoke/wrote English?! Yup, they have more than 700 people there, of course they speak English! <= another one of my ex clients fabulous statements... making me wanna strangle him with his tie.. I told him I am not talking to them because no-one there understood/spoke English and it would be a waste of my time.. Guess who spent almost 3 hours to talk to someone who sounded like a stereotypical Indian support tech guy with a flue speaking Italian?! // no offence please for the referenced parties!!
So yeah, sadly I don't have SS of the fucked up documentation..and I cannot post more details (not sure if the NDA still holds even though they canceled the project).. Not that I care really.. not after I saw how the client would treat his customers..
Anywayz I found on the interwebz some proof that this shitty api existed..
picture + link: https://programmableweb.com/api/...
SubRant: the client was an idiot! Probably still is, but no longer my client..
Wanted to store the credit card info + cvc and owner info etc.. in our database.. for easier second payment, like on paypal (which he wanted me to totally customize the payment page of paypal, and if that wasn't possible to collect user data on our personalized payment page and then just send it over to paypal api, if possible in plaintext, he just didn't care as long as he got his personalized payment page) or sth.... I told the company owner that they are fucking retards if they think they can pull this off & that they will lose all their (potential) clients if they figure that out.. or god forbid someone hacked us and stole the data.. I think this shit is also against the law..
I think it goes without saying what happened next.. called him ignorant stupid fucktard to his face and told him I ain't doing that since our company didn't even had a certificate to store the last 4 numbers.. They heard my voice over the whole firm.. we had fish-tank like offices, so they could all see me yelling at the director..
Guess who got laid off due to not being needed anymore the next day?! It was the best day of my life..so far!! Never have I been happier to lose my job!!
P.S. all that crap + test + the whole backand for analysis, the whole crm + campaign emails etc.. the client wanted done in 6 months.. O.o
P.P.S. almost shat my pants when devRant notified my I cannot post and wanted to copy the message and then everything disappeard.. thank god I have written this in the n++ xDundefined venting big time issues no documentation idiot xml security api privacy ashole crappy client rant11 -
Flash has made Java programs look desirable. And anyone keeping up with me knows I despise Java and C#, despite having written C# and currently working on deciphering a Java server to create documentation.
Before I begin, I want to make this clear: IT IS TWO THOUSAND AND FUCKING EIGHTEEN. 2018. WE HAVE BETTER TECH. JAVASCRIPT HAS TAKEN OVER THIS BITCH. So, firstly, FUCK FLASH. Seriously, that shit's a security liability. If you work for a company that uses it, find a new job and then fucking quit, or go mutany and get several devs to begin a JS-based implementation that has the same functionality. There is no excuse. "I'm fired?" That's not an excuse - if there is a way to stop the madness, then fucking hit the brakes on that shit or begin job hunting. Oh, and all you PMs who are reading this and have mandated or helped someone else to mandate work on an enterprise flash program, FUCK YOU. You are part of the problem.
The reason for this outburst seems unreasonable until you realize the hell I went through today. At my University, there is a basic entry-level psychology course I'm taking. Pearson, a company I already fucking hate for some of the ethically sketchy shit they pulled with PARCC as well as overreach in publishing to the point they produce state tests here in the US - has a product called "My PsychLab" and from here on out, I'm referring to it as MPL. MPL has an issue - it is entirely fucking Flash. Homework assignments, the textbook, FUCKING EVERYTHING. So, because of that, you need to waste time finding a browser that works. Now let me remind all of you that just because something SHOULD WORK does NOT mean that it actually does.
I'm sitting on my Antergos box a few days ago: Chromium and Firefox won't load Flash. I don't know why, and don't care to find out. NPAPI and whatnot are deprecated but should still run in a limited mode or some shit. No go on Antergos.
So, today I went to the lab in the desolated basement of an old building which is where it's usually empty except a student hired by the university to make sure nobody fucks things up. I decided - because y'all know I fuckin' hate this - to try Windows. No go in Chrome still - it loaded Flash but couldn't download the content. So I tried Firefox - which worked. My hopes were up, but not too long - because there was no way to input. The window had buttons and shit - but they were COMPLETELY UNRESPONSIVE.
So the homework is also Flash-based. It's all due by 1/31/18 - FOUR CHAPTERS AND THE ACCOMPANYING HOMEWORK - which I believe is Tuesday, and the University bookstore is closed both Saturday and Sunday. No way to get a physical copy of the book. And I have other classes - this isn't the only one.
Also, the copyright on the program was 2017 - so whoever modded or maintained that Flash code - FUCK YOU AND THE IRRESPONSIBLE SHIT YOUR TEAM PULLED. FUCK THE SUPERIORS MAKING DECISIONS AS WELL. Yeah, you guys have deadlines? So do the end users, and when you have to jump through hoops only to realize you're fucked? That's a failure of management and a failure of a product.
How many people are gonna hate me for this? Haters gonna hate, and I'm past the point of caring.7 -
Many people told me that all my face expressions look pretty the same. Whatever my mood (angry, happy, surprised) there is no much difference that appears in my face.
Well I didn't believe them until I tested a "Facial Emotion" program written on Python, and it gives me ~almost~ all the time that my facial expression is: Neutral.
Well, I think the algorithm is not well implemented 😐8 -
!rant
Just started working for a new company. Super cool. Just like the last one (as far as perks), except they actually trust their devs.
Old company: Make sure your code is extensible
Devs at old company: You know it's not written in stone right?
Old company: Does that mean you can make it do this?
Devs at old company: No. That's the wrong code base
New company: I need a feature. Get it done when you can
New company devs: Well, guess I'll take some time to refactor all this stuff while I'm at it
~Some time later~
New company: Thanks, that feature works great!
No staring over shoulders, asking when it will be done. No asking why we want to refactor something. As long as work continues to flow, there are no issues. It's great!
Also, if we want to try a new tech, we just have to put together a short paper explaining why it will work better in that situation than the tech that's already in place. -
TL;DR you suck, I suck and everybody sucks, deal with it....
------------------------------------
Let me let off some steam, since I've had enough of people hating on languages "just because"
Every language has it's drawbacks and quirks, BUT they have their strengths also. Saying "I hate {language}" is just you being and ignorant prick and probably your head is so far up your ass that you look like an ass hat. With that being said, every language is either good or bad depending on the developer writing in it. Let's give you an example:
If I ware to give you a brick and ask you to put a nail in a plank, can you do it? Yes, it will be easier if you do it with a hammer, but you have a brick, so hammer is out of the question. If you hit your thumb while doing it... well... sorry, but it is not the bricks fault - it is YOU!
JavaScript, yes it has a whole lot of problems, but it works, you can do a ton of stuff and does a good job at that, it is evolving through node and typescript (and others, just a personal pref), BUT if you used js when you ware debugging that jquery (1.0) plugin written in the free time of a 13 yo, who copy pasted a bunch from SO, well, it is not js' problem - deal with it. Same goes for PHP, i've been there where you had a single `index.php` with bazillion lines of code, did a bunch of eval and it was called MVC, but it also is evolving.. thing is all languages allow you to do some dumb stuff so YOU have to be responsible to not fuck it up (which you always DO btw, we all do). Difference is PHP/JS roll with it because the assumption is that you know what you are doing, which again - newsflash - you don't.
More or less I would blame that shit on businesses which decided to go with undergrads to save money instead of investing in their product, hell, I am in a major company that does not invest that doesn't care a whole lot about dev /tech stuff and now everybody's mother is an engineer - they care about money, because investors care about money (ROI) and because clean code does not pay the bills, but money does.
If we get all of the good practices and apply them to each language every one of them has it's place, that is why there is no "The Language", even if there was, we STILL ware going to fuck it up and probably it was going to be even worse than where we are now.
Study, improve, rinse and repeat... There are SENIORS and LEADS out there that are about 25-30 and have no fucking clue about the language, because they have stuck up their heads up the ass of frameworks and refuse to take a breath of clean air and consider something different than their dogmatic framework "way" of doing things.. That is the result you are seeing. Let me give you a fresh example to illustrate where I am at atm:
Le me works with ZendFramework 2.3-2.5 (why not, which is PHP5+ running on PHP7 [fancy, eh]), and little me writes a module for said project, and tries to contain it in its own space, i.e not touching anything outside of the folder of the module so it is SELF-CONTAINED (see, practices), during 2-3-4 iterations of code review, I've had to modify 4 different modules with `if (somthing === self::SOMETHING_TYPE)` as requested by my TL, which resulted in me not covering 3 use-cases after the changes and not adding a new event (the fw is event-driven, cuz.. reasons) so I have to use a bunch of ifs in the code, to check a config value and do shit. That is the way of I am asked to do things I hate what I've done and the fact that because of CR I have lost case-coverage, a week of work and the same TL will be on my ass on monday that things are now "perfect".
The biggest things is "we care about convention and code style"... right.... That is not because of the language, not because of me, not because of the framework - it is some dude's opinion that you hate, not the language.
New stuff are better, reinventing the wheel is also good, if it wasn't you would've had a few stone circular things on your car and things ware going to be like that - we need to try and try, that is the only way we actually learn shit.
Until things change in the trade, we will be on the same boat, complaining about the same shit over and over, you and me won't be alive probably but things will not change a bit.
We live in a place where state is considered good, god objects necessary (can you believe it, I've got kudos for using the term 'God Object'... yep, let that sink in). If you really hate something, please, oh god I beg you, show me how you will do it better and I will shake your hand and buy you a beer, but until then, please keep your ass-hurt fanboy opinion to your self, no one gives a shit about what you think, we will die and the world will not notice...6 -
Well on my last full-time job, that ware using cookies for authentication (not something new, eh?). The thing is, you see, the cookies had the 'accountId' which if you change to another number, kaboom you're that account, oh but that was not all, there was an option to mark the account type in there 'accountType', which was kind of obvious in VLE (virtual learning environment), 'Teacher', 'Student', 'Manager' put what of those values and boom you are that role for the session
Thing was open of SQL injection from the login form, from said cookies and form every part you can pass input to it, when I raised the question to my TL he said 'no one is going to know about thatt, I don't see what is the problem', then escalated to higher management 'oh well speak to *tl_guy*'
Oh and bonus points for it being written in ASP CLASSIC in 2014+ (I was supposed to rewrite, but ended up patching ASP code and writing components in PHP)
In 2015-2016, in a private college, charging kind-of big money per year1 -
i once ran into this:
// magic part starts here, do not touch
and this:
// i know, and i'm sorry
in legacy code. needless to say, i prefer undocumented, well-written code to all that followed1 -
So I built one of them Auto GPTs using Open Assistant and Python.
Essentially I have two chat rooms with each representing a different agent and some python written to facilitate the api communication and share messages between those two. Each agent is primed with a simple personality description, expected output format and a goal. I used almost identical inputs for both.
It boils down to "You are an expert AI system called Bot1 created to build a simple RPG videogame in python using pygame."
So anyway, I made that, and let it run for a couple of iterations and the results are just stunning, but not for the reasons you might expect. The short story is that they both turned into project managers discussing everything and anything *except* the actual game or game ideas and in the end they didn't produce a single line of code, but they did manage to make sure the project is agile and has enough documentation xD.
Presumably I need to tinker around with their personalities more and specify more well defined goals for this to lead to anything even remotely useful, but that's besides the point. I just thought others might find the actual conversation as funny as I did and wanted to share the output.
Here's a pastebin of the absolute madness they went through: https://pastebin.com/0Eq44k6D
PS: I don't expect anyone to read the whole thing word for word. Just scroll to a random point and check out the general conversation while keeping in mind that not a single line of code was developed throughout the entire thing8 -
Coming back here after years to rant about... myself.
TLDR: I fucked up and now have to call a thousand people as a dev, I'm not even getting paid for it and they all get crazy about a random ID that got assigned to them, so now I want to throw away all my electronics and become a skilift operator.
Stupid me deployed a project shortly before we have the largest amount of orders in the year. (Like 90% of yearly orders in a couple minutes cause they are sold out fast and people wait to order first)
I got this horrible legacy "plain self written framework php" project which I tried to upgrade state of the art.
There was one piece missing to upgrade everything and nicely deploy it to some fresh new servers which can handle the high load which peaks at the time orders open.
So I did it the day before orders open and... everything worked well! Nothing crashed.
I wrote my client to wait a little before he confirms the orders, since after confirmation each of the people who ordered will receive an email where they can choose a unique number which they'll receive as a sticker with the order.
Since it's an event my client is promoting, people will meet each other wearing those unique stickers and being able to identify each other online and in person with this number.
Suddenly my clients call me that "customers are complaining about that there is something wrong"
Turned out he confirmed all orders straight away and that part of the application which makes the number unique was broken on the update.
So everyone could chose any number (also taken ones) as his "unique" number.
In my panic, I told my client "It's my mistake, I'll deal with it of course and call the affected people in my free time, since it's my mistake you don't have to pay for it". (it's my largest client by far, am a freelancer)
Realizing when people can chose any number it'll not be a few ones who have the same, it's like almost everyone did chose "69", "1", "420", "88 (a scary amount of people)",... (with 69 being the number being chosen by most people btw, even more then "1")
So now I have to call about a thousand people telling them a new random ID will be assigned to them. I thought of course about mailing them, wrote a script that deals with the issue automatically, and FUCKED IT UP TOO so everyone is confused and the only way to deal with it is by a call basically.
And while I'm sitting here now for 2 days straight calling people in my free time about their random ID will have to change, I realized that some people are quite crazy about random ID's.
I'm talking about yelling and threatening because "is it too much to ask for a working website when ordering this expensive product".
I hate my life right now and am getting quite serious about throwing all my electronic devices away and become a skilift operator instead. Fuck the higher pay, it's not worth the shit, I wanna have only responsibility about one button to press while watching people fall on their face.5 -
Chrome, Firefox, and yes even you Opera, Falkon, Midori and Luakit. We need to talk, and all readers should grab a seat and prepare for some reality checks when their favorite web browsers are in this list.
I've tried literally all of them, in search for a lightweight (read: not ridiculously bloated) web browser. None of them fit the bill.
Yes Midori, you get a couple of bonus points for being the most lightweight. Luakit however.. as much as I like vim in my terminal, I do not want it in a graphical application. Not to mention that just like all the others you just use webkit2gtk, and therefore are just as bloated as all the others. Lightweight my ass! But programmable with Lua, woo! Not like Selenium, Chrome headless, ... does that for any browser. And that's it for the unique features as far as I'm concerned. One is slow, single-threaded and lightweight-ish (Midori) and another has vim keybindings in an application that shouldn't (Luakit).
Pretty much all of them use webkit2gtk as their engine, and pretty much all of them launch a separate process for each tab. People say this is more secure, but I have serious doubts about that. You're still running all these processes as the same user, and they all have full access to the X server they run under (this is also a criticism against user separation on a single X session in general). The only thing it protects against is a website crashing the browser, where only that tab and its process would go down. Which.. you know.. should a webpage even be able to do that?
But what annoys me the most is the sheer amount of memory that all of these take. With all due respect all of you browsers, I am not quite prepared to give 8 fucking gigabytes - half the memory in this whole box! - just for a dozen or so tabs. I shouldn't have to move my web browser to another lesser used 16GB box, just to prevent this one from going into fucking swap from a dozen tabs. And before someone has a go at the add-ons, there's 4 installed and that's it. None of them are even close to this complete and utter memory clusterfuck. It's the process separation. Each process consumes half a GB of memory, and there's around a dozen of them in a usual browsing session. THAT is the real problem. And I want to get rid of it.
Browsers are at their pinnacle of fucked up in my opinion, literally to the point where I'm seriously considering elinks. Being a sysadmin, I already live my daily life in terminals anyway. As such I also do have resources. But because of that I also associate every process with its cost to run it, in terms of resources required. Web browsers are easily at the top of the list.
I want to put 8GB into perspective. You can store nearly 2 entire DVD movies in that memory. However media players used to play them (such as SMPlayer) obviously don't do that. They use 60-80MB on average to play the whole movie. They also require far less processing power than YouTube in a web browser does, even when you download that exact same video with youtube-dl (either streamed within the media player or externally). That is what an application should be.
Let's talk a bit about these "complicated" websites as well. I hate to break it to you framework web devs, but you're a dime a dozen. The competition is high between web devs for that exact reason. And websites are not complicated. The document itself is plain old HTML, yes even if your framework converts to it in the background. That's the skeleton of your document, where I would draw a parallel with documents in office suites that are more or less written in XML. CSS.. oh yes, markup. Embolden that shit, yes please! And JavaScript.. oh yes, that pile of shit that's been designed in half a day, and has a framework called fucking isEven (which does exactly what it says on the tin, modulo 2 be damned). Fancy some macros in your text editor? Yes, same shit, different pile.
Imagine your text editor being as bloated as a web browser. Imagine it being prone to crashing tabs like a web browser. Imagine it being so ridiculously slow to get anything done in your productivity suite. But it's just the usual with web browsers, isn't it? Maybe Gopher wasn't such a bad idea after all... Oh and give me another update where I have to restart the browser when I commit the heinous act of opening another tab, just because you had to update your fucking CA certs again. Yes please!19 -
So, I wanted to find a new way to arrange my language's alphabet. Atm, I'm loosely using latin's system even though my system is weird;
A B K D E F G H I IE SH L M N O P R S T U V
So, I remember that another language (I think Japanese) uses a poem with every letter to figure the order of their letters, so I decided to do the same.
Only problem is: My current word list is very limited, some of the letters I needed only existed in specific words (aka, the word for "Dark") so I ended up making a very depressing poem.
Enjoy! Or not.. I'm not going to tell you what to do.
English translation below. I also will post images of it written in my language's script, as well as one line in my language's cursive script (I'm not doing the whole thing in cursive because fuck that)
Senarseha:
Seh ninfuat seh nem fieta; Seka sato nem fiekm juna jenes sermin.
Seh ninfuat sif nemsin netua niet; Seka sem sedma nemat sargo no
nrokniet sam fiekmin sehim sepra.
Sehim sinta nem nara niv nakliet.
Seh nem sine fieta.
English:
I say I am well; But all is dark before day begins.
I say it isn't too much; But this place is a farm of
preasure that blackens my soul.
My mind is ever in agony.
I am not well.6 -
A people person is only a people person to another people person. I fucking hate them. Most sales people I see don’t really have any skills per say. They think they do by claiming to be a people person. The entire sales community is like this. Fake as shit. They pay thousands to learn something that has been written in Medium or you could just Youtube. I think I can pretty much get the fact if you wanna make a video do well, you need a good title. They speak everything on the surface. And they claim to a be a layperson. Well, no. Fuck you. I not giving you an average. You are stupid as shit. They can’t write a proper fucking email. I have to go through kubernates and monads and they still make more money than devs via commission. They are too sober and fucking pretentious too. Fuck em fuck em fuck em.3
-
This was some time ago. A Legendary bug appeared. It worked in the dev environment, but not in the test and production environment.
It had been a week since I was working on the issue. I couldn't pinpoint the problem. We CANNOT change the code that was already there, so we needed to override the code that was written. As I was going at it, something happened.
---
Manager: "Hey, it's working now. What did you do?"
Me: *Very confused because I know I was nowhere close to finding the real source of the problem* Oh, it is? Let me check.
Also me: *Goes and check on the test and prod environment and indeed, it's already working*
Also me to the power of three: *Contemplates on life, the meaning of it, of why I am here, who's going to throw out the trash later, asking myself whether my buddies and I will be drinking tonight, only to realize that I am still on the phone with my manager*
Me again: "Oh wow, it's working."
Manager: "Great job. What were the changes in the code?"
Me: "All I did was put console logs and pushed the changes to test and prod if they were producing the same log results."
Manager: "So there were no changes whatsoever, is that what you mean?"
Me: "Yep. I've no idea why it just suddenly worked."
Manager: "Well, as long as it's working! Just remove those logs and deploy them again to the test and prod environment and add 'Test and prod fix' to the commit comment."
Me: "But what if the problem comes up again? I mean technically we haven't resolved the issue. The only change I made were like 20 lines of console logs! "
Manager: "It's working, isn't it? If it becomes a problem, we'll work it out later."
---
I did as I was told, and Lo and Behold, the problem never occurred again.
Was the system playing a joke on me? The system probably felt sorry for me and thought, "Look at this poor fucker, having such a hard time on a problem he can't even comprehend. That idiotic programmer had so many sleepless nights and yet still couldn't find the solution. Guess I gotta do my job and fix it for him. I'm the only one doing the work around here. Pathetic Homo sapiens!"
Don't get me wrong, I'm glad that it's over but..
What the fuck happened?5 -
"You always know when you have a good tester, because you're always a little annoyed when that person comes around your desk/cube. The reason for this is that you know that if the tester is in your general vicinity, they've found something wrong with what you've written. All the excuses start to pile up in your mind of 'Well, you're not using it right!', etc, but in the end, you know that the tester is right, and you've just made a mistake in your programming."
-https://stackoverflow.com/a/5256734 -
If you didn't think NodeJS dependency hell was that bad, you should try sequentially parsing a graph that's stored as an array of nodes and their references, where processing of said nodes forces you to use some async functions that depend on other async functions.
What should have been 20 lines of code written in 30 minutes has turned into 3 hours of horror, reading about babel, realizing that it's just adding more problems without solving one, assessing the effort of modification of async libraries to include sync methods as well, trying out asyncwait, async, and everything else there is, trying to rethink the recursive algorithm, rewriting it several times, cursing and hating myself for not choosing to use Python or .NET Core, screaming senselessly at my wife in a language as familiar to her as Klingon, crying in the bathroom, re-assessing my life choices, thinking whether it was a mistake to dedicate 10 years to this career, maybe I'm just not cut out for it since I can't handle this simple task, watching noose tying tutorials on youtube, thinking about my naked empty RPI that won't connect to the server any time soon.
Seriously. Why is it SO BAD?! Or is it just me?5 -
Who am I?
Some of you, because of the hyperbolic, outrageous, trollish, and often self-satirical nature of my posts, might doubt me. Thats completely relatable.
Heres the truth:
I was diagnosed in childhood with ADHD, fucking everyone, every male, these days is diagnosed with that. I was diagnosed bipolar. Hell anyone reading my posts could see that from a mile away. I was diagnosed on the borderline personality spectrum. Yeah, I could see that.
I was tested. They said I was in the 98th percentile for clerical ability, not extraordinary but pretty good, mathematical ability a little higher than that. My SAT was 1491. Not yale material, but I coulda been someone.
Over the years I studied a LOT of politics and read a metric fuckton of books. (40+ books over the course of three years).
I predicted every single presidential election since bush juniors second election. Three supreme court picks. Senatorial elections. Congresional elections. More than that.
I have a better analysis track record than some of the multidecade analysts sitting in the fucking NSA.
No I am not shitting you. No I am not exaggerating.
It's about the only claim to fame I get to legitimately make.
People ask me, "then why aren't you famous?"
How do you know I'm not.
Look I'm gonna tell you my actual name.
My real name is Lawrence B. Lindsey
Okay, I'm bullshitting for fun. But words I have written on alt twitter accounts have legitimately come out of presidential hopeful's mouths. No, this I am *not* bullshitting you about.
Imagine that. A guy who lived in his parents attic for five years, writing words that came out of presidential candidates mouths.
At one time I was about as popular and influential as that fuckboy catturd.
yes, really. No I am not fucking joking.
Under normal conditions I wouldn't talk about this or reveal it, because who the fuck cares? I'm just some dude on the internet, drunk, both on alcohol, and the pseudo-anonymous equivalent of bragging rights.
You know how many women I turned down because I could? You know how fucking drunk I am? They say a drunk man's words are a sober man's thoughts. Well, I'm not usually honest like this because the internet is full of false braggarts, and you tell people the truth and they don't fucking believe you.
I swear, it seems like I made some faustian bargain at some time, and can achieve no fame or lasting wealth in my life--to save my life.
Shit, I was talking to a chinese women who ran a bank in china (yes, really), who advised me to buy into bitcoin early on. Didn't have the money to. Woulda been a fucking millionaire if I did.
*Non-obvious* Ideas that major corporations are now persuing? Yeah those were sitting in my card index since the early 2000s.
I helped two people build and sell businesses. One for me tens of thousands. Another for millions. Yes, really. Got zero, and I mean, *zero* credit for it.
Point is, doesn't matter how famous you are, or coulda been, Doesn't matter the ideas you have, or had.
The world doesn't promote runners-up, or hasbeens, or wannabes, or could-bes.
What matters is execution.
If you're wandering through life, wondering when you're lucky break will be, stop. You have to realize, you make your own luck. Recognize the difference between what you can control, and what you can, and work on promoting your own ideas or business or values, instead of other people's dreams.
And for those wondering, yes I am drunk, and no, I ain't fucking kidding you in anything I wrote here.
The most important lesson I learned is this:
First work on your own success, before you work on the success of others.
p.s.
I give surprisingly good advice for someone who doesn't benchmark well on traditional measures of success. I know, even I was shocked when I looked at the statistics.32 -
Happened to me - an experienced dev with most of the experience on the web.
I apply to this company that I had no idea what they do (big mistake on my part). I ace the technical interview, and they follow up with a request for a presentation on a topic, to see how well I can prove a point or understand a technology. So I do that. Everybody is listening carefully. Most people at the office didn't know the basics of what I was talking about, but there was a guy who knew more and asked the tough questions, but I didn't let down.
So we talk again, and again, and all is going well, we're out for a coffee, talk about the future of my career and the company, in a more casual setting. Got to know the CTO, etc. Everything was going stellar.
I was waiting for the offer, but instead I got a generic "We can't continue with your application" together with a notification that I was being blocked by the contact person.
Weirdest interview ever. And this thing really put me down and struck at my self-esteem. I mean was it really hard to mention whether you didn't like my expectations, or my skills, or my "fit for the team"? Or at least not block me like that, it's not like I'm gonna stalk you or anything. I still get birthday notifications on Skype from people I've interviewed with before, and I haven't written them since because they have other stuff to take care about, as do I.
Anyway. I got up and started again. New company. High expectations. High salary expectations. Rejection. Fuck.
Ok, start again. 2 companies this time. Both at the same time. Both make me an offer. Have to turn one down. Harder than I had imagined. The choice that I made literally changed my life for the better. I'm glad I didn't end up at any of the other 2 companies that rejected me.
Even experienced people get bad bitter rejections. Don't have high expectations, and that will help you keep your emotions in check, and fight on.2 -
It’s throw back Thursday!
Back to 1979... before the time of the red dragon book compiler book, (forgetting about the green dragon book) ... there was a time where only a few well written compiler and assembler “theory” books existed.
What’s special about this one? Well Calingaert was the co patentor of the OS/360. .. “okay soo? ... well Fred Brook’s Mythical Man-Month book I posted the other day. Calingaert is basically the counterpart of brooks on the OS/360.
Anyway, the code is in assembly (obviously) and the compiler code is basic.
Other than this book and from my understanding 2-3 other books that’s all that was available on compilers and assemblers as far as books written goes at the token.
ALLL the rest of knowledge for compilers existed in the ACM and other computing journals of the time.
Is this book relevant today, eh not really, other than giving prospective, it’s a short in comparison to the red dragon books.
If you did read it, it’s more of a book that gives you more lecture and background and concepts.. rather than here’s a swath of code.. copy it and run.. done.. nope didn’t happen in this book.. apply what you lean here10 -
ESET Antivirus is a strange animal. On one hand, it seems reasonably well written, because unlike Norton or F-Secure, it doesn't subject your computer to death by constant disk access and 100% CPU load for 10 minutes when you start it.
On the other hand, when I clicked the link in the mail about renewing licenses and filled out the form, I was not redirected to a page where I could enter credit cart details.
Instead, I got message that some representative would get back to me in 1-2 work days. Eh, what? It's a digital product for f***'s sake. Now, I suppose they'll send me a hand written letter (written using a quill, no doubt), delivered by a bloke riding a horse and wearing a tricorn.
Well, at least ESET virus definition updates are pushed on the internet, and not sent out on 5.25" diskettes.3 -
Must nearly every recently-made piece of software be terrible?
Firefox runs terribly slowly on a four-core 1.6GHz processor when given eight (8) gigabytes of RAM. Discord's user interface is awfully slow and uses unnecessary animations. Google's stuff is just falling apart; a toaster notification regarding MRO stock was recently pushed such that some markup elements of this notification were visible in the notification, the download links which are generated by Google Drive have sometimes returned error 404, and Google's software is overall sluggish and somewhat unstable. Today, an Android phone failed to update the Google Drive application... and failed to return a meaningful error message. Comprehensive manuals appear to be increasingly often not provided. Microsoft began to digest Windows after Windows XP was released.
Laziness is not virtuous.
For all computer programs, a computer program should be written such that this computer program performs well on reasonably terrible hardware... and kept simple. The UNIX philosophy is woefully underappreciated.37 -
MTP is utter garbage and belongs to the technological hall of shame.
MTP (media transfer protocol, or, more accurately, MOST TERRIBLE PROTOCOL) sometimes spontaneously stops responding, causing Windows Explorer to show its green placebo progress bar inside the file path bar which never reaches the end, and sometimes to whiningly show "(not responding)" with that white layer of mist fading in. Sometimes lists files' dates as 1970-01-01 (which is the Unix epoch), sometimes shows former names of folders prior to being renamed, even after refreshing. I refer to them as "ghost folders". As well known, large directories load extremely slowly in MTP. A directory listing with one thousand files could take well over a minute to load. On mass storage and FTP? Three seconds at most. Sometimes, new files are not even listed until rebooting the smartphone!
Arguably, MTP "has" no bugs. It IS a bug. There is so much more wrong with it that it does not even fit into one post. Therefore it has to be expanded into the comments.
When moving files within an MTP device, MTP does not directly move the selected files, but creates a copy and then deletes the source file, causing both needless wear on the mobile device' flash memory and the loss of files' original date and time attribute. Sometimes, the simple act of renaming a file causes Windows Explorer to stop responding until unplugging the MTP device. It actually once unfreezed after more than half an hour where I did something else in the meantime, but come on, who likes to wait that long? Thankfully, this has not happened to me on Linux file managers such as Nemo yet.
When moving files out using MTP, Windows Explorer does not move and delete each selected file individually, but only deletes the whole selection after finishing the transfer. This means that if the process crashes, no space has been freed on the MTP device (usually a smartphone), and one will have to carefully sort out a mess of duplicates. Linux file managers thankfully delete the source files individually.
Also, for each file transferred from an MTP device onto a mass storage device, Windows has the strange behaviour of briefly creating a file on the target device with the size of the entire selection. It does not actually write that amount of data for each file, since it couldn't do so in this short time, but the current file is listed with that size in Windows Explorer. You can test this by refreshing the target directory shortly after starting a file transfer of multiple selected files originating from an MTP device. For example, when copying or moving out 01.MP4 to 10.MP4, while 01.MP4 is being written, it is listed with the file size of all 01.MP4 to 10.MP4 combined, on the target device, and the file actually exists with that size on the file system for a brief moment. The same happens with each file of the selection. This means that the target device needs almost twice the free space as the selection of files on the source MTP device to be able to accept the incoming files, since the last file, 10.MP4 in this example, temporarily has the total size of 01.MP4 to 10.MP4. This strange behaviour has been on Windows since at least Windows 7, presumably since Microsoft implemented MTP, and has still not been changed. Perhaps the goal is to reserve space on the target device? However, it reserves far too much space.
When transfering from MTP to a UDF file system, sometimes it fails to transfer ZIP files, and only copies the first few bytes. 208 or 74 bytes in my testing.
When transfering several thousand files, Windows Explorer also sometimes decides to quit and restart in midst of the transfer. Also, I sometimes move files out by loading a part of the directory listing in Windows Explorer and then hitting "Esc" because it would take too long to load the entire directory listing. It actually once assigned the wrong file names, which I noticed since file naming conflicts would occur where the source and target files with the same names would have different sizes and time stamps. Both files were intact, but the target file had the name of a different file. You'd think they would figure something like this out after two decades, but no. On Linux, the MTP directory listing is only shown after it is loaded in entirety. However, if the directory has too many files, it fails with an "libmtp: couldn't get object handles" error without listing anything.
Sometimes, a folder appears empty until refreshing one more time. Sometimes, copying a folder out causes a blank folder to be copied to the target. This is why on MTP, only a selection of files and never folders should be moved out, due to the risk of the folder being deleted without everything having been transferred completely.
(continued below)29 -
Couple of jobs back we got bought out by that massive shipping company with the red and yellow colors.
We used macs and some high up moron decided it was a good idea to put on domain policy restrictions on our macs, but developers can't work without admin access so if we wanted to keep said admin access, we had to sign a written agreement indicating that we were not allowed to do certain thing, like change our wallpaper or install personal music players, you know like Spotify, which at the time was what most of us used.
Now this was just a nice cherry on the cake of stupid descision that was making me rethink working there. Thanks to the high demand for skilled front ends, it was 11 am when we got this, 3pm I had comnfirmed my interview for the next day.
An hour later our manager called us all in to explain this was BS formalities. Well too fucking late, learn to communicate you dumb shit.1 -
finally got TI to cough up their SDK and I noticed there's no compiler or linker or anything. Turns out I need to use TASM.
...TASM is for MS-DOS or compatible. I'm on Linux.
Well, it went poorly, as usual, specifically like this:
- tried to automate building with DOSBox config and Python script: output binary always corrupted. Manually repeated, TASM mangles output on DOSBox every time. No PCem or 86box, and i'm on a Ryzen, so no KVM DOS. Out of luck there.
- TASM Linux build or wrapper? No build, but there is a wrapper! ...wait, it needs... 4 things written by random people to be made from source. I mean, that's not actually that bad... oh, after setting all of them up (and struggling through some autoconf/automake bullshit, one of the programs only had source for a 2.x kernel and autoconf/automake were not happy about it) it fails because one project's been worked on a lot more and dropped support for working with the other 3... goddammit.
- Community SDK? Several options for this... but all of them need .NET 2 to run on Win9x, don't work in Wine, or require... hey look, TASM! GODDAMMIT!
- DOS on a real machine? It's a massive bitch to shuttle files to and from a real DOS machine quickly and I can't take 30 minutes between builds that take me 4 minutes to change enough to need tested again.
why must i suffer like this22 -
In my school, eleventh grade (so nearly "Abitur", A levels), we got the task to create a program which will be running on every computer here which should replace the Classbook (like a book where homework and lessons and stuff is written down).
Now, the class before mine already did a part of that, a program to share who is ill/not at school, with a mark whether it is excused or not.
So far so good. They all seemed not that bad when they were presenting it to us. Then, the first thing: they didn't know what git is. Well, okay I thought.
Next, there was this password field to access the program. One of them entered the password and clicked enter. That seemed suspiciously fast for an actual secure login. So fast, the password could have been in the Code...
Yesterday I copied that program and put it into a decompiler.
And... I was right.
There were the login credentials in plain text. Also, haven't thought of it but, IP address + username + password + database name were there in plain text, too.
Guess I am going to rewrite this program down to the core2 -
Github 101 (many of these things pertain to other places, but Github is what I'll focus on)
- Even the best still get their shit closed - PRs, issues, whatever. It's a part of the process; learn from it and move on.
- Not every maintainer is nice. Not every maintainer wants X feature. Not every maintainer will give you the time of day. You will never change this, so don't take it personally.
- Asking questions is okay. The trackers aren't just for bug reports/feature requests/PRs. Some maintainers will point you toward StackOverflow but that's usually code for "I don't have time to help you", not "you did something wrong".
- If you open an issue (or ask a question) and it receives a response and then it's closed, don't be upset - that's just how that works. An open issue means something actionable can still happen. If your question has been answered or issue has been resolved, the issue being closed helps maintainers keep things un-cluttered. It's not a middle finger to the face.
- Further, on especially noisy or popular repositories, locking the issue might happen when it's closed. Again, while it might feel like it, it's not a middle finger. It just prevents certain types of wrongdoing from the less... courteous or common-sense-having users.
- Never assume anything about who you're talking to, ever. Even recently, I made this mistake when correcting someone about calling what I thought was "powerpc" just "power". I told them "hey, it's called powerpc by the way" and they (kindly) let me know it's "power" and why, and also that they're on the Power team. Needless to say, they had the authority in that situation. Some people aren't as nice, but the best way to avoid heated discussion is....
- ... don't assume malice. Often I've come across what I perceived to be a rude or pushy comment. Sometimes, it feels as though the person is demanding something. As a native English speaker, I naturally tried to read between the lines as English speakers love to tuck away hidden meanings and emotions into finely crafted sentences. However, in many cases, it turns out that the other person didn't speak English well enough at all and that the easiest and most accurate way for them to convey something was bluntly and directly in English (since, of course, that's the easiest way). Cultures differ, priorities differ, patience tolerances differ. We're all people after all - so don't assume someone is being mean or is trying to start a fight. Insinuating such might actually make things worse.
- Please, PLEASE, search issues first before you open a new one. Explaining why one of my packages will not be re-written as an ESM module is almost muscle memory at this point.
- If you put in the effort, so will I (as a maintainer). Oftentimes, when you're opening an issue on a repository, the owner hasn't looked at the code in a while. If you give them a lot of hints as to how to solve a problem or answer your question, you're going to make them super, duper happy. Provide stack traces, reproduction cases, links to the source code - even open a PR if you can. I can respond to issues and approve PRs from anywhere, but can't always investigate an issue on a computer as readily. This is especially true when filing bugs - if you don't help me solve it, it simply won't be solved.
- [warning: controversial] Emojis dillute your content. It's not often I see it, but sometimes I see someone use emojis every few words to "accent" the word before it. It's annoying, counterproductive, and makes you look like an idiot. It also makes me want to help you way less.
- Github's code search is awful. If you're really looking for something, clone (--depth=1) the repository into /tmp or something and [rip]grep it yourself. Believe me, it will save you time looking for things that clearly exist but don't show up in the search results (or is buried behind an ocean of test files).
- Thanking a maintainer goes a very long way in making connections, especially when you're interacting somewhat heavily with a repository. It almost never happens and having talked with several very famous OSSers about this in the past it really makes our week when it happens. If you ever feel as though you're being noisy or anxious about interacting with a repository, remember that ending your comment with a quick "btw thanks for a cool repo, it's really helpful" always sets things off on a Good Note.
- If you open an issue or a PR, don't close it if it doesn't receive attention. It's really annoying, causes ambiguity in licensing, and doesn't solve anything. It also makes you look overdramatic. OSS is by and large supported by peoples' free time. Life gets in the way a LOT, especially right now, so it's not unusual for an issue (or even a PR) to go untouched for a few weeks, months, or (in some cases) a year or so. If it's urgent, fork :)
I'll leave it at that. I hear about a lot of people too anxious to contribute or interact on Github, but it really isn't so bad!4 -
The first PC I was exposured too. At the begining I was just playing games, but then I learned about BASIC and was intrigued enough to start typing the sample source codes which was listed in popular sience magazines.But when I run a simple pong game which was written as 2 player game and decided to make my first AI to play against me which at my first attempt got so perfect that I got not chance to win and then slowed it's reactions so I can actually enjoy playing against it and win some times... well that's the moment I got really hooked.4
-
I learnt something from every single project I made, but this one... it was really different, new language, new library, new hardware.
Problem:
there's an infopoint in a place, that was really hard to use (ball mouse over a monitor)
Solution:
make the screen be touch.
Developing the solution:
- after a bit of research I find out there's a library/project called OpenCV
- there are example programs that detect hands written in C++ (which I know) and Python (which I don't know)
- the whole infopoint works on a raspberry PI, with raspbian (I'm not new to linux, but it's somehow different, plus tons of customization)
So I spend like 3 weeks trying to understand how to make it work, at first, the webcam was on the TV and you could move the mouse just by shaking your hand, but it didn't work too well, so we tried making the webcam look at the screen and then calculate the differences between "no-hands" and "user-hand", but should have been calibrated, wasn't too precise... dropped solution.
put the webcam 30cm above the screen, let it just analyse a few centimeters of sight from the screen and it worked flawlessly, BUT it could just recognise the horizontal axis => had to rework the infopoint UI to make it dumb-easy
It all finally worked, I learnt python, openCV, a bit of photography
Then hated it all and decided to never do that again -
Unpopular opinion: unit tests are often overrated.
Although a well written test suite is almost essential in some parts of the application (I.E. business logic) I cringe when I see hundreds or thousands of line which “mocks” everything to test a micro service which just does CRUD operations on a database, in cases like that unit tests are just a waste of time because almost every operation involves a mock which may not behave like the real database and often needs to be rewritten when the code undergoes a huge refactoring. In these case a integration test suite is faster to write and way more helpful.9 -
This isn't a funny rant or story. It's one of becoming increasingly unsure of the career choices I've made the path they've led me down. And it's written with terrible punctuation and grammar, because it's a cathartic post. I swear I'm a better writer than this.
The highlights:
- I left a low-paying incredibly stable job with room to grow (think specialized office worker at a uni) to become a QA tester at a AAA game studio, after growing bored with the job and letting my productivity and sometimes even attendance slip
- I left AAA studio after having been promoted through the ranks to leading an embedded test tools development team where we automated testing the game (we got to create bots, basically!) and the database, and building some of the most requested tools internally to the company; but we were paid as if we were QA testers, not engineers, and were told that wouldn't change; rather than move over or up, I moved out to a better paying, less fabulous web and tools development job for a no-name company
- No-name company offered one or two days remote, was salaried, and close to home. CTO was a fan of long lunches and Quake 3 Arena 1-2 hours at the end of every day. CTO position was removed, I got a lot of his responsibilities, none of his pay, and started freelancing to learn new skills rather than deal with the CFO being my boss.
- Went to work as a freelancer for an email marketing SaaS provider my previous job had used. Made loads of money, dealt with an old, crappy code base, an old, cranky senior dev, and an owner who ran around like the world was on fire 24/7; but I worked without pants, bought a car, a house, had a kid, etc;
Now during ALL of this, I was teaching game dev as an adjunct at my former uni. This past fall, I went full time as a professor in game dev. I took a huge pay cut, but got a steady schedule (semester to semester anyway) and great benefits. I for once chose what I thought was the job I wanted over more money and something that was just "different". And honestly, I've regretted it so much. My peer / diagonally above me coworker feels untrustworthy half the time and teaches the majority of the programming courses when he's a designer and I've been the game programming professor for 8 years (I also teach non-game programming courses, but those just got folded into the games program...); I hate full-time uni politics; I'm struggling with money for my family; and I am in the car all the time it feels like. I could probably go back to my last job, which had some benefits, but nowhere near as good; my wife doesn't want me back to working in the house all the time because that was a struggle unto itself once we had a kid (for all of us, in different ways); and I have now less than 24 hours to tell my university I want to not pursue longer term contracts for full-time and go back to adjunct next Fall (or walk away entirely), or risk burning a bridge (we are reviewing applicants for next year tomorrow, including my own) by bailing out mid-application process.
I'm not sure I'm asking for advice. I'm really just ranting, I guess. Some people I know would kill to have the opportunities I have. I just feel like each job choice led me further away from a job I liked, towards more money, which was a tradeoff that worked out mostly, but now I feel like I don't have either, and I'm trapped due to healthcare and 401k and such. Sure, I like working more with my students and have been able to really support them in their endeavors this semester, but... that's their lives. Not mine. The wife thinks I should stay at the university and we'll figure out money eventually (we are literally sinking into debt, it's not going well at all), while most people think I should leave, make money, and figure out the happiness factor once my finances are back on track and the kid is old enough to be in school.
And I have less than 24 hours it feels like to make a momentous decision.
Yay. Thanks for reading :)2 -
I just felt like Google is the best player out there in terms of Companies.
Seriously, Well played Google.
This is not a negative opinion, I am just awe-struck at its tactics.
See, Google is currently the biggest name in terms of development in Android, ML and multi-platform software but no one can say it being a monopoly due to its dedication to open source community.
Recently Android emerged out to be One of the Biggest , most advanced, trusted and loved Technology . It saw great achievements, and up till 2016-17, it was at its peek. BUT when the market started shifting towards multi-platform boons and Ai, it got its hands into that too with its flutter and kotlin environment
One could have a negative opinion about this, But i can't seem to engulf the vast amounts of positive situations i see in this:
1) this IO18 (and many months before that) saw ML/AI being incorporated in Android (also the arcore, proje tango and many more attempts in the past) meaning that Android will not officially "die". It will just become an extremely encouraged platform( not just limited to mobiles) and a beginning of the robot -human reality ( a mobile is handling everything of your everyday life: chats, music apps sxhedules, alarms, and with an actively interacting ML, it won't be long when Android comes installed in a green bug lime droid robot serving you tea xD). Meanwhile the market of Windows games may shift to mobiles or typically " Android games" (remember, Android won't be limited to mobiles)
2)java may or may not die. The animations and smooth flow it seems to provide is always appreciated but kotlin seems to do so too. As for the hard-core apps, they are usually written in c++ .So java is in the red zone
3) kotlin-native and Flutter will be the weapons of future , for sure. they will be developing multi-platform softwares and will be dividing the market of softwares into platform specific softwares(having better ml/ai interactions,animations) and platform independent apps(access and use anywhere softwares).
And where does google stand?Its the lord varys of game of thrones which just supports and enhances the people in the realm. So it benefits the most . That's a company for you, ladies and gentlemen! If seen from common eyes they seem to be the best company ever and our 1 true king but it can also be a very thick fur cloak hiding their negetive policies and tactics , if any.
Well played, Google.16 -
Now my client does not want to rely on Amazon S3 because of the One Outage that it ever had a couple what weeks ago I forgot already. So my dumbass blurts out well we could always just back up to some other image or file storing website. But now I'm expected to implement this right away when I really haven't thought about it at all I mean I would have to write some sort of failover and some sort of daily or syncing mechanism. I guess I should forget about any direct upload to S3 code that I have written. Really I guess I have to wrap all of the image and file handling stuff with my own solution. Which actually that will be very nice when it is done and I could use this on other projects but it's quite a lot of work for something that I don't feel we really need at this stage in development. Just because you're using stuff on production that has am enormous red TEST label in the way of the ui doesn't mean i can code bullet proof software any faster4
-
Is your code green?
I've been thinking a lot about this for the past year. There was recently an article on this on slashdot.
I like optimising things to a reasonable degree and avoid bloat. What are some signs of code that isn't green?
* Use of technology that says its fast without real expert review and measurement. Lots of tech out their claims to be fast but actually isn't or is doing so by saturation resources while being inefficient.
* It uses caching. Many might find that counter intuitive. In technology it is surprisingly common to see people scale or cache rather than directly fixing the thing that's watt expensive which is compounded when the cache has weak coverage.
* It uses scaling. Originally scaling was a last resort. The reason is simple, it introduces excessive complexity. Today it's common to see people scale things rather than make them efficient. You end up needing ten instances when a bit of skill could bring you down to one which could scale as well but likely wont need to.
* It uses a non-trivial framework. Frameworks are rarely fast. Most will fall in the range of ten to a thousand times slower in terms of CPU usage. Memory bloat may also force the need for more instances. Frameworks written on already slow high level languages may be especially bad.
* Lacks optimisations for obvious bottlenecks.
* It runs slowly.
* It lacks even basic resource usage measurement.
Unfortunately smells are not enough on their own but are a start. Real measurement and expert review is always the only way to get an idea of if your code is reasonably green.
I find it not uncommon to see things require tens to hundreds to thousands of resources than needed if not more.
In terms of cycles that can be the difference between needing a single core and a thousand cores.
This is common in the industry but it's not because people didn't write everything in assembly. It's usually leaning toward the extreme opposite.
Optimisations are often easy and don't require writing code in binary. In fact the resulting code is often simpler. Excess complexity and inefficient code tend to go hand in hand. Sometimes a code cleaning service is all you need to enhance your green.
I once rewrote a data parsing library that had to parse a hundred MB and was a performance hotspot into C from an interpreted language. I measured it and the results were good. It had been optimised as much as possible in the interpreted version but way still 50 times faster minimum in C.
I recently stumbled upon someone's attempt to do the same and I was able to optimise the interpreted version in five minutes to be twice as fast as the C++ version.
I see opportunity to optimise everywhere in software. A billion KG CO2 could be saved easy if a few green code shops popped up. It's also often a net win. Faster software, lower costs, lower management burden... I'm thinking of starting a consultancy.
The problem is after witnessing the likes of Greta Thunberg then if that's what the next generation has in store then as far as I'm concerned the world can fucking burn and her generation along with it.6 -
>uni project
>6 people in group
>3 devs (including me)
I am in charge of electronics and software to control it as well as the application that will use them.
2 other "devs" in charge of a simple website.
Literally, static pages, a login/registration, and a dump of data when users are logged in.
Took on writing the api for the data as well, since I didn't fully trust the other 2.
Finished api, soldered all electronics, 3d printed models.
Check on the website.
Ugly af, badly written html and css.
No function working yet.
Project is due next week Thursday.
Guess who's not having a weekend and gonna be pulling 2 all nighters2 -
Don't feed the pigeons.
A cautionary tale.
When you feed the pigeons they keep coming back. They don't stop pestering you for help, and they don't ever listen to you.
I gave my father-in-law my old laptop, and installed the latest version of Office 2016 because I'm a nice guy.
Now, every week at family dinner there's something he needs me to help him with.
Mind you, his previous computer had Windows XP and the one I gave him had Windows 7. So it was quite the texh upgrade for him.
Except one of his octagenarian siblings wrote a family recipe book, and wrote it in Word Processor. (because Old People!) Well fuck of course it has pictures, clip art, special formatting, vertical and horizontal lines. It worked fine on XP because Word Processor was supported by XP.
The following is me explaining to him over the phone why his recipe book wouldn't load into Word. I was in his house picking up 2000 rounds of ammo for my and my wife's pistols (target practice) while he was out and about.
FIL: "It's the link on the desktop. It comes up in Word on the old computer but when I tried to put it on the new computer it wouldn't work. I used a thumb drive."
Me: "Okay well I tried to..."
FIL: "I don't know why it would work in Word on one computer and not the next."
Me: "Okay, well I clicked on the link to the file on your old desktop and it opened in Word Processor, not Word."
FIL: "No it opens in Word on the old computer, but it won't open on the new one."
Me: "It opens in Word Processor on the old computer, it won't open in Word on..."
FIL: "Which computer are you sitting at? The old one is on the left." (as if I wouldn't recognize the computer I had for three years and just gave him a month ago!)
Me: "The old one."
FIL: "Okay so it should open in Word on the old computer."
Me: "It won't. It will open in..."
FIL: "I was thinking maybe it had something to do with a screen that popped up when I logged in to the new computer. Something about antivirus software?"
Me: "It will open in Word Processor on your old computer, but it isn't formatted..."
FIL: "Yeah, it's a '.-w-p-s' file so it should work in Word."
Me: "Word Processor is a different program from Word. This opens in Word Processor."
(long silence)
FIL: "So which one do I have?"
Me: "You have Word Processor on the old computer."
FIL: "So how do I get Word Processor on the new computer?"
Me: "You don't. It is defunct software, it was discontinued ten years ago. You can try to get a converter online, but there's no guarantee it'll work."
FIL: "Alright, I'll be home in a few minutes. I'll take a look then."
This was at 10pm last night, and I'd been out all day since 7:30am. He still didn't believe me that the book was written in Word Processor until I showed him the different startup screen for Word Processor, where it says "Word Processor" plain as day.
I fed the pigeon. And it looks like there's more of this to come.3 -
The more I'm on here the more I remember all the shit I have had to deal with in the past.
Anyway, lets rant! I just moved cities after college to be closer to my family, I didnt have any work lined up at that stage but started job hunting the moment I was settled in, I did some freelance for smaller companies to stay afloat.
Eventually I got a job at this agency startup where "SEO" was there main focus, still very inexperienced they put me on frontend and data capturing but will teach me how to code using their systems in due time. At this stage I was getting paid minimum wage, but I was doing minimum work and it wasnt that bad.
A new investor bought 49% of the company and immediately moved into the office space to focus more on marketing (He was one of those scaly marketing guys that will sell you babies if he could get his hands on enough to make a profit).
This is where everything starts going to shit. He hires a bunch of "SEO Gurus", fills up the small office with people like sardines squished together. Development was still our main money maker at this stage, so there where 3 new more senior developers at this stage and I started learning a lot really fast.
Here are some of the issues we had to deal with:
1. Incentives - Great more money, haha! No, No, you where 5 minutes late so you only get half of the promised amount.
2. For every minute you are late we will deduct it from you paycheck (Did I mention I was getting paid minimum wage).
3. If you take a smoke break we will dock it from your pay.
4. Free gym membership to the gym downstairs, but you can only go once a week during your lunch.
5. No pay raises if you cant prove your worth on paper.
He on purposely made up shitty rules and regulations to keep us down and make as much profit as he could.
Here are some shitty stuff he has done:
1. We arent getting a 13th check this year because the company didnt make a big profit - while standing next to his brand new BMW.
2. Made changes over FTP on clients work because we where too slow to get to it, than blames me for it because its broken the next day and wants to give me a written warning for not resolving the issue Immediately. They went as far as wanting to fire me for this, gave me 1 day notice for meeting and that I can bring a lawyer to represent me (1 day notice is illegal, you need 5 days where I am from), so I brought a lawyer since my mom was a lawyer. They freaked the fuck out and started harassing me about this a week later.
3. Would have meetings all the time about how much money the company is making, but wont be raising our pay since no one has proven they are worth it yet.
4. Would full on yell at employees infront of the entire office if they accidentally made an mistake on a clients project.
One one occasion I took a week off for holiday, my coworker contacted me to ask a question and I answered that I will handle it when I am back the following week. Withing 2 hours my other boss phones me in a rage, "he is coming to fetch the company laptop from my house in 5 minutes, he will let me know when he arrives. Gives me no time to talk at all and hangs up - I have figured out what has happened by now so when he showed up he has this long speech about abandonment, and trust and loyalty to the company. So I pass him my laptop once he shut up and said: "You do know I am on holiday leave which you approved, right?", he goes even more silent and passes me back my laptop without saying anything, and drives off.
While the above was happening Douche manager back at the office has a rage as well and calls the whole office (25 people) to a meeting talking about how I abandoned the company and how disgraceful that is.
Those are the shitty experiences I can remember, there where many more like this. All of the above eventually led to me going into a deep depression and having panic attacks weekly, from being overworked or scared to step out of line. Its also the reason I almost stopped coding forever at that stage. I worked there for 2.5 years with the abuse.
I left 2 weeks after the last shit show, I am ok now and have my anxiety and depression well under control if not almost gone completely.
Ran into Douche Manager a few months ago after 9 years, the company got bought out and the first person they fired was him. LOL! He now has his own agency and is looking for Developers (They are hard to find he says), little does he know I spread his name far and wide to all and every Dev I knew and didnt know to avoid working for him at all costs. Seems like word of mouth still works in this digital age.
Thanks for reading this far!5 -
I started with C#at the age of 12, it was way too complicated and I learned Lua for Computer craft instead. Next I learned Ruby for RPG Maker and finally Javascript for web Dev stuff.
Now comfortable enought with Javascript but put off by its quirks I learned Java for compiling faulty minecraft mods, but I only fully learned it in school.
At the same time I learned python and quite liked it for scripting, but ultimately it was not a good match for my projects.
Disapointed with Java I returned to C# and liked it quite a lot, but started learning C++. After touching my first Microcontroller I learned C and I've stuck with it as my favorite language.
Along the way I picked up Kotlin, in case I need to do some Java shit. Much better.
But how did I come to an understanding of programming. Well I got better after each time I got a layer deeper until I hit silicon.
I had tinkered with electronics since I was 15 so I just had to study some boolean mathematics in school and some vintage computers architecture and instruction sets and...
Then I finally understood how that shit I wrote in Lua way back when was actually executed by my hardware.
Allways dig deeper and you'll find enlightenment eventually. -
Fuck this I need to ventilate.
Thinking about job change because maintaining and extending 3 years old codebase (flask project) is FUCKIN exhausting. It was badly written since start by someone who obviously didn't know much about python. (Going by commit history.)
Examples:
- if var != None / if var == None
- if var is not None / if var is None (well..)
- Returning self-parsed obscure JSONs from dict variable
- Serializing dictionaries into database by str() (both sqlalchemy and mysql support JSON format) - THEY ARE ALMOST UNUSABLE OTHER WAY AROUND (luckily, python can deal even with that)
- celery tasks, the way they are called they BLOCK the whole flask (not bad in itself, but if connection breaks there are no errors, nothing it just hangs)
- obscure generator/yielding that contains return of flask's response in itself
- creating fifteen thousands of variables one by one where they would look so nicely as dict keys, and hey they are then both MANUALLY SERIALIZED into returning dict by "%s" (string formatting) [okey, some of them are objecst like datetime but MATE WTF]
- many, many more, PEP lint shall not pass
I would rather deal with fresh startup owners wanting me to program unicorns in one week then trying to extend and manage zombie-like projects.
Nothing personal against the firm I actually like the place.3 -
1. i'm drunk.
2. please do me a sanity check
3:
this video, at this timestamp, watch the following about 5 minutes or so:
https://youtu.be/oG-6Ltp1_yE?t=1129
4. tell me (and possibly him in comment) if i'm wrong in the (point) of the following comment i wrote under that video:
20:53 ARE YOU FUCKIN KIDDING ME YOU ABSOLUTE MORON?!
yes, US has an altitude software written in fuckin VBA with an explicit statement to ignore errors, and there's not about 10x more automated testing code for a critical piece of functionality, than there is of the code that handles the actual functionality, and it's not been tested off-line (in simulated environment) as well as on-line (IRL) for at least years in all conditions, before it was deployed, YOU ABSOLUTE FUCKING MORON.
CAN YOU JUST PLEASE FOR THE LOVE OF ALL THAT'S HOLY STICK TO WHAT YOU ACTUALLY PROPERLY UNDERSTAND?!
HOLY FUCK THE LEVEL OF ARROGANCE IN YOU IN ASSUMING THAT JUST BECAUSE YOU KNOW VBA YOU KNOW HOW PROPER SOFTWARE DEVELOPMENT IS DONE, HOLY FUCKING SHIT.
I've worked in companies of 1k employees and less, on absolutely non-critical stuff, that has DevOps and QA processes and infrastructure that would make your script kiddie head spin for WEEKS, LET ALONE FUCKIN MILITARY SW DRIVING MILITARY EQUIPMENT YOU ARROGANT KNOWITALL FUCK.
Please, just please, FOCUS ON FUCKING DOING VIDEOS ABOUT STUFF YOU FUCKING UNDERSTAND, instead of stuff your ego overinflated from years of debunking dunning-krugers tells you that you're an expert in despite never actually having worked even near those fields. PLEASE. You are amazing when doing those, but this bullshit is just fucking rage-inducing. Don't ever talk about software again, because that's obviously YOUR dunning-kruger area, you fuckin bigheaded script kiddie.12 -
Most successful project at work: NodeJS utility for storing loads of measurements from an application running on various other systems and providing fast ways of getting at that data. No DB, just CSV files broken into time periods. Also has a search function written in C that can very quickly find all user sessions matching the criteria. It's not perfect, but it does the job pretty well and I can tweak the storage engine as much as needed for our use case since its all custom written.
Outside of work: Incomplete right now but I soldered some wires onto an old sound card and managed to get an Arduino to configure it and play some notes on its FM synthesis chip. Still quite a newbie to electronics so this was quite an achievement for me personally. -
I'm writing a devrant like site, so a kind of forum that supports live chat under every article. Login will be just username and password to stay anonymous. Email is optional for password reset. Also it won't have password requirements. Who cares if user uses insecure password. I do like the devrant avatar thing. I will use the ducky generator instead. So everyone on the site is a custom duck. K-SASS prolly never expected his generator to be used anywhere. The requirement of this site is that it scales very well. I have db calls of 0.006s, this is for persistent data only and will be used by all site instances. I expect that it can handle many clients concurrent as long I do not return more than 30 rows or so. Events get handled by a self written pubsub server.
All sounds great and development goes fine. But why is this a rant? Because the same thing as always is biting me, I can't design a site at all. I know how but I don't have any feeling for design at all making me almost incapable of building an attractive site. The only thing I can 'design' is an application in bootstrap or smth. I spend so much time one design while I don't like to do it ironically. But looks of site is almost as important as an good working site. Good working site doesn't get used if looks bad in many casee. This is since the start of my career an issue and it sucks that I appearantly can't deliver a whole site on my own meeting my standards.
My backend work is top notch tho. Btw, this application is not to be an alternative for devrant. I do not think I can attract more users than it already has and I've seen two communities disappearing once because someone decided to make a new one, took half of community with him and both communities died after short while.
End product of this project is a working project, not a live site hosted somewhere. It's pure about mixing mostly self written tech to get the best performance. Reinventing wheel on many levels. I wanted maybe to do the site in C but decided that it's way to much work for the value. I change the site so rapid since I don't have decent plan that python aiohttp is the best choice in amount of writing it yourself and fast. It's very lightweight.
More a story than a rant, sorry27 -
I am usually lurking in here since I never really worked as a Software Developer, but until I start going to the University, I thought I might also find myself a job in Software Development.
Well... I don't know where to start.
Someone in here heard of JBoss? Me neither... we're using it... It is a Framework to deploy fortified Java Web Applications. My first day was very chaotic and was dedicated to get this fucking shit to work. I got JBoss 7.5 from my colleagues and started deploying the hello world program...
So. Many. Things. Gone. Wrong...
After like 5 hours of troubleshooting, I had to install/setup a new wrapper with my own batch scripts, install SPECIFICALLY jdk 1.7_17 (anything else won't work) and downgrade JBoss to 7.2.
Yeah that's the first thing. Let's continue about JBoss. Version 7.2 uh? What's the newest one though? Oh it's now known as WildFly... huh... FUCKING HELL, THE NEWEST ONE IS VERSION 10.1??? AND EVEN 10.1 IS 1 YEAR OLD? WHAT THE FUCKING FUCKK AAAAAAHH...
So yeah, after that, without any expectation, I had a look at our codebase. Unit tests huh? I couldn't find a single self written one to test the applications functions... I asked my fellow devs and they told me that "it is too time consuming and we have to focus on new features, the QM Team will just manually test the application". Ever heard this bullshit? A big fat ass codebase with shittons of customers and not a single unit test...
So last but not least, since it is a web application, it also got a site. Y'know RichFaces? The deprecated front end library for Java Webpages? Where you got like 150 Tables per page everyone with a random id everytime you reload? Yeah I don't think I have to explain that to you guys...
So now YOU tell me? Is this a place to be 😂😂😂6 -
Ok c++ professionals out there, I need your opinion on this:
I've only written c++ as a hobby and never in a professional capacity. That other day I noticed that we have a new c++ de developer at the office of which my first impression wasn't the greatest. He started off with complaining about having to help people out a lot (which is very odd as he was brought in to support one of our other developers who isn't as well versed in c++). This triggered me slightly and I decided to look into some of the PRs this guy was reviewing (to see what kind of stuff he had to support with and if it warranted his complaints).
It turns out it was the usual beginner mistakes of overusing raw pointers/deletes and things like not using various other STL containers. I noticed a couple of other issues in the PR that I thought should be addressed early in the projects life cycle, such as perhaps introduce a PCH as a lot of system header includes we're sprinkled everywhere to which our new c++ developer replies "what is pch?". I of course reply what it is and it's use, but I still get the impression that he's never heard of this concept. He also had opinions that we should always use shared_ptr as both return and argument types for any public api method that returns or takes a pointer. This is a real-time audio app, so I countered that with "maybe it's not always a good idea as it will introduce overhead due to the number of times certain methods are called and also might introduce ABI compability issues as its a public api.". Essentially my point was "let's be pragmatic and not religiously enforce certain things".
Does this sound alarming to any of you professional c++ developers or am I just being silly here?9 -
You may know I love to hate tests. Well not the tests actually, what I hate is the TDD culture.
DBMS schema in my app dictates a key can either have a value, or be omitted - it can't be null, and all queries are written with that in mind (also they're checked compile-time against schema). But tester failed to mock schema validation, inserted a bunch of null keys with mock data, actually wrote assertions to check those keys are null (even though they never should be), and wanted me to add "or null" to my "exists" queries.
No, we don't need more tests, and you're not smart with your "edge cases" argument. DBMS and compiler ensure those null values can never exists in our DB, and they're already well tested by their developers. We need you to stop relying on TDD so much you forget about the practical purpose of the code, and to occasionally break from the whole theoretical independent tests to make sure your testing actually aligns with third-party services some code uses.
And no, we don't need more tests to test your mocks, and tests to test those test, and yo dawg, I heard ...5 -
Curious interview process for a job I was denied for. I was told to create an app for a "case study" I was given a week it was supposed to be a single activity sports app written in MVVM with a specific API. I turned in a single activity, 3 fragment application, that made queries and displayed results from that specific API as well as told the weather and in quirky quotes told you whether or not it was a good idea to go tailgating. When I got to the interview after turning it in a day early they said they loved the application, hounded me on code (all questions in which I answered) and they told me that I would get word on next steps within the next few days. Obviously I didn't get that job as earlier stated however, does this not seem weird?3
-
So, I've had a personal project going for a couple of years now. It's one of those "I think this could be the billion-dollar idea" things. But I suffer from the typical "it's not PERFECT, so let's start again!" mentality, and the "hmm, I'm not sure I like that technology choice, so let's start again!" mentality.
Or, at least, I DID until 3-4 months ago.
I made the decision that I was going to charge ahead with it even if I started having second thoughts along the way. But, at the same time, I made the decision that I was going to rely on as little external technology as possible. Simplicity was going to be the key guiding light and if I couldn't truly justify bringing a given technology into the mix, it'd stay out.
That means that when I built the front end, I would go with plain HTML/CSS/JS... you know, just like I did 20+ years ago... and when I built the back end, I'd minimize the libraries I used as much as possible (though I allowed myself a bit more flexibility on the back end because that seems to be where there's less issues generally). Similarly, any choice I made I wanted to have little to no additional tooling required.
So, given this is a webapp with a Node back-end, I had some decisions to make.
On the back end, I decided to go with Express. Previously, I had written all the server code myself from "first principles", so I effectively built my own version of Express in other words. And you know what? It worked fine! It wasn't particularly hard, the code wasn't especially bad, and it worked. So, I considered re-using that code from the previous iteration, but I ultimately decided that Express brings enough value - more specifically all the middleware available for it - to justify going with it. I also stuck with NeDB for my data storage needs since that was aces all along (though I did switch to nedb-promises instead of writing my own async/await wrapper around it as I had previously done).
What I DIDN'T do though is go with TypeScript. In previous versions, I had. And, hey, it worked fine. TS of course brings some value, but having to have a compile step in it goes against my "as little additional tooling as possible" mantra, and the value it brings I find to be dubious when there's just one developer. As it stands, my "tooling" amounts to a few very simple JS scripts run with NPM. It's very simple, and that was my big goal: simplicity.
On the front end, I of course had to choose a framework first. React is fine, Angular is horrid, Vue, Svelte, others are okay. But I didn't want to bother with any of that because I dislike the level of abstraction they bring. But I also didn't want to be building my own widget library. I've done that before and it takes a lot of time and effort to do it well. So, after looking at many different options, I settled on Webix. I'm a fan of that library because it has a JS-centric approach. There's no JSX-like intermediate format, no build step involved, it's just straight, simple JS, and it's powerful and looks pretty good. Perfect for my needs. For one specific capability I did allow myself to bring in AnimeJS and ThreeJS. That's it though, no other dependencies (well, at first, I was using Axios because it was comfortable, but I've since migrated to plain old fetch). And no Webpack, no bundling at all, in fact. I dynamically load resources, which effectively is code-splitting, and I have some NPM scripts to do minification for a production build, but otherwise the code that runs in the browser is what I actually wrote, unlike using a framework.
So, what's the point of this whole rant?
The point is that I've made more progress in these last few months than I did the previous several years, and the experience has been SO much better!
All the tools and dependencies we tend to use these days, by and large, I think get in the way. Oh, to be sure, they have their own benefits, I'm not denying that... but I'm not at all convinced those benefits outweighs the time lost configuring this tool or that, fixing breakages caused by dependency updates, dealing with obtuse errors spit out by code I didn't write, going from the code in the browser to the actual source code to get anywhere when debugging, parsing crappy documentation, and just generally having the project be so much more complex and difficult to reason about. It's cognitive overload.
I've been doing this professionaly for a LONG time, I've seen so many fads come and go. The one thing I think we've lost along the way is the idea that simplicity leads to the best outcomes, and simplicity doesn't automatically mean you write less code, doesn't mean you cede responsibility for various things to third parties. Those things aren't automatically bad, but they CAN be, and I think more than we realize. We get wrapped up in "what everyone else is doing", we don't stop to question the "best practices", we just blindly follow.
I'm done with that, and my project is better for it! -
One of our projects migrated their file-repository to another one during a major release.
Instead of giving this task to an experienced programmer, they gave it to the head of the respective dev department due to the usual release panic.
Soo.... He wrote the migration tool. It was executed during the release. Everything seemed fine so far.
A few days later. Someone from the above project came to my team due to some "strange behaviour on the production database".
They reported that they couldn't download some of the user's documents due to unknown reasons.
After quickly analyzing the current state of the new file-repository, we concluded that the affected documents did not exist in the new repository.
Then we took a look at the so called migration tool...
Well.. After nearly 30 min. we knew the root cause for that.
They only migrated the first 4 levels of the folder structure. Due to the assumption that "we don't use deeper nesting". (Facepalm)
As the head of their department wrote it, no one seems to questioned it either. Nor did they made a code review and ended up with a tool with hard coded urls to the production db, no version control, no build tool, no ci, nothing. Breaking nearly every possible company standard.
However.. That's not it. When analyzing their migration tool we noticed another even more dangerous thing.
They mixed up the id generation of the migrated documents resulting in a random assignment between customers and documents. Which is quite bad as this contains sensitive information. E.g. passports
They offered us quite a nice amount of money to fix this until EOB. We declinded as it was simply not possible in that time, but agreed to support them with the new tool.
After some time I heard that they migrated production again. And they fucked it up again. They never talked to us after we offered them support...
The third and final migration was written by us. Not only migrated it correctly. It was also way faster. By factor 20.
In the end we haven't gained anything from this rushed project as the penalties were piling up due to this fucked up migration.
After all this time I'm not sure who is to blame. In my opinion, partly all of them.
Head of department who can't and shouldn't code.
Seniors who didn't review the code and didn't ask for help.
Release mgmt who put way too much pressure on the devs. -
I think I'm a good developer. I have pretty decent debugging skills, including pulling apart disassembled x86 and other architecture code.
I'm fascinated by how things work.
But almost everything is catered for by a library. Or has already been done.
I find it enjoyable to create a library or program myself, but get disheartened when I find some library or program that is written seemingly very well, compared to my own code. And then I start to think I'm not a good developer after all.
Sort of relates to my previous rant about repeatedly rewriting code.
Applies to me doing programming as a hobby but probably affects my code at work as well... I just can't help but think my code is probably awful compared to what someone else might write.
...then I see incredibly ugly, messy, badly written code by other people and I feel better...
I suppose it is like an artist who sees amazing works but cannot paint to that standard, but is well beyond drawing stick figures with crayons.
Sounds like a trivial problem but it probably impedes my progress with a lot of things.3 -
Did my first meaningful work in angular in many moons at work today - also apparently the first time I've touched it in 4 major version releases lol.
I typically find myself specializing in API and service architecture lately, so I was pleasantly surprised at how quickly I got back into the swing of things with the front end in general. Granted the app itself has been very neatly organised and written which goes a very long way to helping one find their way quickly.
That said, I really can't admit to having any desire to stay working in angular for very long. Yes, I think it speaks well to the framework itself that I can pick up immediately going from version 8 to 12 without any issue, but also, I think angular kinda sucks ass*.
* Opinion should be taken with a grain of salt coming from a .NET dev. This does not reflect the views of .NET or other devs in general. User results may vary.1 -
my fist job... i get to edit a c++ code written by a (mind you) programming company that they teamed with for the past(mind you again) 3 years ...
now just for starters, this code was edited by self taught coders that are really good engineers(they are really good), that didnt really know how the code worked before yet they still changed it, and it worked, how ever they wanted some changes.
i get the project files, and there is not one single comment describing what is happening... only code commented out... and no documentation what so ever were done....
so below are some of my comments that i wrote after i finished adding what i had to add, and fixing what i had to fix:
/*first rule of C anything coding, no actual functions in the header, well let me introduce you to a fully functioning thread running program all in the header, enjoy*/
//used to control the thread
// i honestly dont know why, but it worked soooooo yea...
// TG uncommented // for absolutely no reason what so ever...
//used to communicate with the port
//the message to be sent to the inverter, which has a code that will handle it
//hmmmmmm...
//again not usefull since we are using radioButtons
// same ...
// same ...
// same ...
// they said they dont even use this mode, but none the less, same ...
// calculate the checksum for the message
// ....
// one of the things that work, and god forbids i touch
// used for the status displayed on screen
// used for the (censored :P) status in the message
// used for the (censored :P) status in the message
// not used at all, but the message structure contains it and i refuse to edit that abomination
// used for the (censored :P) status in the message
// used for the (censored :P) status in the message
// just dont ask and roll with it, i didnt want to touch this
// saaaaame ...
// if before true this saaaaaame ...
// value of the (censored :P)
// it pains me to say it again, but this is no use
// (censored :P) input
// (censored :P) input
// only place seen , like for real it was just defined,sooooo yea :D
// well you know how it is
// message string
// check sum string
/****below from feed back****/
// (censored :P) coming in
// (censored :P) coming in
// (censored :P) coming in
// (censored :P)
/****below is the output to the receiver ****/
//(censored :P)
// (censored :P)
// (censored :P)
// (censored :P)
//you thought we were done.... nope, no idea. it comes in the feedback
// not used, literally commented out the one time it was used
// same ...
// XD, man this is a blast, same ...
// nope ...
// used to store the port chosen for the communication
// is a static for the number of data we have recorded so far, and as a row indicator for the recording method
// used to indicate the page we are on in the excel file, as well as the point in physical point in the test
// same ... oh look at this a positive same :D
// same ...
// same ...6 -
Go to bed tired. Wake up tired. Get up tired.
A month ago I was excited doing my work, I even was planning a huge change on one of our projects, detailed everything and passed it over to other folks to get funding. Now I seriously doubt I could pull it off. When I start reading a line of code I forget how it started before I reach the \n.
There was this thing I was asked to implement... A nifty one, I already could see the implementation. As I came to it I got stuck. Like when your body gets "stuck" when you get scared to death - you know what you have to do (i.e. RUN), you know how, but for some reason you just can't... Couldn't come up with anything. The other dev had to take it over and implemented it all in like 4 hours. Just like that. And it took me another 4 hours to understand how and why it worked when I know it should not take me that long as I used to write similar algorithms myself for fucks sake! I know I could have written it myself... but I couldn't..
I'm seriously worried.. Is this the end of my carreer as a dev? Am I broken somehow? I have some vacation days saved but I doubt it would be enough... Don't know if changing workplaces would work as well. I've always wanted to leave 9/5 and start working on my own project full time but now I am not sure I could pull it off either.. wtf is happening.. wtf... wtf.. -
Hello all,
I am an apprentice, 19. I joined this software developer apprenticeship to leave college as it was not particularly great for my mental health, and programming is the only thing I can do reasonably well.
The company that I find myself in is a strange one. It has about twenty or so employees, but we all instructed to operate as if we are a giant company—our sales person, for example, will tell our clients that we have hundreds.
The development team is a collection of software developers. There is no database administrator, network administrator, software engineer (not in name only), test engineer, requirements engineer, etc. There are just several software developers. Of these developers, one has left by now. When he joined, he was promised to be working on a new system: he left after spending seven years on an old system. A new developer has just arrived to replace him: he was told he would be working with Raspberry Pis; it was interesting to see his face after we informed him that we do not use Raspberry Pis.
The codebase is fourty-years-old and written in Delphi, which is some kind of cousin of pascal, from what I understand. Code is not peer-reviewed. Instead, it is self-reviewed, and you just push whatever changes you make. The code is very much spaghetti, and there is a whole array of bugs that, at least to me, look impossible to track down and fix. I have a bug assigned to me at the moment were someone appears somewhere when they are not supposed to. After asking seniors about this, I learn of this huge checking mechanism and all of its flaws: a huge, flawed checking mechanism... for toggling a single boolean value. This isn't a complicated boolean value, by the way, this is just a value to say whether someone has clocked in or clocked out of a building, via a button.
In terms of versioning, we have several releases, and we often do development work in older releases (or new releases and then write them into older releases) because our clients are larger than us and often refuse to upgrade, and the boss does not want to lose any contracts. We also essentially have multiple master branches.
With the lack of testers, bizarre version control, what appears to be unfiffled promises to staff, etc. I must ask that, since this is my first gig as a software developer, is any of this normal?2 -
It was around for a while but I didn’t realize it was it for a long time. I was fixing computers for cash and spending in on booze while in primary school. Making websites for cash and for fun while in high school. Some guys wanted to buy my databases at the time and sending me emails that my websites rocks. I didn’t cared cause I party a lot and I didn’t need money.
Sex drugs and rock and roll was my life not a fucking computer.
Since I never had problems with math I passed exams and got myself to university and dropped out cause of those 3 funny things above. Turned out to pass exams after second year when math and physics disappeared you need to study more then 1 day before exam and party was more important for me.
I failed tremendously. My girlfriend left me I was out of money I got back to my hometown with my laptop and I somehow between depression, drugs, alcohol and killing myself reminded I was getting money from websites and I can try to follow that movie.
At that time I didn’t read single book in english in my life. I know some basic english so I decided to try to read some actionscript2 pdf. Why actionscript ? I liked those simple games. Those were fun and there was nothing better. I was reading first book at least 10 times with vocabulary that took about a month until I remembered whole book and second book was faster like 1 week third was 1 day and from then thing moved a little faster. I discovered flex just before adobe acquired macromedia and started writing in it. Started answering to some questions on forum and build some portfolio website with fancy 3d animations and stuff and finally applied for 2 jobs.
They both were amazed by my website and one of them sent me some task to do and I did it overnight and sent them back. They wanted to hire me and I need to respond to them.
Second job they invited me for talking and asking about math, if I’m ok with 3d and stuff and they offered me job closer to my home town so I picked them. The code was amazing, 3d equations, quaternions, complicated stuff bit very well written by some company that dropped project before launch and my first task was add some small feature.
I remember first day in elevator with my former boss who told me to not to get scary and take it slowly I was trying to do my task as fast as I can worried I will be fired if I don’t do it and nobody else will hire me and I won’t manage to recover from second failure. It was even more fighting with myself that I will fail again then with this task lol.
I’ve done the feature third day and when they said it’s cool and I can commit my changes it appeared to me that It might be this shit that will get me out of trouble.
I was never again wrong about programming and so wrong about trouble but that’s a different story... -
During one of our 'pop-up' meetings last week.
Ralph: "The test code the developers are checking in is a mess. They don't know what they are doing."
ex.
var foo = SomeLibrary.GetFoo();
Assert.IsNotNull(foo);
Fred: "Ha ha..someone should talk to HR about our hiring practices. These people are literally driving the company backwards."
Me: "I think unit testing is complete waste of time."
- You could almost see the truck hit the wall and splatter watermelon everwhere..took Ralph and Fred a couple of seconds to respond
Fred: "Uh..unit testing is industry best practice. There is scientific evidence that prove testing reduces bugs and increases code quality"
Ralph: "Over 90% of our deployments are rolled back because of bugs. Unit testing will eliminate that."
Me: "Sorry, I disagree."
- Stepping on kittens wouldn't have gotten a worse look from Fred and Ralph
Fred: 'Pretty sure if you ask any professional developer, they'll tell you unit testing and code coverage reduces bugs.'
Me: "I'm not asking anyone else, I'm asking you. Find one failed deployment, just one, over the past 6 months that unit testing or code coverage would have prevented."
- good 3 seconds of awkward silence.
Ralph: "Well, those rollbacks are all mostly due to server mis-configurations. That's not a fair comparison."
Me: "I'm using your words. Unit tests reduces bugs and lack of good tests is the direct reason why we have so many failed deployments"
Boss: "Yea, Ralph...you and Fred kinda said that."
Fred: "No...we need to write good tests. Not this mess."
Me: "Like I said, show me one test you've written that would have prevented a rollback. Just one."
Ralph: "So, what? We do nothing?"
Me: "No, we have to stop worshiping this made up 80% code coverage idol. If not, developers are going to keep writing useless test code just to meet some percent. If we wrote device drivers or frameworks for other developers maybe, but we write CRUD apps. We execute a stored procedure or call a service. This 80% rule doesn't fit for code we write."
Fred: "If the developers took their head out of their ass.."
Me: "Hey!..uh..no, they are doing exactly what they are being told. Meet the 80% requirement, even if doesn't make sense."
Ralph: "Nobody told them to write *that* code."
Boss: "My gosh, what have you and Fred been complaining about for the past hour?"
- Ralph looks at his monitor and brilliantly changes the subject
Ralph: "Oh my f-king god...Trump said something stupid again ..."
At that point I put my headphones on went back to what I was doing. I'm pretty sure Fred and Ralph spent the rest of the day messaging back-n-forth, making fun of me or some random code I wrote 3 years ago (lots of typing and giggling). How can highly educated grown men (one has a masters in CS) get so petty and insecure?7 -
In a time where a web dev is expected to know, well.. everything... Backend -JAVA, python, nodejs and C++ would be great.
Front- angular, react, other 10 libs
DBs -sql, mongo, redis, elastic, kafka, rebbitmq
Also be devops on the side with AWS and docker kubernetis and more stuff
How the f is that possible?
In my real job for the last couple of years and different companies, I usually use 1 language/framework & 1 main DB.. and although it's possible in some companies, but in mine, ppl dont get access to AWS etc..
So let's say there's me.. a server side dev for years.
So I decide to be better and learn Golang.. cool lang, never needed in my job, after few days of not using it I forgot all I learned and that was it.
Then I realized I gotta know some frontend cause everyone want a fullstack ninja nowadays.. so I tried Vuejs.. it was amazing .. never got to use it at work, cause i was a backend, and we didnt use frameworks on our products back then..
Also forgotten.
Then I decided to learned nodejs, because this is the coolest thing ever.. hated it, but whatever... Never got to use it at work, cause everything was written in other lang which the whole team knew... Forgot the little i knew.
Then I decided, its time to see what Angular is, cause everyone started using it... similar idea to vuejs which i barely remembered, but wow it's a lot of code to remember, or I'll have to google everything.. so I went over it, but can't say i even learned it.
Now Im trying to move on to python, which, I really am learning in depth.. however, since I dont have real experience with it, no one gives me a shot at being a python dev, so again i feel like I'm trying to memorize syntax and wasting my time..
Tired of seeing React in all job ads, i decided to have a look what's that all about.. and whadoyaknow... It's fucking the same idea as vue/angular with again different syntax..
THIS IS CRAZY!
in how many syntaxes do i need to know how to make a fucking crud api, and a page with same fucking post form, TO BE A GOOD PROGRAMMER?!?6 -
I'm considering quitting a job I started a few weeks ago. I'll probably try to find other work first I suppose.
I'm UK based and this is the 6th programming/DevOps role I've had and I've never seen a team that is so utterly opposed to change. This is the largest company I've worked for in a full time capacity so someone please tell me if I'm going to see the same things at other companies of similar sizes (1000 employees). Or even tell me if I'm just being too opinionated and that I simply have different priorities than others I'm working with. The only upside so far is that at least 90% of the people I've been speaking to are very friendly and aren't outwardly toxic.
My first week, I explained during the daily stand up how I had been updating the readmes of a couple of code bases as I set them up locally, updated docker files to fix a few issues, made missing env files, and I didn't mention that I had also started a soon to be very long list of major problems in the code bases. 30 minutes later I get a call from the team lead saying he'd had complaints from another dev about the changes I'd spoke about making to their work. I was told to stash my changes for a few weeks at least and not to bother committing them.
Since then I've found out that even if I had wanted to, I wouldn't have been allowed to merge in my changes. Sprints are 2 weeks long, and are planned several sprints ahead. Trying to get any tickets planned in so far has been a brick wall, and it's clear management only cares about features.
Weirdly enough but not unsurprisingly I've heard loads of complaints about the slow turn around of the dev team to get out anything, be it bug fixes or features. It's weird because when I pointed out that there's currently no centralised logging or an error management platform like bugsnag, there was zero interest. I wrote a 4 page report on the benefits and how it would help the dev team to get away from fire fighting and these hidden issues they keep running into. But I was told that it would have to be planned for next year's work, as this year everything is already planned and there's no space in the budget for the roughly $20 a month a standard bugsnag plan would take.
The reason I even had time to write up such a report is because I get given work that takes 30 minutes and I'm seemingly expected to take several days to do it. I tried asking for more work at the start but I could tell the lead was busy and was frankly just annoyed that he was having to find me work within the narrow confines of what's planned for the sprint.
So I tried to keep busy with a load of code reviews and writing reports on road mapping out how we could improve various things. It's still not much to do though. And hey when I brought up actually implementing psr12 coding standards, there currently aren't any standards and the code bases even use a mix of spaces and tab indentation in the same file, I seemingly got a positive impression at the only senior developer meeting I've been to so far. However when I wrote up a confluence doc on setting up psr12 code sniffing in the various IDEs everyone uses, and mentioned it in a daily stand up, I once again got kickback and a talking to.
It's pretty clear that they'd like me to sit down, do my assigned work, and otherwise try to look busy. While continuing with their terrible practices.
After today I think I'll have to stop trying to do code reviews too as it's clear they don't actually want code to be reviewed. A junior dev who only started writing code last year had written probably the single worst pull request I've ever seen. However it's still a perfectly reasonable thing, they're junior and that's what code reviews are for. So I went through file by file and gently suggested a cleaner or safer way to achieve things, or in a couple of the worst cases I suggested that they bring up a refactor ticket to be made as the code base was trapping them in shocking practices. I'm talking html in strings being concatenated in a class. Database migrations that use hard coded IDs from production data. Database queries that again quote arbitrary production IDs. A mix of tabs and spaces in the same file. Indentation being way off. Etc, the list goes on.
Well of course I get massive kickback from that too, not just from the team lead who they complained to but the junior was incredibly rude and basically told me to shut up because this was how it was done in this code base. For the last 2 days it's been a bit of a back and forth of me at least trying to get the guy to fix the formatting issues, and my lead has messaged me multiple times asking if it can go through code review to QA yet. I don't know why they even bother with code reviews at this point.18 -
I absolutely hate software to the point where I started converting from sysadmin to becoming more like a dev. That way I could just write my own implementations at will. Easier said than done, that's for sure. And it goes both ways.
I think that in order to be a good dev, you need these skills the most:
- Problem solving skills
- Creativity, you're making stuff
- Logical reasoning
- Connecting the dots
- Reading complex documentation
- Breaking down said documentation
- A strong desire to create order and patterns
- ...
If you don't have the above, you may still be able to become a dev.. but it would be harder for sure, and in some cases acceptance will be lower (seriously, learn to Google!)
One thing I don't think you need in development is mathematics. Sure there's a correlation between it and logic reasoning, but you're not solving big mathematical monsters here. At most you'd probably be dealing with arrays and loops (well.. program logic).
Also, written and spoken English! The language of the internet must be known. If it's not your first language, learn it. All the good (and crucial) documentation out there is in English after all.
One final thing would be security in my opinion, since you're releasing your application to the internet and may even run certain services, and deal with a lot of user data. Making those things secure takes some effort and knowledge on security, but it's so worth it. At the most basic level, it requires a certain mindset: "how would I break this thing I just made?"4 -
2 hour meeting to brainstorm ideas to improve our system health monitoring (logging, alerting, monitoring, and metrics)
Never got past the alerting part. Piss poor excuses for human being managers kept 'blaming' our logging infrastructure for allowing them to log exceptions as 'Warnings', purposely by-passing the alerting system.
Then the d-head tried to 'educate' everyone the difference between error and exception …frack-wad…the difference isn't philosophical…shut up.
The B manager kept referring to our old logging system (like we stopped using it 5 years ago) and if it were written correctly, the legacy code would be easier to migrate. Fracking lying B….shut the frack up.
The fracking idiots then wanted to add direct-bypass of the alerting system (I purposely made the code to bypass alerting painful to write)
Mgr1: "The only way this will work is if you, by default, allow errors to bypass the alerting system. When all of our code is migrated, we'll change a config or something to enable alerting. That shouldn't be too hard."
Me: "Not going to happen. I made by-passing the alert system painful on purpose. If I make it easy, you'll never go back and change code."
Mgr2: "Oh, yes we will. Just mark that method as obsolete. That way, it will force us to fix the code."
Me: "The by-pass method is already obsolete and the teams are already ignoring the build warnings."
Mgr1: "No, that is not correct. We have a process to fix all build warnings related to obsolete methods."
Mgr2: "Yes. It won't be like the old system. We just never had time to go back and fix that code."
Me: "The method has been obsolete for almost a year. If your teams haven't fixed their code by now, it's not going to be fixed."
Mgr1: "You're expecting everything to be changed in one day. Our code base is way too big and there are too many changes to make. All we are asking for is a simple change that will give us the time we need to make the system better. We all want to make the system better…right?"
Me: "We made the changes to the core system over two years ago, and we had this same conversation, remember? If your team hasn't made any changes by now, they aren't going to. The only way they will change code to the new standard is if we make the old way painful. Sorry, that's the truth."
Mgr2: "Why did we make changes to the logging system? Why weren't any of us involved? If there were going to be all these changes, our team should have been part of the process."
Me: "You were and declined every meeting and every attempt to include your area. Considering the massive amount of infrastructure changes there was zero code changes required by your team. The new system simply worked. You can't take advantage of the new features which is why we're here today. I'm here to offer my help in any way I can with the transition."
Mgr1: "The new logging doesn't support logging of the different web page areas. Until you can make that change, we can't begin changing our code."
Me: "Logging properties is just a name+value pair dictionary. All you need to do is standardize on a name and how you add it to the collection."
Mgr2: "So, it's not a standard field? How difficult would it be to change the core assembly? This has to be standard across all our areas and shouldn't be up to the developers to type in anything they want."
- Frack wads smile and nod to each other like fracking chickens in a feeding frenzy
Me: "It can, but what will you call this property? What controls its value?"
- The look I got from both the d-bags I could tell a blood vessel popped.
Mgr1: "Oh…um….I don't know…Area? Yea … Area."
Mgr2: "Um…that's not specific enough. How about Page?"
Mgr1: "Well, pages can cross different areas, and areas cross different pages…what do you think?"
Me: "Don't know, don't care. It's up to you. I just need a name."
Mgr2: "Modules! Our MVC framework is broken up in Modules."
DevMgr: "We already have a field for Module. It's how we're segmenting the different business processes"
Mgr1: "Doesn't matter, we'll come up with a name later. Until then, we won't make any changes until there is a name."
DevMgr: "So what did we accomplish?"
Me: "That we need to review the web's logging and alerting process and make sure we're capturing errors being hidden as warnings."
Mgr1: "Nooo….we didn't accomplish anything. This meeting had no agenda and no purpose. We should have been included in the logging process changes from day one."
Mgr2: "I agree, I'm not sure why we're here"
Me: "This was a brainstorming meeting as listed in the agenda. We've accomplished 2 of the 4 items. I think we've established your commitment to making the system better. Thank you all for coming."
- Mgr1 and 2 left without looking at me or saying a word.1 -
Got one right now, no idea if it’s the “most” unrealistic, because I’ve been doing this for a while now.
Until recently, I was rewriting a very old, very brittle legacy codebase - we’re talking garbage code from two generations of complete dumbfucks, and hands down the most awful codebase I’ve ever seen. The code itself is quite difficult to describe without seeing it for yourself, but it was written over a period of about a decade by a certifiably insane person, and then maintained and arguably made much worse by a try-hard moron whose only success was making things exponentially harder for his successor to comprehend and maintain. No documentation whatsoever either. One small example of just how fucking stupid these guys were - every function is wrapped in a try catch with an empty catch, variables are declared and redeclared ten times, but never used. Hard coded credentials, hard coded widths and sizes, weird shit like the entire application 500ing if you move a button to another part of the page, or change its width by a pixel, unsanitized inputs, you name it, if it’s a textbook fuck up, it’s in there, and then some.
Because the code is so damn old as well (MySQL 8.0, C#4, and ASP.NET 3), and utterly eschews the vaguest tenets of structured, organized programming - I decided after a month of a disproportionate effort:success ratio, to just extract the SQL queries, sanitize them, and create a new back end and front end that would jointly get things where they need to be, and most importantly, make the application secure, stable, and maintainable. I’m the only developer, but one of the senior employees wrote most of the SQL queries, so I asked for his help in extracting them, to save time. He basically refused, and then told me to make my peace with God if I missed that deadline. Very helpful.
I was making really good time on it too, nearly complete after 60 days of working on it, along with supporting and maintaining the dumpster fire that is the legacy application. Suddenly my phone rings, and I’m told that management wants me to implement a payment processing feature on the site, and because I’ve been so effective at fixing problems thus far, they want to see it inside of a week. I am surprised, because I’ve been regularly communicating my progress and immediate focus to management, so I explain that I might be able to ship the feature by end of Q1, because rather than shoehorn the processor onto the decrepit piece of shit legacy app, it would be far better to just include it in the replacement. I add that PCI compliance is another matter that we must account for, and so there’s not a great chance of shipping this in a week. They tell me that I have a month to do it…and then the Marketing person asks to see my progress and ends up bitching about everything, despite the front end being a pixel perfect reproduction. Despite my making everything mobile responsive, iframe free, secure and encrypted, fast, and void of unpredictable behaviors. I tell her that this is what I was asked to do, and that there should have been no surprises at all, especially since I’ve been sending out weekly updates via email. I guess it needed more suck? But either way, fuck me and my two months of hard work. I mean really, no ego, I made a true enterprise grade app for them.
Short version, I stopped working on the rebuild, and I’m nearly done writing the payment processor as a microservice that I’ll just embed as an iframe, since the legacy build is full of those anyway, and I’m being asked to make bricks without straw. I’m probably glossing over a lot of finer points here too, just because it’s been such an epic of disappointment. The deadline is coming up, and I’m definitely going to make it, now that I have accordingly reduced the scope of work, but this whole thing has just totally pissed me off, and left a bad taste about the organization.9 -
Worst fight was at a former job. I complained about a senior-level employee who made unprofessional comments about me.
I asked followup questions about a request. I was told the request was correct. Turns out the other employee half read/didn’t read my question because she decided I was trying to cause trouble. When my boss reviewed my work and asked why it looked weird, other employee actually wrote in the JIRA comments “Oh, my apologies. I thought [name] was question the request. [name] changed the wrong thing.” She said the silent part out loud. And the wrong thing she accused me of changing…the website always looked like that and my boss told her so. (Also, not the first time she forgot what the website looked like.) But my boss didn’t make any JIRA comment about the “questioning the request” part.
My boss was really downplaying what had happened. Like other employee just made a mistake. That wasn’t a mistake. He wasn’t going to bring it up with other employee’s boss. It was weird because the incident was a written conversation so it was really hard to deny the facts. I also had the original email notification in case she tried to go back and change her comment. I think my boss either wasn’t used to defending his direct reports or didn’t have the power to do so since most of his department (including me) was slated for layoffs in a few months.
Well, I got the last laugh. A week later, I received an offer. I put in my notice during the company’s busiest time of year. And my boss actually asked me to extend my notice by three weeks. Really?! Expecting me to forgive and forget that whole “questioning the request” incident. I stuck with my original date. -
This literally happened in my current team, and I'm not even an experienced dev yet.
Incident happened like this :
Our team is working on a RCP based on eclipse plugins, which has a headless mode and a GUI mode. Now, in the GUI mode, my manager cum architect thought there are no need of user log files (long story) because the user can see the info on screen, whereas in the headless mode, she wanted me to print the logs onto the console and a log file as well.
Now it just so happened that our team had got a recent addition as a replacement to our lead developer (she left the company) who claimed she had 3 years of expertise and a masters degree, and she was assigned a task. The task was to format a custom file we were generating out of the product (basically dumping info in a file) in a human-readable format. Miss new-addition-masters-degree decided it would be a very good idea to redirect the standard java output stream to a file output stream ( which she used for generating the formatted file ) but somehow never realized that she needed to reset the output stream back to standard output.
Consequences were devastating. I wrote the logic for the logger ( yes, apparently any available logging mechanism won't do it, again, long story ) and had it printing to a file in tmp directory. The logs seemed to be working fine initially but after a few logs, specifically from the point where the formatter started working, all the logs got printed in the formatted file. And this file was supposed to be used by our clients to develop something on top of it. Naturally, I got the heat of it and then naturally, worried and nervous and curious and in a frenzied state of mind, I started debugging.
When I got to the actual fault, I seriously could not decide whether to cry or laugh or call up miss masters and scream at her. I decided to ask her about what the hell she had written and her answer was most of it was written by the developer she replaced, so she didn't know it would cause this much problem. Anyway, I fixed the leak after that and averted the catastrophe.
And that, fellow devs, is the story of how I solved a crisis in my first year at corporate.1 -
Soo... Let me get this straight... My boss reeeeeeally wants me to reconfigure our database system to sync data between each of our 15 sites... Let me this about this...
Our database is an MS Access database originally written about 17 years ago. It was written as a standalone database that runs a unique instance for each of our sites.The person responsible for the database (still not the original developer) before I took over 6 years ago bragged about how they were "an 80s developer" (w...t...f!). Even with all of the fixes and additions (additions because... F&$#ing of course there are!) It's still basically held together by duct tape and spit.
Hmmm... Ok, still possible. What's the environment I'm working in... I have absolutely ZERO control of our workplace network... That's a whole other department. Due to the nature of the workplace (and it's sites) there is extreme limitation on network access.
Well... If I'm Reeeeeeally nice to the people in charge of the network, maaaaaybe they can give me access to a little server space.
A very long shot, but, doab.... Oh, the boss would really like this handled in the next couple months...
F$#k you! There is no way on God's (still) green earth that I... Alone... Can rewrite a legacy database... written across 4 or 5 different versions of FU$KING MS Access, and give 15 sites, with extremely limited networking, real time data sync in... Oh, a few months.
Now, I do not work with "computer people". I'm usually lucky when my coworkers remember their passwords (which, even if they don't, WHY tell ME! I don't run the network!)
And when I tell my boss basically what I just said... In a nice, pleasant way... They suggest I'm not giving the problem enough thought...
FU#K YOU IGNORANT ASS! Write me a ToDo list in MS Access (no, I'm not going to tell you where to start) in under an hour then, MAYBE, we can talk about... No... Just NO... Can't be done!
*Takes deep breath* so... Lovely weather we're having, right?3 -
Linkedin is known from displaying invasive corporate advertisements like join our cloud, and other picture title shit.
But it got worse.
From January I am invaded by contribute to this article crap and get some badge. Powered by some artificial intelligence shit.
From about a month or so I am seeing lots of suggestions on linkedin wall that look like content written by bots, and the posts are from real people, well morons from FAANG started showing up with their generated spam but that’s not all.
This week I started getting job offers that look like are written by chatgpt and not a real people. When I reply to this offer that it looks like it’s not from real person I am ghosted.
Those job offers are like 3 a day and I those are not only contacts but mostly a direct messages from premium account that costs 1000$ per month or more.
I feel like I’m in real world matrix.
But that’s not all.
I see lots of recriuters from my contact list are getting fired and looking for new job.
But that’s not all bitches !!!
I sometimes reply to some CEO and they delete posts and invite me to contacts just to ghost me.
I feel so disconnected I started to think all those people are all only bots and I am last living - real person that is not using AI to write something.
I think microsoft finally managed to kill this cash cow with their obsession about AI. Corporate shit is killing every good platform.
Hope for fediverse to take off with some news websites thinking about integration with fediverse.
Help me obi P2P nobi you’re my last torrent hope.
If p2p social networks won’t take off now it would be dead end.9 -
Somebody ranted about his teacher showing windows presentation and teaching nothing. I wanted to comment that post but i have enough material to make the whole rant out of it.
Well at least you have those presentations! In my school we have 2 IT classrooms one with win xp, 1ghz cpu, 0,5gb ram computers and one with win vista, 2 core 2ghz cpu and 2gb of ram PCs.
Guess what room our teacher is using... of course the worse one! The second one is fine, few years ago another theacher had been using it!
I tried to convince him to change rooms but he is coming up with silly exciuses! (like "server is not working here!", well i fixed it with my friend but why are you even talking about it when you are not using yours in old class!)
PS. That server is useless anyway, every pc is connected to router that is connected to internet so supervisor pc is not mandatory, only acces restriction is enforced by win accounts.
I heard from students from my class (that picked that optional IT course) (i'm in high school) that gimp is not working because pc's are so bad!
Sometimes even notepad frezzes.🤔
Not only class is shite but teacher clearly has no idea what is he doing. (in order to pass the final from IT you need to learn simple C++, up to simple foo objects) and of course he isn not even talking about that! On one lesson about sorting algorithms he gave everybody 10 small pieces of paper with numbers on them and told everybody to sort them manualy, because he didnt know how to do it himself! So there is no doubt they wont be able code it.
I need to mention that i volontered to "clean, fix" that classroom (in order to convince teacher to move). And in that class i saw programms written in c++ on every computer! That means somebody was teaching propely before! 😣
I feel sorry for those guys, they are just waisting time. I would fall for it as well but i decided i can learn coding in home ;).
Well, results are shocking, after 1 month of coding i learned C# and i can basicly make any algorithm i ever wish. I learned about computer operation so well that i can nearly teach computer science. (i helped my friend in usa that is a electronic student with that and i'm very proud of it 😁) and it class still can't even use all 3 loops correctly... 😥 Ok i must admit i have been coding for a looooong while so i had time to learn basic c,c++ and pc operations before, but point still stands.
Why the hell are you wasting life of those studends? Why are you giving them a choice to learn coding WHEN YOU CANT EVEN USE PC YOURSELF?! (that it course is optional so you can apply if you want so)
I dont regret not bothering about it.1 -
I just remembered some of the "harmless" dev-related insults I've received over the years:
1) most recently, I shared a tool with an acquaintance cuz it bears the same name as something he put together a while back. Background: this guy likes to come across as having infinite programming knowledge and brags to his fb pals about being an expert in multiple languages. While trying to make sense of the cryptic docs of the package I sent him, he implies I don't know what the iframe or html5 canvas are. Claims not to elaborate what package does cuz the docs is meant for advanced desktop and mobile devs
It hurt because this is one of few people who know I built suphle, yet thinks so lowly
2) as you can tell from the first point, I share links I consider interesting with relevant contacts. I'm also quite vocal about my (mostly contrarian) takes on occurrences within the dev space that I'm familiar with. One day on the laravel board, this dude is reprimanding me and asks me to take the opinions I read on blogs and tabloids with a pinch of salt, implying I didn't form them independently but was influenced by what was written by some stranger online
It hurt because I expected him to know better. I felt I'd sufficiently proven to have actually built things that informed my school of thought
3) the oldest happened many years ago but I remember it now because the perpetrator called me out of the blue last week. I was teaching his boss, who managed an office but preferred to keep his student status hidden, to avoid being thought incompetent. This caller guy just so turned out to be learning js at the time. Fast forward some years, we all disbanded. He'd landed a dev job and was doing well. So I sent him one of those js gotchas, asking him to explain his answer
After he replied, I told him his answer was close enough but it had more to do with js passing closure arguments by reference. Dude responded that he knew that was the correct answer but wasn't aware I knew what closures meant. That stung me like hell back then. I missed his call and didn't know who owned the contact, so I searched my chats and saw that last interaction. Pain all over again3 -
If you've ever tried using Go plugins raise your hand.
If you've ever tried doing plugins in Go, raise your hand.
If you think that the following rant will be interesting, raise your hand.
If you raised your hand, press [Read More]:
This is a tale of pain and sorrow, the sorrow of discovering that what could be a wonderful feature is woefully incomplete, and won't be for a very long time...
Go plugins are a cool feature: dynamically load pre-compiled code, and interact with it in a useful and relatively performant way (e.g. for dynamically extending the capabilities of your program). So far it sounds great, I know right?
Now let me list off some issues (in order of me remembering them):
1. You can't unload them (due to some bs about dlopen), so you need to restart the application...
2. They bundle the stdlib like a regular Go binary, despite the fact that they're meant to be dynamic!
3. #2 wouldn't be so bad if they didn't also require identical versions of all dependencies in both binaries (meaning you'd need to vendor the dependencies, and also hope you are using the right Go version).
4. You need to use -trimpath or everything dies...
All in all, they are broken and no one is rushing to fix it (literally, the Go team said they aren't really supporting it currently...).
So what other options are there for making plugins in Go?
There's the Hashicorp method of using RPC, where you have two separate applications one the plugin, one the plugin server, and they communicate over RPC. I don't like it. Why? Because it feels like a hack, it's not really efficient and it carries a fear of a limitation that I don't like...
Then we come to a somewhat more clever approach: using Lua (or any other scripting language), it's well known, it's what everyone uses (at least in games...). But, it simply is too hard to use, all the Go Lua VMs I could find were simply too hard to set up...
Now we come to the most creative option I've seen yet: WASM. Now you ask "WASM!? But that's a web thing, how are you gonna make that work?" Indeed, my son, it is a web thing, but that doesn't mean I can't use it! Someone made a WASM VM for Go, and the pros are that you can use any WASM supporting language (i.e. any/all of them). Problem inefficient, PITA to use, and also suffers from the same issues that were preventing me from using Lua.
Enter Yaegi, a Go interpreter created by the same guys who made (and named) Traefik. Yes, you heard me right, an INTERPRETER (i.e. like python) so while it's not super performant (and possibly suffering from large inefficiency issues), it's very easy to set up, and it means that my plugins can still be written in Go (yay)! However, don't think this method doesn't have its own issues, there's still the problem of effectively abstracting different types of plugins without requiring too much boilerplate (a hard problem that I'm actively working on, commits coming soon). However, this still feels to be the best option.
As you can see, doing plugins in Go is a very hard problem. In the coming weeks (hopefully), I'm going to (attempt to at least) benchmark all the different options, as well as publish a library that should help make using Yaegi based plugins easier. All of this stuff will go (see what I did there 😉) in a nice blog post that better explains the issues and solutions. But until then I have some coding to do...
Have a good night(/day)!13 -
I'll post a rant (will be long) soon-ish on the root of the asinine problem...
TL;DR
Anyone got a better suggestion of killing a WLAN router signal than a Faraday Cage?
-----------------------
As to the point as I can manage atm...
My ISP forces a proprietary router/modem for them to script my static IPv4 block (/28, aka 13 usable). Modifying this equipment in any way or using the vast majority of tactics to modify its behaviour = Federal Felony... with my history, it couldn't be construed as mistake/ignorance of this fact, so I'd likely end up working for some branch of the gov to mitigate the costs of standard prison (on both ends... handicapped af = expensive af to comply with base human rights laws... plus I'd be a dangerous prisoner from what I've been told).
I NEED the ipv6 functionality TOTALLY off... I've written this into every kernel and every container config at kernel level.
The issue is, I don't trust their shit device (which "should" also be set to no ipv6 via gui... non-GUI = fed felony).
This horrid device, they apparently made them for home use initially (to be fair it has decent specs and tolerable RAM), so included WiFi... that comes on by itself.
Disable the WiFi!... except I cant (at least not without 'tampering').
Why? Well acc to the GUI it's not enabled in the first place. Acc to the 'tech support' it's apparently a paid feature (yes, nonsense) that I have not paid for (nor would I), meaning on their end's GUI and DBs I also don't have WiFi ability from that dev.
So... Not trusting the other settings and the dev, being something im not allowed to directly config outside of their GUI that doesn't realise it's putting out a usable signal despite registering DHCP on behalf of that non-existent signal. I NEED to kill those signals.
I realise it likely sounds extreme to make and use a Faraday Cage for a router/modem (secondary modem, it parses the initial modem's output, via script, to allow the static block to be accessed). I really dont know any other way that's legal to restrict it.
Oh, in case unclear, I have tried so many ways to get them to just allow me to use any device (pref. mine, but even their's) that i can simply script myself... it's a no-go.20 -
ok, fuck people. i mean the people who talk about things that are a big deal. you don't need to take a course in html/css to build a website, you need documentation.
people act like programming languages are a whole separate literacy. they're not. it is not a big deal, nor an accomplishment of any significance, to learn any language to a basic extent. variables, control flow, functions and scope should not be considered challenging topics, and people should stop bragging about them. i'm pretty sure this is because programming is new. as people, i think when something is new we tend to think of it as more complex and harder to understand. basic programming is not that.
ok that was a tangent from my real point. college is a scam. anyone can learn anything from books and the internet. any time you want to learn about something, go to google, and search "${my topic} site:*.github.io" and you'll have a page about that topic written by someone who is knowledgeable and passionate of the topic. colleges don't teach people how to think like these books/websites do. and i'm fucking sick of people who'd rather see a degree then a portfolio. fuck them shits bro. i can distinct my smart friends because my smart friends speak logically and enjoy becoming smarter. i would take the kid who watches aerodynamics videos on youtube and then built a plane over a kid who studied and got a five on his ap physics exam. watching then doing is better learning than watching and repeating. after all, creativity is not at all measured in our grades, and i'd like to argue that sometimes intelligence isn't even measured. i mean, people can say they're good at math, but the kids who talk about fibinnoci numbers and why there can never be two primes more than 7 (i if i remember properly) integers apart or the ones who prove cryptographic algorithms. i guess what i'm trying to say is the dumb kids aren't dumb and the smart kids aren't smart (well not that) but kids who are passionate and just do something instead of waiting for their degree to do the same thing are the best and brightest. i forgot what i was talking about. sorry it is almost 2 am and i am intoxicated , and i don't believe i got my point across very well either.7 -
Ever had to work with a Web backend, which is written in C++, has 30000 lines of code and is contains php, JQUERY, HTML as well as a desktop UI? I have to do that right now. Now, I am not the most experienced dev with Web stuff but this is fucking ridiculous.2
-
I was facing another if those problems (not bugs) that have the good solution barely outside if your reach.
I decided to pull my Ace in the sleeve and ask on stackoverflow. As I was half way through my well written question, where I had to illustrate stuff in great detail, and express clearly what is required, I realized how to solve it.
If I had written the question like many of the people who complain that SO is full of pricks who just downvote, nobody would have understood it, and I wouldn't have solved it myself. I would have been ignored and maybe even downvoted.
Write down your requirements explicitly, unambiguously, and you solve half of the problem by that. Do that on SO and you will never complain again.3 -
Sharing a first look at a prototype Web Components library I am working on for "fun"
TL;DR left side is pivot (grouped) table, right side is declarative code for it (Everything except the custom formatting is done declaratively, but has the option to be imperative as well).
====
TL;DR (Too long, did read):
I'm challenging myself to be creative with the cool new things that browsers offer us. Lani so far has a focus on extreme extensibility, abstraction from dependencies, and optional declarative style.
It's also going to be a micro CSS framework, but that's taking the back-seat.
I wanted to highlight my design here with this table, and the code that is written to produce this result.
First, you can see that the <lani-table> element is reading template, data, and layout information from its child elements. Besides the custom highlighting code (Yellow background in the "Tags" column, and green gradient in the "Score" column), everything can be done without opening even a single script tag.
The <lani-data-source> element is rather special. It's an abstraction of any data source, and you, as a developer can add custom data sources and hook up the handlers to your whim (the element itself uses the "type" attribute to choose a handler. In this case, the handler is "download" which simply sends a fetch request to the server once and downloads the result to memory).
Templates are stored in an html file, not string literals (Which I think really fucks the code) and loaded async, then cached into an object (so that the network tab doesn't get crowded, even if we can count on the HTTP cache). This also has the benefit of allowing me to parse the HTML templates once and then caching the parsed result in memory, so templates are never re-parsed from string no matter how many custom elements are created.
Everything is "compiled" into a single, minified .js file that you include on your page.
I know it's nothing extraordinary, but for something that doesn't need to be compiled, transpiled, packaged, shipped, and kissed goodnight, I think it's a really nice design and I hope to continue work on it and improve it over time1 -
When the CTO/CEO of your "startup" is always AFK and it takes weeks to get anything approved by them (or even secure a meeting with them) and they have almost-exclusive access to production and the admin account for all third party services.
Want to create a new messaging channel? Too bad! What about a new repository for that cool idea you had, or that new microservice you're expected to build. Expect to be blocked for at least a week.
When they also hold themselves solely responsible for security and operations, they've built their own proprietary framework that handles all the authentication, database models and microservice communications.
Speaking of which, there's more than six microservices per developer!
Oh there's a bug or limitation in the framework? Too bad. It's a black box that nobody else in the company can touch. Good luck with the two week lead time on getting anything changed there. Oh and there's no dedicated issue tracker. Have you heard of email?
When the systems and processes in place were designed for "consistency" and "scalability" in mind you can be certain that everything is consistently broken at scale. Each microservice offers:
1. Anemic & non-idempotent CRUD APIs (Can't believe it's not a Database Table™) because the consumer should do all the work.
2. Race Conditions, because transactions are "not portable" (but not to worry, all the code is written as if it were running single threaded on a single machine).
3. Fault Intolerance, just a single failure in a chain of layered microservice calls will leave the requested operation in a partially applied and corrupted state. Ger ready for manual intervention.
4. Completely Redundant Documentation, our web documentation is automatically generated and is always of the form //[FieldName] of the [ObjectName].
5. Happy Path Support, only the intended use cases and fields work, we added a bunch of others because YouAreGoingToNeedIt™ but it won't work when you do need it. The only record of this happy path is the code itself.
Consider this, you're been building a new microservice, you've carefully followed all the unwritten highly specific technical implementation standards enforced by the CTO/CEO (that your aware of). You've decided to write some unit tests, well um.. didn't you know? There's nothing scalable and consistent about running the system locally! That's not built-in to the framework. So just use curl to test your service whilst it is deployed or connected to the development environment. Then you can open a PR and once it has been approved it will be included in the next full deployment (at least a week later).
Most new 'services' feel like the are about one to five days of writing straightforward code followed by weeks to months of integration hell, testing and blocked dependencies.
When confronted/advised about these issues the response from the CTO/CEO
varies:
(A) "yes but it's an edge case, the cloud is highly available and reliable, our software doesn't crash frequently".
(B) "yes, that's why I'm thinking about adding [idempotency] to the framework to address that when I'm not so busy" two weeks go by...
(C) "yes, but we are still doing better than all of our competitors".
(D) "oh, but you can just [highly specific sequence of undocumented steps, that probably won't work when you try it].
(E) "yes, let's setup a meeting to go through this in more detail" *doesn't show up to the meeting*.
(F) "oh, but our customers are really happy with our level of [Documentation]".
Sometimes it can feel like a bit of a cult, as all of the project managers (and some of the developers) see the CTO/CEO as a sort of 'programming god' because they are never blocked on anything they work on, they're able to bypass all the limitations and obstacles they've placed in front of the 'ordinary' developers.
There's been several instances where the CTO/CEO will suddenly make widespread changes to the codebase (to enforce some 'standard') without having to go through the same review process as everybody else, these changes will usually break something like the automatic build process or something in the dev environment and its up to the developers to pick up the pieces. I think developers find it intimidating to identify issues in the CTO/CEO's code because it's implicitly defined due to their status as the "gold standard".
It's certainly frustrating but I hope this story serves as a bit of a foil to those who wish they had a more technical CTO/CEO in their organisation. Does anybody else have a similar experience or is this situation an absolute one of a kind?2 -
The dangers of PHP eval()
Yup. "Scary, you better make use of include instead" — I read all the time everywhere. I want to hear good case scenarios and feel safe with it.
I use the eval() method as a good resource to build custom website modules written in PHP which are stored and retrieved back from a database. I ENSURED IS SAFE AND CAN ONLY BE ALTERED THROUGH PRIVILEGED USERS. THERE. I SAID IT. You could as well develop a malicious module and share it to be used on the same application, but this application is just for my use at the moment so I don't wanna worry more or I'll become bald.
I had to take out my fear and confront it in front of you guys. If i had to count every single time somebody mentions on Stack Overflow or the comments over PHP documentation about the dangers of using eval I'd quit already.
Tell me if I'm wrong: in a safe environment and trustworthy piece of code is it OK to execute eval('?>'.$pieceOfCode); ... Right?
The reason I store code on the database is because I create/edit modules on the web editor itself.
I use my own coded layers to authenticate a privileged user: A single way to grant access to admin functions through a unique authentication tunnel granting so privileged user to access the editor or send API requests, custom htaccess rules to protect all filesystem behind the domain root path, a custom URI controller + SSL. All this should do the trick to safely use the damn eval(), is that right?!
Unless malicious code is found on the code stored prior to its evaluation.
But FFS, in such scenario, why not better fuck up the framework filesystem instead? Is one password closer than the database.
I will need therapy after this. I swear.
If 'eval is evil' (as it appears in the suggested tags for this post) how can we ensure that third party code is ever trustworthy without even looking at it? This happens already with chrome extensions, or even phone apps a long time after reaching to millions of devices.11 -
My Boss Abuses me, should I leave my job?
I overheard this tidbit on a bus recently. Okay I'm lying. But in the great spans of
time I've spent reading "dear annie" type articles, many involving how often my meth head step dads beat me while growing up, or in turn how often *I* beat me (oh yeah)..I've come across this in one form another, this, and other dumbfuck questions from the stuttering meek and halfhearted.
They say there are no dumb questions. Well, like that guy who smoked too much weed and
asked "what is the sound of one hand clapping?" (fap fap fap), there are in fact dumb questions.The world is overflowing with them, like a clogged shitter full of tacobell and glitter covered brown gutter wisdom. And it smells like roses, if roses smelled like shit.
Questions like "How do I make sure my cats don't feel lonely once I have my first child?"
I don't know, they're fucking cats. Did you even google this before asking?
Or
"How to make spaghetti?"
Really, is this question written by a bot?
"What is the best javascript framework in year x?"
All of them and none of them. Welcome to hell.
"Whats your favorite color?"
My answer: I'm not five years old any more. And obviously you are. Why are you on this site instead of eating crayons at daycare?
Yes indeed, this and many more dumbfuck questions await you and can be found on the preeminent quora, amongst other sites.
A place, which censored an eminently reasonable answer of mine (I was totally not being a shithead btw).
I responded in kind by removing a whole mess of long form answers of mine.
What I have learned from the experience is this: Humanity is greatly comprised of many people who, having no brains to speak of, wander aimlessly like beasts of the field, glass eyed and slack jawed, in search of a savior. But their savior came a long time ago, once, and many times before. An engineer, or programmer, or perhaps in another reincarnation a guy parting a sea of koolaid after the local ruler swindled his peeps out of another payment for moving some heavy ass stone blocks, but I digress.
And in response to peoples worries, anxieties, everyday problems and concerns, every one of these would be wiseman, every one of these saviors, leaders, and great men spoke these magic words which resonate now down through the ages like the voice of reason and providence:
"Read the FUCKING manual."
"And don't bother me again asshole." (well this last bit is all me, but I'm sure others said it too.)2 -
Finaly I write my first rant about dev stuff.
My mom works as a shop clerk in the optic shop (they sell glasses). It is a small shop run by family buisness (not by my mom, she is only employed there). She had been constantly complaining about the poor pc performance and how the program there are using for inventory managment always hangs.
Her boss decided to "upgrade" the pc's by buing macs, but he was stopped by me and my mom. (I was helping them with some IT stuff so i had a bit of a influence over that).
The program they are using was written by some amateur programer that is a boss of a similar shop somewhere in the country.
So i recommended to them to install SSD's to speed up their pc's, and it did nothing. Of course i blammed the poorly written program next.
The program hangs when you type in the find field. I wanted to check if my gut feeling was right so i asked them to have task manager open when they type. And my feeling was right.
When you change anything in the text find bar, the program sends a crap ton of requests to the local server and that server sends a crap ton of packiets back, enough to saturate the local connection...
I will try to rewrite the app myself, just for the challenge of it. I want to check if i can write a better one than this one pos. They still want to buy better pc's but they wont be any help to them... Well i will help them with that anyway (having good pc's is good anyway). I hope i can create the app that will fix their problems...3 -
For all things, for all men, that a man compliments a thing does not imply that this man at least attempts to understand this thing. However, for all men, that a man criticises a thing implies that this man at least attempts to understand this thing.
For all computer programs, that a computer program is terrible implies that scrapping the current implementation of this computer program and beginning anew may be the best method of fixing this computer program.
With few exceptions, for all programming languages $l$, given sufficient effort, $l$ source code can be human-readable.
The UNIX philosophy never became outdated.
For all computer programs $p$, $p$ should be written sufficiently well that the author of $p$ can be prideful of $p$.
For all computer programs $p$, a specification for $p$ should be written before $p$ is created.
For all good computer programs, a good computer program can run on terrible hardware.
Every clock cycle is valuable.8 -
!!rant life toptags bottags
My tags seem to be okay. Let's go.
I'm 14. I live in a place where nobody smart lives, and the school I go to has no coders.
Last year, all my friends moved. The only friend I had left now hates me, simply because they yelled at me everyday and I yelled at them once.
I am in the middle of my exams. I also have the flu, but thankfully it's not the e-flu, otherwise you guys should prepare for 24/7 headaches.
Due to the medications I am taking, I'm half-asleep all the time, and I probably am messing up all of my grades.
My entire extended family is in India, and I go there 2 times a year. I miss them so much right now :(.
At the same as doing exams, I am trying to keep my laptop (primary) and PC (secondary, desk) configuration and setup approximately synchronized. In order to do that, I am setting up my dotfiles repository.
Except that all my laptop config (which works) is written horribly, and I need to rewrite it all.
At the same time, I have 3 other projects going on: An OS written in D, a source-based package management system written in D, a small website (not online), and a whatever's cooking in my mind at this moment.
Right now, I'm supposed to be studying for my French exam.
Instead, I'm here, typing this out on my phone.
I have a classmate in school who can type QWERTY at 80WPM. I'm learning Dvorak (Programmer's!) and my current speed is 33WPM, after about 2 months of half-hearted practise during work time and at school.
Sometimes, I look at the world we have here, and what we're doing to it, and I wish that sometimes we could simply be content with life. Let's just live, for once.
I find ~60 random songs in one go, simply by finding a song I know on YouTube and going to the 'Mix - <song>' playlist. I download them all (youtube-dl), and I listen to them. Sometimes, I find this little part in a song (Mackelmore & Ryan Lewis - Can't Hold Us beginning instrumentals, or Safe and Sound chorus instrumentals) that make me feel so happy I feel like all's good in the world. Then the song moves on and with it, my happiness.
I look at Wayland, and X, and I think - Why can't we have one way of doing things - a fixed interface to express anything, so that one common API exists for everything of that type? And I realise it's because they feel that they're missing something from the others. Perhaps it's a bug nobody's solved or functionality that's missing, and they think that they can do better than that. And I think - Well, that's stupid. Submit a fucking bug report or pull request instead of reinventing the wheel. And then I realise that all the programming I've ever done in my life IS simply reinventing the wheel. And some might say, "Well, that guy designed it with spokes and wood. I designed it with rubber and steel," but that doesn't work, because no matter what how you make it, it's just a wheel. They both do the same thing. Both have advantages and disadvantages, because nothing's perfect. We're not perfect because we all have agendas and wants and likes and dislikes and hates and disgusts and all kinds of other crap, and our DNA's not perfect because it manages to corrupt copy operations (which is basically why we die of old age, I think).
And now I've lost my train of thought and this is too large to scroll over so I'm just going to move on to the next topic. At this point (.), I have 1633 letters left.
I hate the fact that the world's become so used to QWERTY because of stuff that happened 100 years ago that Dvorak is enough of a security to stop most people from being able to physically use my laptop.
I don't understand why huge companies like Google want to know about me. What would you do with this information? Know how to take over my stuff when the corporation-opocalypse comes around? Why can't they leave me alone? Why do I have to flash a ROM onto my phone so that Google cannot track me? What do you want, Google?
I don't give a shit any more, so there's my megarant.
Before anybody else (aside from myself) tells me that this is too big, all these topics are related simply because my train of thought went this way. There's a connection between each of these things, but I just don't know what it is.
Goodnight, world. 666 is the number of characters I have left. So is 42, for that matter (thanks, Douglas Adams!). Goodbye.rant life story current project ugh megarant why are you doing this to me life schrodinger's tags 🐈 life3 -
2 years back when I was onshore, we were in the bad situation due to the size and complexity of handling big webserivces simulators. A single change makes the build red hence the face of other developers too.
These simulators were created using J2EE and VM templates 5 years back. With the time, application and data size grown. We were supposed to maintain consistensy in dummy data accross the applications. But some programmers made a copy of these simulators to finish their applications fast and made the situation worst.
Finally one of the team member dare to use stubby4j to solve this problem. Choosing the stubby4j was a good decision as it was the specialized tool written to create simulators only. But as the stubby4j was not having all the features a simulator need, he customized it's build for our simulators. All the team members were happy.
After few weeks, I picked a story to transform other simulators using stubby4j. The story was previously closed as it was hard to implement in stubby4j. I ingonred the comment and started working on. I spent 2 weeks but couldn't solve the problem. I read the comment in between but It was very late to take the step back. I was not able to give proper status update in the daily standup. Other team members (working from offshore) were thinking that I'm just passing the time. However my manager handled the situation very well and asked if I need some help.
This was friday, I took the leave as it was my wife's birthday. We couldn't go out due to the bad weather. I was thinking about the code all the time. Hence I started to write a new utility to handle all the requirement a webseervice simulator need. I took 2.5 days to complete it. On Tuesday, I demoed it to the whole team. And published it as an opensource application "STUBMATIC". In few weeks I received the good response from other teams as well.
I'm a full time open source developer now. -
Just tried to read this the frequently asked questions about article 13.
I don't think you need to read it, since you learn nothing from it besides that these people don't even care anymore. Everything is written in a "wishful" mode, even their goals.
You can just go to the next trash can, take an item and compare it with that. Unfortunately, you will have to realize that the item you just picked up was more useful to society than everything you'll read in these "answers".
https://ec.europa.eu/digital-single...
They basically dodge every single question vague to the point that someone as the amount of drugs these people take in order to think they are making realistic proposes.
"We aim to blah blah", "Our aim is blah blah", "We want to blah blah". Might as well sue me for copying their content in that paragraph.
If anybody ever tells you that you have unrealistic, stupid goals or dreams just remember: there's a whole continent lead by people who have no fucking idea what they are doing and still think they are doing a good job. And because they have no idea what they are doing they just offload all the work to companies.
Plattform: Ok, what do we have to do?
EU: lol, just "put in place, in collaboration with right holders, adequate and proportionate technical measures." (#2 P4)
Plattform: can you be a bit more specific?
EU: Look, this proposal just "requires platforms which store and provide access to large amounts of copyright-protected content uploaded by their users to put in place effective and proportionate measures." It's not that hard to understand, you dummy (#3 P3)
Plattform: So we need to monitor all user-generated content?
Eu: are you stupid or something? You "would not have to actively monitor all the content uploaded by users", just the copyrighted content. (#4 P1)
The rest is more or less the same, just them imagining the outcome, without taking turning on their decomposed brains in order to apply common sense.
Jumping off this "union" seems be pretty lucrative 🤔1 -
!rant && story
tl;dr I lost my path, learned to a lot about linux and found true love.
So because of the recent news about wpa2, I thought about learning to do some things network penetration with kali. My roommate and I took an old 8gb usb and turned it into a bootable usb with persistent storage. Maybe not the best choice, but atleast we know how to do that now.
Anyway, we started with a kali.iso from 2015, because we thought it would be faster than downloading it with a 150kpbs connection. Learned a lot from that mistake while waiting apt-get update/upgrade.
Next day I got access to some faster connection, downloaded a new release build and put the 2015 version out it's misery. Finally some signs of progress. But that was not enough. We wanted more. We (well atleast I) wanted to try i3, because one of my friends showed me to /r/unixporn (btw, pornhub is deprecated now). So after researching what i3 is, what a wm is AND what a dm is, we replaced gdm3 with lightdm and set i3 as standard wm. With the user guide on an other screen we started playing with i3. Apparently heaven is written with two characters only. Now I want to free myself from windows and have linux (Maybe arch) as my main system, but for now we continue to use thus kali usb to learn about how to set uo a nice desktop environment. Wait, why did we choose to install kali? 😂
I feel kinda sorry for that, but I want to experiment on there before until I feel confident. (Please hit me up with tips about i3)
Still gotta use Windows as a subsystem for gaming. 😥3 -
So, my favourite language is Python, and for web developing I use Pyramid, and to stay in my "comfort zone" I use brython for client scripting, don't take me wrong, I love javascript, but for just a bit of performance lost I like being able to use all my pre-existing python code if I need to...
So, this was my first work experience, for a military industry, we had to make a service for uploading big files and sending them via email.
I heard one thing that shot me out of my "comfort zone" (I'll call it cf from now on)... "Use php"...
So, I already had written in php and I've always disliked it, perl-ish and broken as a bethesda game (i like bethesda games, but they are broken)
Another thing: javascript vanilla or jquery, never liked jquery either, so I decided to use vanilla js...
So, after 6 months of work, my partner and I finished it...
Well, more than one year later that mess we had to make to satisfy our boss' most absurd desires is not online yet, I search it on google every month, so yeah, 6 months of my life wasted (also, it was a "stage", so not only I didn't get any recognition, but they didn't give me any money) -
DO NOT EXPORT GPG KEYS _TEMPORARILY_ AND ASSUME THAT THEY'LL BE IN THE ORIGINAL LOCATION AFTER EXPORT!
I learnt this lesson the hard way.
I had to use a GPG key from my personal keyring on a different machine ( that I control ). This was a temporary one-time operation so I thought I might be a smart-ass and do the decryption on the fly.
So, the idiotic me directly piped the output : `gpg --export-secret-key | scp ...`. Very cool ( at the time ). Everything worked as expected. I was happy. I went to bed.
In the morning, I had to use the same key on the original machine for the normal purpose I'd use it for and guess what greeted me? - *No secret key*
*me exclaims* : What the actual f**k?!
More than half a day of researching on the internet and various trials-and-errors ( I didn't even do any work for my employer ), I finally gave up trying to retrieve / recover the lost secret key that was never written to a file.
Well, to be fair, it was imported into a temporary keyring on the second machine, but that was deleted immediately after use. Because I *thought* that the original secret key was still in my original keyring.
More idiotic was the fact that I'd been completely ignorant of the option called `--list-secret-keys` even after using GPG for many years now. My test to confirm whether the key was still in place was `--list-keys` which even now lists the user ID. Alas, now without a secret key to do anything meaningful really.
Here I am, with my face in my hands, shaking my head and almost crying.5 -
We use a open-source business management software (incl. crm, e-commerce, billing, accounting, warehouse, ...) that is highly customizable.
Previously we had "Company A" that customized it for my company. It was very expensive so they hired something to do the same but cheaper & inhouse. The codebase that "Company A" has written was terrible (confirmed by CTO & the new colleague").
Then the CFO wanted functionality A. Colleague said that this will take 2 weeks to implement. One week later, it was no longer needed & functionality B was now mandatory. Rinse & Repeat.
The CFO: "Why is nothing ever gonna get finished" or "why is the quality so bad?"
So they hired another person for the same position. This person has more experience so it costs them a lot more... And suddenly, everything works well
They contacted a few months later a consultant that analyzed the company. The consultant asked (for good reason) why such a small company has 2 people maintaining the in-house BM software. And suddenly, they wanted to get rid of the worst person. <enter my previous rant>
He is thrown out. Now the head of Operations wants to remove that software because it was not "sexy" enough (her words). So they introduced a glorified spreadsheet with less functionality. That new colleague was offered to take the lead on that project... And thus he fled to another company.
That project failed and now everyone is fired... And they hired back "Company A" to maintain that BM project.4 -
So I figure since I straight up don't care about the Ada community anymore, and my programming focus is languages and language tooling, I'd rant a bit about some stupid things the language did. Necessary disclaimer though, I still really like the language, I just take issue with defense of things that are straight up bad. Just admit at the time it was good, but in hindsight it wasn't. That's okay.
For the many of you unfamiliar, Ada is a high security / mission critical focused language designed in the 80's. So you'd expect it to be pretty damn resilient.
Inheritance is implemented through "tagged records" rather than contained in classes, but dispatching basically works as you'd expect. Only problem is, there's no sealing of these types. So you, always, have to design everything with the assumption that someone can inherit from your type and manipulate it. There's also limited accessibility modifiers and it's not granular, so if you inherit from the type you have access to _everything_ as if they were all protected/friend.
Switch/case statements are only checked that all valid values are handled. Read that carefully. All _valid_ values are handled. You don't need a "default" (what Ada calls "when others" ). Unchecked conversions, view overlays, deserialization, and more can introduce invalid values. The default case is meant to handle this, but Ada just goes "nah you're good bro, you handled everything you said would be passed to me".
Like I alluded to earlier, there's limited accessibility modifiers. It uses sections, which is fine, but not my preference. But it also only has three options and it's bizarre. One is publicly in the specification, just like "public" normally. One is in the "private" part of the specification, but this is actually just "protected/friend". And one is in the implementation, which is the actual" private". Now Ada doesn't use classes, so the accessibility blocks are in the package (namespace). So guess what? Everything in your type has exactly the same visibility! Better hope people don't modify things you wanted to keep hidden.
That brings me to another bad decision. There is no "read-only" protection. Granted this is only a compiler check and can be bypassed, but it still helps prevent a lot of errors. There is const and it works well, better than in most languages I feel. But if you want a field within a record to not be changeable? Yeah too bad.
And if you think properties could fix this? Yeah no. Transparent functions that do validation on superficial fields? Nah.
The community loves to praise the language for being highly resilient and "for serious engineers", but oh my god. These are awful decisions.
Now again there's a lot of reasons why I still like the language, but holy shit does it scare me when I see things like an auto maker switching over to it.
The leading Ada compiler is literally the buggiest compiler I've ever used in my life. The leading Ada IDE is literally the buggiest IDE I've ever used in my life. And they are written in Ada.
Side note: good resilient systems are a byproduct of knowledge, diligence, and discipline, not the tool you used. -
I'm at my Community College as a member of the engineering club requesting funds for a software and hardware-related physical project.
The code was mostly pre-written in Python from a university already, but we needed to build essentially a gaming-level PC to run it, do some welding and metalwork for the hardware, cables, et citera. I don't want to get too detailed in case anyone involved is reading this story.
To get funding, we needed to go before the student senate. I didn't go the first time, but later when we needed more funding for the project to do expansions, we attended.
I came in with a few pages of documentation explaining how the project operated, it's scope, and why we needed the additional $500 on top of the previous $1000 or so spent. I went in woefully behind the times on what a student senate meeting was like.
For starters, I thought this would be somewhat formal, being "Student Senate" in Week 8, and prepared to defend my project fully. Instead, we spent the first 15 minutes going around the table explaining what animal we would be and why, if we had to turn into an animal. It just kept going hilariously, painfully downhill from there.
They did ask some questions about what my project was and how it operated (as not many had seen it), and they wanted explanations even though it was clear absolutely nobody else in the room understood anything. My partner virtually shut down and let me do all the talking for my project and his because he couldn't take the ignorance of some of the questions and the assorted nonsense spread throughout the meeting.
Amazingly, we got funding. We had to sit for the rest of the meeting though, which (among other things) included a segment about whether we should create a new committee called the "Fundamental Insecurities committee" to help out with, well, "Fundamental Insecurities." There was only one member on this proposed committee.
When I brought up the question on why we were making a one-person committee alongside the, like, three one-person committees already in existence, they congratulated me for asking good questions and said I should come more often. They then said the exact same thing again when I pointed out there were better names than "Fundamental Insecurities." It's such a reality check that you are trying to impress people to get funding, when you can't help but feel that everyone is an utter idiot in the back of your head.
Almost a year later, I had to go back with a list of parts we needed. I wrote a whole complex list of things we needed for the project. Even though they tried to ask questions about what certain parts were (to appear like they weren't totally incompetent), and despite asking questions about a bunch of the items, nobody cared about what the $10 for "C418" was (google it if you don't get this joke). I spent about 30 minutes talking with them and succeeded in getting $600 more in funding. We then, to my surprise, spent less than 5 minutes debating whether to send 2 students on a field trip for $700. 30 minutes for $600, for a permanently installed project. <5 minutes for a $700 one-time thing.
And, because this is already a long rant, here's one more thing: The Student Senate's voting rules initially gave everyone who showed up 1 vote. We're all students, we all get a say, right?
Well, I soon put together that Student Senate had fairly low attendance. Engineering Club had high attendance. Student Senate and Engineering Club took place at the same date and time. I then, of course, asked why we couldn't bring the whole Engineering Club into Senate one day, and then proceed to pass an order by simple majority saying that all Student Life funding goes to us.
They then said that the administrators (the heads of Student Senate) could override that, but I pointed out that kind of defeats the purpose of voting in the first place. They then switched script and said they wouldn't do that and would honor such a vote. Shortly after, they changed the rules saying that you only get a vote on your 2nd consecutive visit; and again said I should visit more often because I was brilliant.
You can't make this stuff up.3 -
I actually do have something to rant about!
The people I've decided to work with... are complete and utter fools. They don't want to keep updated with new practices and merely talk about awesome stuff... Let me elaborate.
The first person is someone I spent really many hours just writing with, I've helped him build on his personal project, which has now become our project (which I've done most of the work on now). He keeps writing about things that aren't fucking relevant for the current task - furthermore, he completely refuses to use any type of collaboration software in order to keep an eye on tasks we want to, and already have completed. He likes Git but doesn't provide helpful git messages, sometimes even stuff like 'forgot this'.. never any freaking description of what's actually been done! Not even after agreeing it should be done, he just doesn't understand what a helpful message is apparently.
I might be a bit special regarding wanting to follow practices, but how the fuck do you make any amount of money by being so ignorant!? He was a WP 'developer' a while ago, and has since changed to JS and are using a framework which he doesn't understand - he can't even remember what the documentation states.
So why do I 'work' with him? He knows a lot of phrases he's read in books, blogs, and the likes. That makes him really inspirational and positive and he really wants to become successful(like me!). But over the last few months, I've realized how bad he is at programming - he doesn't know basic programming concepts and have a hard time applying any sort of knowledge to his programming. If it's not pre-built, he can't use it, not even if the documentation has specific examples. He barely grasps the concept of binding data to a variable. He wouldn't know how to access it again though, it's just for the sake of binding it to some existing functionality.
The other guy really likes his old style. He hired me to maintain some application. Which has turned out to be a hell of several small tasks he needs to be finished or reworked - with no clear definition of the task. Most of the time, he'll do some initial changes, show the changes to me, vaguely explain what they do (not what he's trying to achieve) and first THEN ask me to do these changes, most often in some files that don't exist (he uses the wrong filenames so I have to guess/ask where the changes need to be made).
To top it all off, old syntax is used and don't get me started on the spaces+tabs for indenting lines... Because I've already added a great ESLint+Prettier conf and everything should be nicely formatted according to pre-defined rules.
But he won't take the time to install some plugins in his editor and I'm left with sometimes buggy, badly formatted code (the code I have to make changes with!) - that's while he several times have agreed that I can do what I want and that he even questions his own ways when looking at my changes which he calls by-the-book.
So why the motherfucking fuck do I keep working with him?
Well, he keeps paying so that's really nice - I haven't been able to properly execute the bigger tasks(which pays more) though, due to a lack of information or some badly written code I couldn't quite figure out how works (at a glance).
He also keeps talking about these new projects he wants to make.. he even has these freaking papers with descriptions and data-structures and we converse really good about these new awesome projects. He also likes cryptocurrencies(which is an interest of mine he has inflamed quite a bit) and lastly, he seems like a genuinely nice guy who I'd like to spend some time with even besides coding and work.
So now I stand here - stuck with people that make me feel like a demi-god or something because I use a git style-guide and ESLint+Prettier with the Airbnb style-guide.
What should I do? I'd really like some remote work and have a desperate need for money... So much so, that I might even have to pick up a fulltime job, in order to save my sorry ass - all because I like speaking with people who just like the thought of programming...
I'm actually quite lonely with my thoughts and they are the two only people I've had some sort of relationship with - who has an invested interest in programming/dev... I really like that, despite having to follow their thoughts as they surely can't follow mine.
Please be my friend or give me some paid work lol.
Also, I've been moving the last couple weeks - those weeks has been the most stressful of my life and have not contributed to my overall wellbeing and relations with people... It's good to be back at the computer again and be reading some devRant though!1 -
Well, this happens time to time...
I'm freelancing as a backend guy. I like to take care of all infrastructure before really starting to build anything, this mostly includes dev/staging/prod environments with some linear promotion strategy. So.. I did this API. Still on staging, proceeding with the development as planned, everything goes according the timeline.
And then.. this happens... At some point PM told frontend guy that it's time for production (without notifying me), so the frontend guy does what "anyone" would do in this case - tells PM to create DNS record for production to point to staging app.
Time passes, I'm still unaware of this. But I'm starting to see some quality entries in the DB, not the usual QA crap. I write to them that they're doing good job and continue with my tasks.
One of the tasks required some major DB change. I could've written migrations script, but since we're not in "production" yet, I just wipe the DB and recreate schema as I need it.
In 10 minutes the furious PM starts shouting that "production" is down and I need to fix it ASAP.
I'm lost, I'm asking questions, I'm slowly understanding what's happening...
So I want to grab some coffee, sat back down, wrote politely that they suck, added a finger emoji and terminated the contract.
Felt like the right thing to do as I definitely don't want to continue within the same "team".1 -
Just happened 4 days ago.
I was writing a thesis and at the same time creating a tool which automates my measurements.
It was written in Python and everything worked very well.
Of course I left it to my advisor for further measurement, telling him that if he want to measure multiple times he just need to loop over the measure-function.
I left him an example-file which looked a little like this:
example.py:
"""
import measurement_class
# Parameters
if __name__ "__main__":
m_class = measurement_class.coordinator(#Parameters)
m_class.measure(#someotherparameters)
"""
So after a few weeks I came back to my advisor (four days ago) to see this:
loop_over.py:
"""
import os
for _ in range(0,100):
os.system("python3 example.py")
"""
I'm not sure how I should feel about it...2 -
I've had this idea for some time now. How about a website that gathers some of the most well written open-source code and allows you to easily read it for educational purposes? Everyone says that reading source code can be a great learning tool but directly jumping into github is not very friendly to newcomers. I saw what underscore.js has done with the annotated code link and I think it's great. What do you think?6
-
One responsibility of our team is general code QA for the entire dev department, DevMgr walks in our area yesterday…
DevMgr: “Has anyone reviewed the new WPF threaded model execution code?”
- everyone on the team responds “no”
DevMgr: “Can we get a review on that code ASAP? If it works as well as the developer said, it’s going to solve the lock up problems users are experiencing and automatic logging of errors.”
DevA: “Well, no amount of code is going to stop users from performing bad searches locking up the user-interface. That code is just a band-aid around the real problem. If the developers would write unit tests first …”
- rant about 5 minutes on unit testing that had nothing to do with why the DevMgr was here
DevB: “Yea, the code probably isn’t written to handle threads correctly. All the threading they’ve done so far is –bleep-”
DevMgr: “Oh, I wasn’t aware of that. Get me the results of the code review and if they don’t have unit tests, delete it from source control and let the developer know it’s not up to our standards.”
OMFG!! You have not even seen the code!
OK, DevA ..what the –bleep- does unit testing have anything to do with the user interface! You know the DevMgr is too dim to understand the separation of concerns. Shut your pompous ‘know-it-all’ mouth.
DevB…what the –bleep- have ever done in WPF? You manage the source control and haven’t written any C# in two years and never, ever written code for any significant project. Take that “handle threads correctly” and shove it up your –bleep-. Pompous –bleep-hole. Go back and watch youtube and read your twitter while the grown-ups get the work done.3 -
SCW (Secure Code Warrior) IS TOTAL, COMPLETE AND UTTER SHIT!
I keep finding outright and definite mistakes... for example: two solutions that are 100% identical - I copied and diff'd them to be sure I wasn't stoned... the code they show has ZERO comments, so you have ZERO context for anything (and it's written like shit on top of it - I'd fire a motherfucker if they turned in ridiculous crap like this regularly)... I've found answers where one is a subset of another so the "superset" answer should be considered correct as well, so you effectively have two right answers (in other words: this is one of those "you better pick the EXACT answer we WANT you to pick, even if another is TECHNICALLY correct too, doesn't matter, you gotta divine which WE say is right" situations)... there's not enough information given in some cases to even realistically attack the problem... and so on.
It's just fucking garbage, but now I HAVE to get a passing score on the fucking thing to meet a work requirement and you think anyone is going to give two shits if I point out the problems? Of COURSE not! Just need to check the box, so now I have to waste hours of my day fighting through this horseshit just to say I did it.
Is there any value in it? FUCK NO! It's actually NEGATIVE value since now I'm not doing what I'm actually paid to do.
And the worst part is I absolutely, 100% know all this shit! It's not like it's a problem because I fundamentally don't know the concepts. But because your platform is a joke it's making it a nightmare for me.
FUCK THIS SHIT! Friday is over early because of this, I'll bash my head against the wall again on Monday.2 -
Fuck I feel fucked up just for completing user account management, authentication, email verification, password reset. Securing all of this with ssl and checking for any security loopholes.
I can't believe this took me more than a couple months.
Well I was lazy and unmotivated.
I fucking hate crafting stupid ass routes in nginx.
I fucking hate making a nice responsive gui.
I have to design even the stupid html for the emails. Fuuuuck.
So much boilerplate on top of that with username and email validation.
I learnt regex 5 times over the past couple months, still not enough.
And now I actually have to build the functional part.
On the plus side I can reuse this stupid boilerplate if I can make it more modular and readable.
There's shit ton of comments to the point where I feel like an idiot for including so much info. It's like I've written it for a toddler to take over.
Gawd. Anyways it's over now. 50% I guess.
I can finish the rest of the server more quickly and then spend another year designing the Android application.
I'm really lazy in places where I have to design UI/UX. Although at this point it's kinda what could put my application at the top. (I'm lazy, I ain't bad.. I just hate implementing my ideas I wish I could just visualize and have it appear on my screen)
I do like parts of gui that involve little math problems that would make motion smooth and efficient. -
Started porting one application written in php to:
Golang(and some libraries to make certain sht simpler like GORM and Gorilla amongst a couple of others, most shit is STD shit already built in)
Java Spring(I know it well, but wanted to try this particular app in it, lots of boilerplate although the coded is solid AF)
.NET Core API, which I separated in a series of modules for the domain interface, the persistence logic, the actual api etc, I really dig it. It has a basic React frontend in Typescript whereas the other 2 versions are using the standard Go html/template package and the Twig interface for Spring.
My favorite thus far is Golang. I find it extremely easy to extend, the language reads good enough for a retard like myself to make sense of it fairly easy, really easy to test and experiment with it, any idea I get for something to add(say users and stuff) took me less than 30 mins to figure out while reading the actual documentation, as in the base documentation or just the source code.
I know the language is retard proof, and I am highly enjoying this. Not to say that the other two are bad, not at all, been using C# and Java for years now, but I highly appreciate being able to concentrate on functionality rather than all the fucking architectural boilerplate needed to run basic shit in the other two frameworks. Thus far Golang has been a breath of fresh air the likes Clojure gives me, while not even being a profound or mind blowing language in terms of features(since other than the interface{} and goroutines i can't think of shit) and have not reached a scenario in which I am stuck or dying to have generics one bit for the overall business logic.
The app is growing like crazy in terms of code since the original php application was huge to begin with, but dear me this shit is as simple as it can get without being too technical. Might move it to production once all usability tests pass and force the rest of the staff to learn it. I have one lead dev that damn near refuses to touch anything other than php, and a very eager to try shit out content administrator that comes from a Java and C# background.
all I want to say is how much I love go haha4 -
I like rants that are thought provoking and push a message forward regardless of whether they may sting a little, so for my first post on here I'd like to hit at home with many of you.
Html5 "Native" Applications are not needed. Let's cover mobile first of all, the misconception that apps are written in either javascript or Native android/ Native ios environment. Or even some third party paid tools like xamarin is quite strange to me. OpenGL ES is on both IOS and Android there is no difference. It's quite easy to write once run everywhere but with native performance and not having to jump through js when it's not needed. Personally I never want to see html or css if I'm working on a mobile app or desktop. Which brings me to desktop, I can't begin to describe how unthought out an electron app is. Memory usage, storage space for embedding chromium, web views gained at the expense of literally everything else, cross platform desktop development has been around for decades, openGL is everywhere enough said. Finally what about targeting browser if your writing a native app for mobile and desktop let's say in c++ and it's not in javascript how can it turn back into javascript, well luckily c++ has emscripten which does that simply put, or you could be using a cross complier language like haxe which is what I use. It benefits with type safety, while exporting both c++ and javascript code. Conclusion in reality I see the appeal to the js ecosystem it's large filled with big companies trying to make js cross development stronger every day. However development in my mind should be a series of choices, choices that are invisible don't help anyone, regardless of the popularity of the choice, or the skill required.8 -
Some time ago I shared a story about negotiating a raise. After that I talked with boss a bit longer and he gave me a new assignment which is not really dev-related. His logic was that I know Java so I should be able to do this since system I'm going to work with is written in Java. Yeah, right.
I have to configure document-flow system, eDok, for our client. I have absolutely no idea about all this document processing and such, but oh well. It's his money.
To do so, my boss bought an serwer with Ubuntu and our client has installed it. I finished a beta version of my last project and today had to start working on this eDok shit. I tried to log in, but nothing was working. From the logs it looks like HDD has failed.
Well, at least it has happened now and not after I've configured everything 😅 -
Been consulting a friendly acquaintance on technical issues for some time now. An interesting side project in a field that I am not familiar. Well after some time you begin to be well versed and understand what it's all about.
Wrote some code. Made a website. Did some soldering and prototyping. Now I find myself in a position where most of the IP is a) written by me b) designed by me.
An official agreement has been a topic couple of times. The owner wants to hire me, but I don't see myself working there. He offered shares. I said yes. But nothing has been formalized.
Now the the CEO sends me an NDA that practically tries to make me sign over all the IP to the company. First correspondence I get from him since the beginning. Legislation is quite clear. Without written agreement IP is owned by the creator.
I lolled. They must think I am dumb because I try to help. I feel a hefty invoice for services provided generating in my accounting.. -
Shit, I lost the rant again. Well let's begin from the top.
This is little bit personal but I'm not keeping any of this as a secret. I'm a hyperactive thinker at nights (ADHD). I must write this down, although it's well over middle-night at this point.
I just discovered that I might be better writer whilst I'm sleepy, hungry, out of affection of the meds or all of the above.
And may I remind you that I'm not a native English speaker or writer.
* Saved to clipboard, so I won't lose this again *
I've written now 2 long rants, 8 issue reports (devRant) and a loong collab posting in this one sitting, or rather laying. It feels like I'm writing perfectly without missing a beat. I know that's not right, it's the main symptom in ADHD; My brain is actually running slower than an average, much slower. That's a reasonable explanation for the “fast” innovation.
I'm running without restrictions of a normal human, I don't "overthink" every single word and rather go with the flow. That's what spell checkers are for.
* Save *
You can probably see what's happening. It's certainly also true when writing code. I left out the normal cleaning up (except for the grammar, found 10 errors).
It's pretty much the same thing as I'd imagine being drunk or even high.
I must not be the only one.
* Writing tags... *
* Update error count *
* Recover one part from memory *10 -
May's last week was very hectic. I had just finished my final exams and there were going to be semester project evaluations in that whole week.
@safiullah and me had decided to make a whole Social Network with all features in it, for the DB course project.
All other classmates were making small management systems like ticket booking and etc.
We thought that if we really wanted to learn DB concepts then we should come up with something different than a management panel.
Hence we did it. This was the first time we used a framework. Well, I had written that PHP framework while i was learning about how frameworks work and the way they are made. So it wasn't a big thing but it was something which could be used as a base for clean and organized code.
It took about a month of commits and pushes and it resulted in a very good social network. It had all the features and algorithms present in a starter social network.
For us students, we were happy to see what a fine job we had done. We learnt a lot and used new concepts.
When we went to the instructor, she asked us to sit down and show the project. @safiullah placed the laptop, and logged out from the social network so that he could show her a demo.
She exclaimed,"Why did you do it (Log out) ?"
He replied: "To show you how it works🤷🏻♂️"
She:"Get to the previous state and leave it"
Then she asked different questions like what was a post request in php and how it differed from get? what library for DB connection was used... etc.
We explained each and every step.
She saw the frontend design and said "You've just added text to the elements" as If we were showing her a theme demo with hard coded text accomplished by inspect element.
She did not take a look at any other page than the one we had shown her at start. She navigated to no other page and asked nothing about what total features were implemented and how they were done?
Then she said Thank You and we left.
After some days marks were uploaded in LMS and we were just two points above the average.
She took no look and gave us the least when our project was the best.
I'm 100 percent sure she thought that we were showing her a project copied from somewhere else. 🤣4 -
Soo I've written some python code to test things for my soon starting bachelor thesis. I work with a little robot car I share with other people and use 2 cameras on it. Today I make the extra effort to go to the lab to test my things as there were too many people busy with the available cars yesterday.
Set it all up with ROS and my project as per usual just to see whether python fucks me over again ... nothing, ok what a surprise.
Good part: my python code seems to work flawlessly
Bad part: cameras don't work, although they don't throw any errors. Quick check with rqt_image_view ... everything seems fucked up, but not broken. Cameras not accessible as they should be, only 1 view available instead of the normal million modes and a blank grey camera stream on the screen. But no errors, nothing.🙄😪
I also wanted to capture some footage to test at home, well that's gone to shit. Now I had to simulate that using my phone camera ... while crouching.
Fuck ... me.1 -
A bit late.. and not much about how to learn to code..but more of a figuring out if the kid has a right mind set to do so..
If the kid is not the type to question everything, not resourceful, not a logical/critical thinker, gives up easily and especially if not interested in how things work then being a dev is most probably not for them.. they can still persue coding, but it will end badly..
From my experience, people who have a better education than me, but lack those skills turned out to be a crappy dev.. not interested in the best tool to complete the tasks, just making 'something', adding more shit to the already shitty stack.. and being happy with that.. which of course is not the best way to do things around here..or in life!!
Soo.. if the kid shows all that and most importantly shows interest in learning to code.. throw him the java ultimate edition book and see what happens.. joke!
There are plenty of apps thath can get you started (tried mimo, but being devs yourself it's probably not so hard to check some out and weed out the bad ones) that explain simple logic and syntax.. there is w3schools that explains basics quite well and lets you tinker online with js and python..
so maybe show them these and see what happens.. If it will pick their interest, they will soon start to ask the right questions.. and you can go from there..
If the kids are not the 'evil spawns' of already dev parents or don't have crazy dev aunties and uncles, then they will have to work things out themselves or ask friends... or seek help online (the resourceful part comes here).. so google or any flavour of search engines is their friend..
Just hope they don't venture to stack overflow too soon or they will want to kill themselves /* a little joke, but also a bit true.. */
Anyhow, if the kid is exhibiting 'dev traits' it is not even a question how to introduce it to the coding.. they will find a way.. if not, do not force them to learn coding "because it's in and makes you a lot of moneyz"..
As with other things in life, do not force kids to do anything that you think will be best for them.. Point them in direction, show them how it might be fun and usefull, a little nudge in the right direction.. but do not force.. ever!!!
And also another thing to consider.. most of the documentation and code is written in english.. If they are not proficient, they will have a hard time learning, checking docs, finding answers.. so make sure they learn english first!!
Not just for coding, knowing english will help them in life in general. So maaaaybe force them to learn this a bit..
One day my husband came to me and asked me how he can learn.. and if it's too late for him to learn coding.. that he found some app and if I can take a look and tell him what I think, if it is an ok app to learn..
I was both flattered and stumped at the same time..
Explained to him that in my view, he is a bit old to start now, at least to be competitive on the market and to do this for a living, but if it interests him for som personal projects, why not.. you're never too old to start learning and finding a new hobby..
Anyhow, I've pointed out to him that he will have to better his english in order to be able to find the answers to questions and potential problems.. and that I'm happy to help where and when I can, but most of the job will be on him.
So yeah, showed him some tutorials, explained things a bit.. he soon lost interest after a week and was mindblown how I can do this every day..
And I think this is really how you should introduce coding to kids.. show them some easy tutorials, explain simple logic to them.. see how they react.. if they pick it up easily, show them something more advanced.. if they lose interest, let them be.
To sum up:
- check first if they really want to learn this or this is something they're forced to do (if latter everything you say is a waste of everybodys time)
- english is important
- asking questions (& questioning the code) is mandatory so don't be afraid to ask for help
- admitting not knowing something is the first step to learning
- learn to 'google' & weed out the crap
- documentation is your friend
- comments & docs sometimes lie, so use the force (go check the source)
- once you learn the basics its just a matter of language flavour..adjust some logic here, some sintax there..
- if you're stuck with a problem, try to see it from a different angle
- debugging is part of coder life, learn to 'love' it4 -
My work product: Or why I learned to get twitchy around Java...
I maintain a Java based test system, that tests a raster image processor. The client is a Java swing project that contains CORBA bindings to the internal API of the raster image processor. It also has custom written UI elements and duplicated functionality that became available in later versions of Java, but because some of the third party tools we use don't work with later versions of Java for some reason, it's not possible to upgrade Java to gain things as simple as recursive directory deletion, yes the version of Java we have to use does not support something as simple as that and custom code had to be written to support it.
Because of the requirement to build the API bindings along with the client the whole application must be built with the raster image processor build chain, which is a heavily customised jam build system. So an ant task calls out to execute a jam task and jam does about 90% of the heavy lifting.
In addition to the Java code there's code for interpreting PostScript files, as these can be used to alter the behaviour of the raster image processor during testing.
As if that weren't enough, there's a beanshell interface to allow users to script the test system, but none of the users know Java well enough to feel confident writing interpreted Java scripts (and that's too close to JavaScript for my comfort). I once tried swapping this out for the Rhino JavaScript interpreter and got all the verbal support in the world but no developer time to design an API that'd work for all the departments.
The server isn't much better though. It's a tomcat based application that was written by someone who had never built a tomcat application before, or any web application for that matter and uses raw SQL strings instead of an orm, it doesn't use MVC in any way, and insane amount of functionality is dumped into the jsp files.
It too interacts with a raster image processor to create difference masks of the output, running PostScript as needed. It spawns off multiple threads and can spend days processing hundreds of gigabytes of image output (depending on the size of the tests).
We're stuck on Tomcat seven because we can't upgrade beyond Java 6, which brings a whole manner of security issues, but that eager little Java updated will break the tool chain if it gets its way.
Between these two components we have the Java RMI server (sometimes) working to help generate image data on the client side before all images are pulled across a UNC network path onto the server that processes test jobs (in PDF format), by reading into the xref table of said PDF, finding the embedded image data (for our server consumed test files are just flate encoded TIFF files wrapped around just enough PDF to make them valid) and uses a tool to create a difference mask of two images.
This tool is very error prone, it can't difference images of different sizes, colour spaces, orientations or pixel depths, but it's the best we have.
The tool is installed in both the client and server if the client can generate images it'll query from the server which ones it needs to and if it can't the server will use the tool itself.
Our shells have custom profiles for linking to a whole manner of third party tools and libraries, including a link to visual studio 2005 (more indirectly related build dependencies), the whole profile has to ensure that absolutely no operating system pollution gets into the shell, most of our apps are installed in our home directories and we have to ensure our paths are correct for every single application we add.
And... Fucking and!
Most of the tools are stored as source bundles in a version control system... Not got or mercurial, not perforce or svn, not even CVS... They use a custom built version control system that is built on top of RCS, it keeps a central database of locked files (using soft and hard locks along with write protecting the files in the file system) to ensure users can't get merge conflicts by preventing other users from writing to the files at all.
Branching is heavy weight and can take the best part of a day to create a new branch and populate the history.
Gathering the tools alone to build the Dev environment to build my project takes the best part of a week.
What should be a joy come hardware refresh year becomes a curse ("Well fuck, now I loose a week spending it setting up the Dev environment on ANOTHER machine").
Needless to say, I enjoy NOT working with Java. A lot of this isn't Javas fault, but there's a lot of things that Java (specifically the Java 6 version we're stuck on) does not make easy.
This is why I prefer to build my web apps in python or node, hell, I'd even take Lua... Just... Compiling web pages into executable Java classes, why? I mean I understand the implementation of how this happens, but why did my predecessor have to choose this? Why?2 -
Like 4 years ago I worked in a company as IT that used a windows desktop app with SQL Server 2008 (yep that old) to manage their sales, this app was written in WPF, the app was good because it was customizable with reports
One day the boss wanted to keep extra some data in the customer invoice, so they contacted the app developers to add this data to the invoice, so they they did it, but it in their own way, because the didn't modify the app itself(even if it was an useful idea for the app and companies that use it) they just used other unused fields in the invoice to keep this data and one of the field that the boss was interested was currency rate, later I verified in the DB this rate was saved as string in the database
The boss was not interested in reports because he just wanted to test it first and let time to know what the boss will need in the reports, so at the of the year they will contact again the devs to talk about the reports
So is the end of that year and the boss contacted the devs to talk about the reports of the invoices using the currency rate, this rate was just printed in the invoice nothing more, that's what the boss wanted that's what's the devs did, but when asked to do the reports they said they could'nt because the data was saved as string in the DB o_O
Well, that was one the most stupid excuses I ever heard...
So I started to digging on it and I found why... and the reason is that they were just lazy, at the end I did it but it took some work and the main the problem was that the rate was saved like this 1,01 here we use comma for decimal separator but in SQL you must use the dot (.) as decimal separator like this 1.01, also there was a problem with exact numbers, for example if the rate was exactly 1, that data must be saved just 1 in the field, but it was saved as 1,00 so not just replace all the commas with dots, it's also delete all ,00 and with all that I did the reports for my boss and everyone was happy
Some programmers just want to do easy things... -
So first rant, here goes weirdness, and also lengthy rant
So in my company we have the hr and accounting managed by the same person which also deals with all things employee related and she had a need for a way to extract a birthday from, what is in our country the personal identification number, things go great i get a formula that performs parts of the magic up to the point where the first digit of the number dictates the gender and century to be used when forming the full year, mind you only the last two digits of the year are in plain within the id number so i thy a number of ideas. After bashing around google sheets for a while ( i've got open office installed and formulas don't export well to the excel that person uses but google sheets does so i built it there).
First idea : make a few conditionals to check for the value so we have 1 and 2 for 19th century, 3 and 4 for 18th century , 5 and 6 for 20th so i go ahead and write my conditions and they fail, all evaluates to false, it cascades through the else variants up to the last one so i'm wondering if the "if" itself doesn't support the or operator, seems it does, next i think it's the bloody condition written wrong so i reevaluate my logic in php in a test script, it works as intended, then i think ok not the right function called, let's see the docs, docs confirm i'm doing it right but what was wrong was the way i was getting that first number, using left seems to produce a string although the base thing is a number, now i start searching how i can cast it, like you would normaly do when the data type is fried, value function appears to be the solution but it isn't working....now i'm thinking "ok so i have a value and different things to print out so let's look for a switch, maybe it can understand that" switch function found under the form of choice, i get it sorted but am stuck wondering why the heck was the if and value combination not working.
Simple answer to that : value doesn't work well with function results, a known bug listed by someone in a comment, a comment i have failed to read for about 45 minutes of trying to understand.
All in all it worked well for the person asking for it so it's nice. -
Ticket: here's something wrong with the export of transactions, please check.
Very useful description, let me just go over this logic I've written months ago.
Yeah, I went extra sure that everything's right, besides the ones for created during the initial testing that we left. Took me a hell a long time to prove because there's such a vague description but ok.
Of course I have the time to make an eyecandy of an excel spreadsheet for you.
Only for you I'll also go and fix these entries manually. If you want me to do it so badly, I'll gladly do it.
Oh what, you're upset that I wasted 5h for this complete bullshit? Well fucking go and learn the database structure yourself then or get sued idk
Hope it was worth that 1€ difference the customer paid himself.
Not to mention that I also had to do an emergency setup to work from home because those people who are responsible for giving me an appointment for a covid test sure like to wait days after my sick leave is over. ffs, I just had a cold...
Also fuck all this bullshit mac software required to work in this network, half of this shit flat out requires you to use the same software and ofc it's all closed source to the point where I'd be glad to have an electron app for everything. -
If by coding style, you mean conventions and not design patterns, then I'm surprised no one has mentioned the official documentation nor the standard library of sorts. I'm relatively new in the industry but at least I'm quick to realize that every language/framework community tend to have their own preferred style; not a one-size-fits-all thing. And these preferences are usually set off by code samples from the official docs. This is true at least for the big communities where the official docs are well-written.
-
Hey guys, first time writing here.
Around 8 months ago I joined a local company, developing enterprise web apps. First time for me working in a "real" programming job: I've been making a living from little freelance projects, personal apps and private programming lessons for the past 10 years, while on the side I chased the indie game dev dream, with little success. Then, one day, realized I needed to confront myself with the reality of 'standard' business, where the majority of people work, or risk growing too old to find a stable job.
I was kinda excited at first, looking forward to learning from experienced professionals in a long-standing company that has been around for decades. In the past years I coded almost 100% solo, so I really wanted to learn some solid team practices, refine my automated testing skills, and so on. Also, good pay, flexible hours and team is cool.
Then... I actually went there.
At first, I thought it was me. I thought I couldn't understand the code because I was used reading only mine.
I thought that it was me, not knowing well enough the quirks of web development to understand how things worked.
I though I was too lazy - it was shocking to see how hard those guys worked: I saw one guy once who was basically coding with one hand, answering a mail with another, all while doing some technical assistance on the phone.
Then I started to realize.
All projects are a disorganized mess, not only the legacy ones - actually the "green" products are quite worse.
Dependency injection hell: it seems like half of the code has been written by a DI fanatic and the other half by an assembly nostalgic who doesn't really like this new hippy thing called "functions".
Architecture is so messed up there are methods several THOUSANDS of lines long, and for the love of god most people on the team don't really even know WHAT those methods are for, but they're so intertwined with the rest of the codebase no one ever dares to touch them.
No automated test whatsoever, and because of the aforementioned DI hell, it's freaking hard to configure a testing environment (I've been trying for two days during my days off, with almost no success).
Of course documentation is completely absent, specifications are spread around hundreds of mails and opaquely named files thrown around personal shared folders, remote archives, etc.
So I rolled my sleeves up and started crunching as the rest of the team. I tried to follow the boy-scout rule, when the time and scope allowed. But god, it's hard. I'm tired as fuck, I miss working on my projects, or at least something that's not a complete madness. And it's unbearable to manually validate everything (hundreds of edge cases) by hand.
And the rest of the team acts like it's all normal. They look so at ease in this mess. It's like seeing someone quietly sitting inside a house on fire doing their stuff like nothing special is going on.
Please tell me it's not this way everywhere. I want out of this. I also feel like I'm "spoiled", and I should just do like the others and accept the depressing reality of working with all of this. But inside me I don't want to. I developed a taste for clean, easy maintainable code and I don't want to give it up.3 -
Wanted to know what you guys think about "Dev" jobs that also include making slide shows and presentations?
Eg. Imagine working on an analysis engine. And just when the core functionality is working, your boss wants your team to make presentation for every client that it's going to be used for - using the raw data given by the engine.
Instead of maybe adding that function to the engine itself.
Suddenly your work is now 12+hours of MS office instead of 8 hours of coding.
And a year later. You have 10 unfinished skeleton code architectures, poorly documented and 90% of the test cases never written.
And most of the devs who were on the initial project have either left out of frustration or have been fired because apparently fresher's who can not code with a senior coder level proficiency is not performing well.9 -
It's a good intention if you want to separate your code in logical units and split it into multiple methods, but could you please stop handing the control flow through about 20 methods before even really starting with the actual logic? This mess is 10 times as long as it needs to be, because someone decided to make everything go through 10 "validate one little thing" methods for every method with actual logic!
Edit: DevRant didn't allow me to post first, now I've analysed the code a bit more and the control flow actually goes out of a specialised class into a generalised class and back (not by returning, but by calling the specialised class from the general one) and the parameter that says what specialised class to call gets written into a class variable, then read from there and passed as a method argument, then back into another class variable, then the code changes it up a bit as a local variable, then passses it as a method parameter again... First it seemed like it knew what class to call using black magic, but no, it actually just hid the fact really well that it did in fact pass the class reference through in multiple forms from beginning to end. -
Remember how I was - against all that was promised - assigned to a time-sensitive front-end (so definitely not my forté) project about a month ago? Remember how I struggled with the choices of how to go about it - switching from F# (Fable) to Rust (Yew) to eventually settling in with Vue and TS?
Yeah, I’m glad I went that way, even though there could’ve probably been better choices out there: my part is done now, even though it’s not quite prod ready yet (close tho), the team who’ll maintain it takes it over now, after I finish dealing with my current minor issue. And damn their front-end guy is GOOD. Makes me feel very inferior in that department. Well, I am. Back to back-end, thank you very much...
But I have an issue here, that bothers me. I’ve produced a codebase that’s obviously written on a tight schedule: no tests, no documentation, a few embarrassing hacks/workarounds and so forth. I actually feel bad for leaving it out of my hands to them in such a state...1 -
So I ran into a perplexing "issue" today at work and I'm hoping some of you here have had experience with this. I got a story-time from my coworker about the early days of my company's product that I work on and heard about why I was running into so much code that appeared to be written hastily (cause it was). Turns out during the hardware bring-up phase, they were moving so fast they had to turn on all sorts of low level drivers and get them working in the system within a matter of days, just to keep up with the hardware team. Now keep in mind, these aren't "trivial" peripherals like a UART. Apparently the Ethernet driver had a grand total of a week to go from nothing to something communicating. Now, I'm a completely self-taught embedded systems focused software engineer and got to where I am simply cause I freaking love embedded systems. It's the best. BUT, the path I took involved focusing on quality over quantity, simply because I learned very quickly that if I did not take the time to think about what I was doing, I would screw myself over. My entire motto in life is something to the effect of "If I'm going to do it, I'm going to do it to the best of my abilities." As such, I tend to be one of the more forward thinking engineers on my team despite relative to my very small amount of professional experience (essentially I screwed myself over on my projects waaaay too often in the past years and learned from it). But what I learned today slightly terrifies me and took me aback. I know full well that there is going to come a point in my career where I do not have the time to produce quality code and really think about what I am designing....and yet it STILL has to work. I'm even in the aerospace field where safety is critical! I had not even considered that to be a possibility. Ideally I would like to prepare now so that I can be effective when that time does come...Have any of you been on the other side of this? What was it like? How can I grow now to be better prepared and provide value to my company when those situations come about? I know this is going to be extremely uncomfortable for me, but c'est la vie.
TLDR: I'm personally driven to produce quality code, but heard a horror story today about having to produce tons of safety-critical code in a short time without time for design. Ensue existential crisis. Help! Suggestions for growth?!
Edit: Just so I'm clear, the code base is good. We do extensive testing (for lots of reasons), but it just wasn't up to my "personal standards".2 -
I have an interest in methods to make myself smarter. At times some ideas seem to be just out of my reach. I don't always know the reason why. Eventually with persistence I am able to figure things out. However, I always wonder if there are techniques to learn things faster, better, more completely, with less struggle, etc. Would being smarter help with this. I wondered, "Can I create a program/method to increase IQ through training?"
So I found an interesting book called "The Neuroscience of Intelligence" by Richard J. Haier.
Very quickly I was engrossed in this book. It is written in a very accessible way and slowly trickles in the jargon. The book is basically the culmination of 40 years of studying the subject. The main point of the book is: you cannot increase your IQ through techniques and tricks. The only realistic avenue for increasing IQ is through genetics. Your IQ is based upon nature, not nurture. This is a result of the data, not opinion. The writer of this book follows what the science is telling him. This was not what I wanted to hear. He also went on to explain that the statement "You can be whatever you want to be if you work hard enough." He said this is false. Some people, no matter how hard they try, will not be able to get past certain limitations in aptitude. This statement will probably make a lot of people mad, but the data led this researcher to this conclusion. Though I sense he found this disheartening (my opinion). I know I did.
So after reading this book over the weekend I am a bit perturbed that there are not recognizable techniques to increase IQ through mental exercises. Websites all over will say otherwise, but it isn't a thing.
What to do? I decided I am going to find ways to maximize my potential. I will create a set of mental exercises that help me use what I got to the full potential. I know when I see different ways to think about things I get a bit better at solving problems. So learning and experience is still a way to improve your intellect, if not IQ. If I feel like I have made progress in this endeavor I will definitely share.
If you have any interest in neuroscience then I recommend the book I read this weekend. It is very accessible for the reader not versed in the subject. I knew virtually nothing about the topic and now I feel I have a good grounding in the state of the art. It has some neat info on some potentially better approaches to AI as well.7 -
So, I’ve been given the task of sorting the security out in an application plugging the holes and whatnot as to be honest it’s shocking haha. It doesn’t help that we automate security audits but that’s a different rant for another day.
We’re using devise for authentication (rails standard, ♥️ devise), we have no password resets through the login page, it has to be manually reset by ringing support, why who knows, even though it’s built into the gem and we allow the user to login using an username instead of an email because for whatever reason someone thought it was a bright idea to not have the email field mandatory.
So I hop onto a call with the BAs, basically I go that we need to implement password resets into the login page so the user can do it themselves and also to cut down support calls a ticket is already in place for it. So I go through the standardised workflow for resetting a password. My manager goes.
“I don’t think this will be very secure”
Wait.. what. Have you never reset a password before? It’s following the same protocol as every other app.
We go back and fourth and I said I’ll get it checked with security just to keep him happy.
The issue mainly is well we can’t implement password resets due to 100s of users not having an email on there account.. 🙃 so before we push this change we need to try and notice all users to set a unique email.
Updated the tickets. All dandy.
Looking at the PRs to see what security things have been done if any and turns out one of the devs in India has just written a migration to add the same default email to every user that doesn’t have an email present and yep it got merged. So I go revert the change but talk about taking a “we don’t care about security approach”.
Eventually we want to have the user reset their passwords and login using their email and someone goes a head and does that. Not to mention the security risk.
Jesus Christ I wonder why I bother sometimes.2 -
I’m currently working 2 jobs with over 60 hour work weeks in addition to my own SaaS company.
One job is full-time 40 hours, where I am a mid level developer and I just do the waterfall of tickets that is assigned to me. This place is unorganized and has almost no communication within the team.
The second job I am the Senior Dev and project lead. It’s a contract position that I put 20+ hours in on the evenings and weekends. Agile methodology, with a modern tech stack and I promote excellent communication as well as documenting everything.
I’m in a unique position because I’m able to see these differences and compare them side by side. My full-time job doesn’t really know about the second job. I get my work done, and that’s all that matters. This place is a mess. The project lead (CTO) is a helicopter boss that sticks his nose up at any type of formal documentation and practices. No tests are written.. no SIPs or deployment docs.. no stand ups or anything. I must also mention this team has 5 developers and a QA.. my team is only 2 developers and a QA. We get through tickets much faster.. it helps when I go over every single ticket that is created and add requirements and images..
I guess my point is... I’m about to be a full-time contractor because I can’t take this unprofessionalism anymore.
Just because these formalities technical take longer. It does decrease actual time spent developing a project. Spending a couple of hours on tests and requirements can save you days of back and forth in the future. Not to mention... document.. everything.1 -
Ugh. So for one of my classes (Projects In Computer Science) we have to break up into groups; Around 4-6 people per group and build some software for different local companies in the city that I live in.
Well.... the company that my group chose is so damn frustrating. Essentially we are making a glorified Applicant Form system for their website (there's more to it than just that). So you would think that the company knew what sort of fields would be needed for these forms.... Well no, we are over a month into this project and still have barely began coding shit because they are so fucking slow to respond to our emails, don't pick up our calls, or put off doing absolutely anything related to our project! Our professor asked that we would have a written copy of the project requirements made and signed off by the client within the first 2 weeks of classes starting. Took them over a month to get around to that, and still even after signing off on the requirements said that they were missing key forms that we needed to account for... Its your damn fault for not telling us that. We completely wasted our time planning out the database and structuring the front-end/back-end to work for the forms they had given us, and now there's yet another one with inconsistent fields, meaning we need to rethink out most of our system to account for this data. We only have 3 months total, 1 which is already gone and practically wasted, and even still we don't have any sort of confirmation on what form fields we have to account for.
Fucking hell just spend a little bit of time for both our sake, and your own to get us the finalized forms fields and requirements for this project. Honestly at the rate things are going we probably wont be able to finish, which sucks ass since this project is perfect resume material.
Seriously this company desperately needs us to make them this program since their current system is absolute shit. They are literally getting a system that would cost upwards of $20,000 for free, yet they don't seem to care much that we probably wont be able to finish due to their faults. If we didn't have a time cap on this project I wouldn't really care, but the fact that we only have 3 months, plus school work in other classes, exams and a personal life, its making this project a lot more stressful than it needs to be.
Its not like we have a project manager either, so all the emailing and communication is being done by myself. Honest to god, all they have/had to do was sit down for 1 hour of time to decide what they all needed and we would probably have been able to finish this project.5 -
can't take this sh1t anymore, will start updating my CV today.
I have to steer wheels on this shitty php-related task with testing suites with latest guides written in 2014, code base of that suite got a shitton of changes.
When referring to original documentation and example that is not working and gives me loads of errors, community pricks just saying something like: don't use 6 year old tutorials!!! well, that is the latest I could find, so yeah -> basically go fuck yourself situation!
went alive from 1st part as I managed to make some hacky clusterfuck that works. now i had to switch library that has no documentation at all, has shitton of options and lattest update is like from 3 years ago, library that is connected had some breaking changes lately so to no surprise I can't get this shit to work!
Is whole php ecosystem just made of folks who simply doesn't give a fuck and latest knowledge update they had is like 4 years ago?
ofc I am excluding laravel community in this!2 -
I am the technical lead in a project which uses a C# based framework. It's a lot of drag and drop, and C# scripts can be embedded for fancy stuff.
Scripts in general are not hard to do, it's harder to understand the business rules rather than the code itself.
I got hired as a junior to build this project from scratch as an MVP, and we need another junior to add enhancements and minor changes required from our end users. Since management wants me to move on working on more mid-senior development stuff, I'm supposed to be only supervising the juniors work (in the hopes that one day they'll be able to work on their own).
We've had bad luck filling this position. Our last hire is a guy like 17 years older than me, supposedly with experience in said framework but OH DEAR GOD.
Fucktard can't understand requirements and corrections, isn't able to deliver a 20 line script without fucking up. I give him a list with 3 mistakes to fix and only fixes two, crap like that.
Now, hear me out, the mistakes are stuff like:
- Unused variables
- Confusing error messages
- Error messages written in spanglish (mix between Spanish and English, we're located in Latin America)
- Untested features, this is the worst of all.
You may say "but he's a junior", sure. But as I said, he supposedly has experience, more years in IT than me, and fine, you're allowed to fuck up a few times on your first tasks but not make the same mistakes over and over, specially since we've already sat down and addressed these issues in presence of the CTO.
Fuck this guy. I genuinely dislike him as a person also, he is from another latin country and we have some serious cultural differences. For instance, he insists on sucking your ass constantly, being overly well manered (we already saluted with the whole team at the daily stand up, stop saying hello, good day, regards in each of your fucking chat messages or task submissions), and other mannerisms that are hard to translate, but whatever, all of these attitudes are frowned upon here. They're not necessary, we just want to keep it simple, cordial and casual and see you deliver the crap that you're being paid for with a decent level of quality.
On Monday the CTO comes back from vacation, I'm looking forward to that meeting, gonna report his ass, there is evidence everywhere on our issue tracker.4 -
I tried to make some SP using the syntax and formatting that visual studio outputs when making a SSRS report. I thought it was nice.
It formats the code in a standard way and transforms stuff like "join" to "INNER JOIN" and "left join" to "LEFT OUTER JOIN ".
When the team reviewed the code they were like WTF?! This syntax is horrible, it can't be understood. You did this?
*Me with my red face*...
I just said. You know what? I am going to go back to the old school syntax if you prefer. I just thought it was better.
Yeah... You really should go back to old school syntax.
---
Keep in mind that the old school syntax is annoying to me... No formatting at all and basic instructions are not in larger upper case.
Anyway, I thought it was nice tbh. I still think it is. And it is definitely better to me in some way.
What bothers me most is that they want to improve their coding. They say they want to be more standard and it seems every time you want to make a change it's not a good idea because "everything is already written that way". And when you don't make a change, "you should have change it"... Well sorry I was just copying the old style.
Anyways , it's not that important. I do get their point. Sometimes.1 -
What is a open source project you can recommended looking at? I would like to go trough a project written in either C or Python to learn more about how bigger projects are managed and get used to understanding someone else's code.
I think those are both very important skills that I lack.
I was maybe thinking about git as I've heard it is well documented, but I'm not sure if it is easy enough to understand for me.2 -
Another consultant. He/she sends out meeting request about system X to me and a few other guys/girls. X is actually a, you know, global thing. It is well known but not incredibly famous but well known.
But she/he mispells it. It is not even close. So, he/she just guesses how it should be written. It is not a big thing. But I am truly interested, and a little worried, about how that kind of mind work. Is she/he convinced that that is how X should be written? I think not because X is not an actual word but just a product name. In this case the product name is synonymous with the company name. If you pronounce X as he/she has written it will just be distinctly different than the correct way of saying it.
So I got this meeting request in my calendar which just sits there in its erroneous way and it irritates me. Mostly, I am annoyed by the fact that he/she did not bother to look up the correct spelling. And it has now been a week or so and it has not been corrected so I must then conclude that he/she still is ignorant of X. Which leads me to the conclusion that he/she is not really that motivated.
I am perhaps a grumpy old developer but I do think I can spot incompetence a mile away nowadays. I’ve been at it for over 15 years now.1 -
This morning I found out that the code I wrote to convert json data to a new format in our DB was giving errors and a bunch of questions got saved with the wrong property. It was assumed when it was triaged with my boss that we would only see one key property so the code written by me so the code was aimed at that. Well some questions have multiple keys for no reason. They are mostly floating data that hasn't been wiped clean because the develop who wrote this use json data in psql with no validation or data cleaning. This edge case was also never caught on PR reviews and we got a pretty heavy review process. I'm not being blamed for it. Most of it I think all the devs feel bad we didn't catch this because it affected us greatly. I've been working all morning trying to resolve it with my boss and just now in the evening we stopped. I just feel like I'm not a good dev at all and just want advice on how to deal with situations like this. I'm a new dev and this is my first job I have held for almost a year2
-
"The Perils and Triumphs of Debugging: A Developer's Odyssey"
You know you're in for an adventurous coding session when you decide to dive headfirst into debugging. It's like setting sail on the tumultuous seas of code, not quite sure if you'll end up on the shores of success or stranded on the island of endless errors.
As a developer, I often find myself in this perilous predicament, armed with my trusty text editor and a cup of coffee, ready to conquer the bugs lurking in the shadows. The first line of code looks innocent enough, but little did I know that it was the calm before the storm.
The journey begins with that one cryptic error message that might as well be written in an ancient, forgotten language. It's a puzzle, a riddle, and a test of patience all rolled into one. You read it, re-read it, and then call over your colleague, hoping they possess the magical incantation to decipher it. Alas, they're just as clueless.
With each debugging attempt, you explore uncharted territories of your codebase, and every line feels like a step into the abyss. You question your life choices and wonder why you didn't become a chef instead. But then, as you unravel one issue, two more pop up like hydra heads. The sense of despair is palpable.
But, my fellow developers, there's a silver lining in this chaotic journey. The moment when you finally squash that bug is an unparalleled triumph. It's the victory music after a challenging boss fight, the "Eureka!" moment that echoes through the office, and the affirmation that, yes, you can tame this unruly beast we call code.
So, the next time you find yourself knee-deep in debugging hell, remember that you're not alone. We've all been there, and we've all emerged stronger, wiser, and maybe just a little crazier. Debugging is our odyssey, and every error is a dragon to be slain. Embrace the chaos, and may your code be ever bug-free!1 -
I have been working a part time paid internship for a few months and it’s not going well.
I’m applying and interviewing for full time but was lucky to pick up a paid internship to pay the bills. I’ve built and am currently updating a single side project for them but their lead developer works a full time job and tbh pretty sure doesn’t want to work with anyone so I can’t even get a list of dependencies or any instructions on how to run anything locally or really connect to the codebase. They also don’t really seem to care about the project as updates happens maybe one every few months. It’s written in a language and framework I’m unfamiliar with and falls outside of the scope of the documentation.
Currently spending hours a week trying to figure out this random codebase and as much as I would love to help the company if their main dev doesn’t want to assist I really can’t do much. Idk if this is a rant or what but this sucks, I legitimately like the owners but I’m afraid there not much I can do to assist or help.
On the other end I’m involved with some great open source teams that I’ve learned a bunch from and really appreciate. Ultimately I just wanna find somewhere accepting, I know I’m a novice and junior at best and need an environment that will help me grow not try to reinforce that doubt and make me feel bad.
TLDR;
Please be nice a receptive to Novices/Juniors who’s end up on your team we probably think you’re really cool and just want to help and we’re sorry for not being experts. 😕4 -
This is a continuation of my previous rant about admob being not very informative when it comes to invalid traffic and the resulting restriction in ad delivery.
I then wanted to use admob mediation to hang in facebook ads. My app is written with Xamarin.Forms.
So first I needed to make some facebook configuration - create an account, let my app review, create some ad placements and other shit. I came to the point where I had to put in a link to my privacy policy and the link could not be accepted due to some SSL fuckup -.-'
I then found out that there is an issue with my SSL Chain. With the help of whatsmychaincert.com I solved that issue. Little side note here: I have limited knowledge of that stuff and my cousin helped me set up my homepage so I had no idea what I was doing. Did a snapshot and luckily I did not needed that as everything worked :)
This took me around half an hour just so I can paste the fucking link to activate my app in facebook developer portal.
After that I made the whole mediation configuration shit - not an issue as google documented this quite well but it took some time.
Now comes the shitty part. To use admob mediation you need adapters to the other ad network. I found a nuget package with exactly what I needed just to find out that it is outdated. So I pulled the repo and saw that this thing is an aar binding library. Never did that stuff so I read some docs again. Updated the package and consumed it in my app.
The google docs then said "Use this mediation test shit to check if you did everything correct before going prod" - aar binding nr. 2 (but I am now familiar with that :P). This thing then told me that facebook ads could not be loaded because the SDK version is outdated -.-' SDK version comes from another nuget package which is referenced by the first aar thingie. I tracked that thing back to a repo where I found out that they are indeed totally behind. So I downloaded the aar, made a binding lib and bound that to my first aar binding lib as that depends on this.
Put that all back in my app - tested mediation and fucking finally after 6 hours everything comes together! all lights are green and things work.
Sorry if this is not quite a rant but it was quite a journey and I just had to share it. -
Just wanted to do some scripted image resizing for school in school because the teacher asked me to help her with that.
So I thought: Let's just write a tiny script. Written the script in almost no time (just iterates over all jpg's and resizes them)
30sec.
Now I tried to run it. Didn't have my laptop so I had to somehow run it on their windows PCs. At least it's windows 10, unlike other schools that still run XP and stuff so I thought it might be doable. Well guess what, nope it wasn't.
First tried to install imagemagick, that didn't work as only teacher accounts have admin and the teacher was already pretty scarred once he saw me doing stuff in powershell so I thought I'd better not ask to do this via a teacher account and mess with stuff as admin.
Next method: Installing msys2. That worked at least (after taking forever to install and having to mess with the av software to get it to run).
And there comes the next problem: pacman doesn't connect via the proxy so I can't download any packages. There is free wifi but only for teachers, and students aren't going to get access until the school finally has a faster connection because they'd (understandably) cause this connection to be constantly overloaded. I just happen to have access to this wifi network, too, because at least the guys from the IT dept know how bad using proxies under linux is. So I connect via wifi and it works. At least I thought: After running the script it yields weird errors about unsupported arguments even though the command is exactly the same I have been using for years (already checked typos twice)
Then got the idea of simply installing imagemagick on termux on android and transferring the files onto my phone.
Too bad we aren't allowed to attach our own USBs to the pcs. Luckily I got a rooted phone so I simply activate adb over network and connect to it.
After downloading the platform-tools I can't run them because of AV software. Luckily there is an option to add an exception per executable so I do that. After doing that it works.... nope it doesn't. The wifi only allows 443/tcp and 80/tcp, even for internal network devices.
So that's it. I'm simply going to upload that stuff to my nextcloud and convert it at home.
Windows, I hate you!!!2 -
Recently, Apple rolled out Push Notifications for PWA websites as a beta feature on iOS 16.4 devices. And let me tell you, it's a game-changer! But, when a client asked me to implement push notifications for their iOS users via web and service worker, I knew it wouldn't be a walk in the park.
Why, you ask? Well, their backend code base was written in Plain F*cking Vanilla PHP, which felt like I had time-traveled back to the 1980s! Plus, since the ios web push feature is still in its early stages, there were hardly any resources to guide me through the process of sending push notifications to Apple WebPush API using plain php.
Despite the obstacles, I managed to successfully send notifications to Mozilla and Google Chrome users. But Safari? Not so much. The client needed the task done within 24 hours, but due to delays, it ended up taking me three days to figure out the kinks. In the end, I had to refund the client, but I'm not one to give up easily.
In fact, I've created a public GitHub repo for a Quotes App in Flutter (https://github.com/GiddyNaya/...) that can send PN to iOS users via web. I'm diving down the rabbit hole to figure out how to make it work seamlessly, and I won't stop until I've cracked the code. Wish me luck!15 -
!rant
Thanks to the urllib documentation wich I find well written in opposition to the Beautifulsoup one
My script finally fucking WORKS
Not a rant sorry but I'm so glad I can finally sleep better thanks to it that I had to mention it -
Rubber ducking your ass in a way, I figure things out as I rant and have to explain my reasoning or lack thereof every other sentence.
So lettuce harvest some more: I did not finish the linker as I initially planned, because I found a dumber way to solve the problem. I'm storing programs as bytecode chunks broken up into segment trees, and this is how we get namespaces, as each segment and value is labeled -- you can very well think of it as a file structure.
Each file proper, that is, every path you pass to the compiler, has it's own segment tree that results from breaking down the code within. We call this a clan, because it's a family of data, structures and procedures. It's a bit stupid not to call it "class", but that would imply each file can have only one class, which is generally good style but still technically not the case, hence the deliberate use of another word.
Anyway, because every clan is already represented as a tree, we can easily have two or more coexist by just parenting them as-is to a common root, enabling the fetching of symbols from one clan to another. We then perform a cannonical walk of the unified tree, push instructions to an assembly queue, and flatten the segmented memory into a single pool onto which we write the assembler's output.
I didn't think this would work, but it does. So how?
The assembly queue uses a highly sophisticated crackhead abstraction of the CVYC clan, or said plainly, clairvoyant code of the "fucked if I thought this would be simple" family. Fundamentally, every element in the queue is -- recursively -- either a fixed value or a function pointer plus arguments. So every instruction takes the form (ins (arg[0],arg[N])) where the instruction and the arguments may themselves be either fixed or indirect fetches that must be solved but in the ~ F U T U R E ~
Thusly, the assembler must be made aware of the fact that it's wearing sunglasses indoors and high on cocaine, so that these pointers -- and the accompanying arguments -- can be solved. However, your hemorroids are great, and sitting may be painful for long, hard times to come, because to even try and do this kind of John Connor solving pinky promises that loop on themselves is slowly reducing my sanity.
But minor time travel paradoxes aside, this allows for all existing symbols to be fetched at the time of assembly no matter where exactly in memory they reside; even if the namespace is mutated, and so the symbol duplicated, we can still modify the original symbol at the time of duplication to re-route fetchers to it's new location. And so the madness begins.
Effectively, our code can see the future, and it is not pleased with your test results. But enough about you being a disappointment to an equally misconstructed institution -- we are vermin of science, now stand still while I smack you with this Bible.
But seriously now, what I'm trying to say is that linking is not required as a separate step as a result of all this unintelligible fuckery; all the information required to access a file is the segment tree itself, so linking is appending trees to a new root, and a tree written to disk is essentially a linkable object file.
Mission accomplished... ? Perhaps.
This very much closes the chapter on *virtual* programs, that is, anything running on the VM. We're still lacking translation to native code, and that's an entirely different topic. Luckily, the language is pretty fucking close to assembler, so the translation may actually not be all that complicated.
But that is a story for another day, kids.
And now, a word from our sponsor:
<ad> Whoa, hold on there, crystal ball. It's clear to any tzaddiq that only prophets can prophecise, but if you are but a lowly goblinoid emperor of rectal pleasure, the simple truths can become very hard to grasp. How can one manage non-intertwining affairs in their professional and private lives while ALSO compulsively juggling nuts?
Enter: Testament, the gapp that will take your gonad-swallowing virtue to the next level. Ever felt like sucking on a hairy ballsack during office hours? We got you covered. With our state of the art cognitive implants, tracking devices and macumbeiras, you will be able to RIP your way into ultimate scrotolingual pleasure in no time!
Utilizing a highly elaborated process that combines illegal substances with the most forbidden schools of blood magic, we are able to [EXTREMELY CENSORED HERETICAL CONTENT] inside of your MATER with pinpoint accuracy! You shall be reformed in a parallel plane of existence, void of all that was your very being, just to suck on nads!
Just insert the ritual blade into your own testicles and let the spectral dance begin. Try Testament TODAY and use my promo code FIRSTBORNSFIRSTNUT for 20% OFF in your purchase of eternal damnation. Big ups to Testament for sponsoring DEEZ rant.3 -
Currently debugging a project that was written over 4 years ago...
At first all was well in the world, besides the ever present issue off our goddamn legacy framework. This framework was written 7 years ago on top of an existing open source one, because the existing one was 'lacking some features' & 'did not feel right'.
Now those might be perfectly fine reasons to write a layer on top of a framework, but please, for all future devs sanities, write fucking documentation and maintain it if you're going to use said framework in all major projects!!
Anyhow back to the situation at hand, I'm getting familiar with the project, sighing at the use of our stupid legacy framework, attempting to recreate the reported bugs...
Turns out I can't, well I get other bugs & errors, but not the reported ones. I go to the production server, where I suddenly do can reproduce them...
Already thinking, fuck my life, and scared for the results... I try a 'git status' on the production server....
And yep, there it is, lo and behold, fucking changes on production, that are not in git, fuck you previous dev who worked on this and your stupid lazy ass modifcations on production!
Bleh, already feeling royally pissed, there's only 1 thing I can do, push changes back to git in a seperate branch, and pray I can merge them back in master on my dev environment without to much issues...
Only I first have to get our sysadmi. to allow pushing from a production server back to our git server...
Sigh, going to put on my headphones, retreat to my me space and try to sort out this shitpile now... -
I implore ANYONE... please...
Have you EVER written a SINGLE Jest test that didn't have some sort of bullshit spewing stuff like this:
"ReferenceError: You are trying to `import` a file after the Jest environment has been torn down."
"Warning: React.createElement: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: object. You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports."
and yet running on a device, features work flawlessly and quite well, no errors or even warnings in sight logged
This is the most fragile pile of garbage I have ever seen.
I hate this.
inb4 your stupid ass todo boilerplate garbage you wrote tests for in freshman year. i'm talking about a REAL app with HUNDREDS of components.
where the grownup testing tools at? it's a question I've still not answered after a year of fucking around with this framework1 -
A clever code that works but is difficult to understand or a well written commented code that’s easy to understand but does not work ?
Comment below:9 -
i am feeling angry and frustrated. not sure if it's a person ,or codebase or this bloody job. i have been into the company for 8 months and i feel like someone taking a lot of load while not getting enough team support to do it or any appreciation if i do it right.
i am not a senior by designation, but i do think my manager and my seniors have got their work easy when they see my work . like for eg, if on first release, they told me that i have to update unit tests and documentation, then on every subsequent release i did them by default and mentioning that with a small tick .
but they sure as hell don't make my work easy for me. their codebase is shitty and they don't give me KT, rather expect me to read everything on my own, understand on my own and then do everything on my own, then raise a pr , then merge that pr (once reviewed) , then create a release, then update the docs and finally publish the release and send the notification to the team
well fine, as a beginner dev, i think that's a good exercise, but if not in the coding step, their intervention would be needed in other steps like reviewing merging and releasing. but for those steps they again cause unnecessary delay. my senior is so shitty guy, he will just reply to any of my message after 2-3 hours
and his pr review process is also frustrating. he will keep me on call while reviewing each and every file of my pr and then suggest changes. that's good i guess, but why tf do you need to suggest something every fucking time? if i am doing such a shitty coding that you want me to redo some approach that i thought was correct , why don't you intervene beforehand? when i was messaging you for advice and when you ignored me for 3 hours? another eg : check my comment on root's rant https://devrant.com/rants/5845126/ (am talking about my tl there but he's also similar)
the tasks they give are also very frustrating. i am an android dev by profession, my previous company was a b2c edtech app that used kotlin, java11, a proper hierarchy and other latest Android advancements.
this company's main Android product is a java sdk that other android apps uses. the java code is verbose , repetitive and with a messed up architecture. for one api, the client is able to attach a listener to some service that is 4 layers down the hierarchy , while got other api, the client provides a listener which is kept as a weak reference while internal listeners come back with the values and update this weak reference . neither my team lead nor my seniors have been able to answer about logic for seperation among various files/classes/internal classes and unnecessary division of code makes me puke.
so by now you might have an idea of my situation: ugly codebase, unavailable/ignorant codeowners (my sr and TL) and tight deadlines.
but i haven't told you about the tasks, coz they get even more shittier
- in addition to adding features/ maintaining this horrible codebase , i would sometimes get task to fix queries by client . note that we have tons of customer representatives that would easily get those stupid queries resolced if they did their job correctly
- we also have hybrid and 3rd party sdks like react, flutter etc in total 7 hybrid sdks which uses this Android library as a dependency and have a wrapper written on its public facing apis in an equally horrible code style. that i have to maintain. i did not got much time/kt to learn these techs, but once my sr. half heartedly explained the code and now every thing about those awful sdls is my responsibility. thank god they don't give me the ios and web SDK too
- the worst is the shitty user side docs. I don't know what shit is going there, but we got like 4 people in the docs team and they are supposed to maintain the documentation of sdk, client side. however they have rasied 20 tickets about 20 pages for me to add more stuff there. like what are you guys supposed to do? we create the changelog, release notes , comments in pr , comments in codebase , test cases, test scenarios, fucking working sample apps and their code bases... then why tf are we supposed to do the documentation on an html based website too?? can't you just have a basic knowledge of running the sample, reading the docs and understand what is going around? do i need to be a master of english too in addition to being a frustrated coder?
just.... fml -
SQL is amazing.
I'll toss out some bassakwards query and the optimizer will make sense of it and suddenly I'm searching a amazonillian records in no time.
Then rando one day (today) I fire up what I think is really not the most wonky query I've ever written and ... "Well shit this is surprisingly slow."
So then I go full n00b and add some fields to the query that I know would limit the number of possible records to way low thinking that might help and ... nope no faster...
Guess it's time to bust open some books about SQL....4 -
I've just joined a new company out of despair after several month out of jobs without being able to even get interviews.
I've been warned about the code being a bit behind with modern Android stack, they needed to migrate from rx to coroutine and compose is not a priority at the moment.
Fine with it, I like handling and planning migration, that's a nice challenge.
But if only that were the only problems !! Far from it, the code is a formidable mess, I've never seen so much amateurism... Most of it was written from the previous Lead Dev who stayed there for years and touched everything with their very bad practices.
I don't even know where to start honestly...
While the code is in Kotlin, it stink Java. Nothing wrong about Java, but if you code in kotlin, you need to understand what kotlin try to achieve. And that's not the case here. There is freaking nullable everywhere, for no reason at all, the data classes contains lot of var in their constructors, equals are override to compare only one or 2 params and no hashcode override with it.
Sealed class, what for ?! Let me just write a List<Pair<Enum, Any>> and cast your any depending on the enum !
Oh and you know what, let's cast everywhere, no check, and for once no null safe, there is enough nullable in the code !
What about the reactive part ? well let's recreate a kind of broken eventbus with rx ! Cause why not ?!
The viewmodel observable don't contain data, they just contain enum for the progress of the states we're checking.
In the viewmodel function we update that enum states and emit it to be observed and make the data available as a var for the view to pick it up when needed.
But why put the business logic in the viewmodel, let's put in the views, and grab and check the variable contain in the viewmodel whenever it fits.
Testing the business logic ? uh let me just test my variable initialisation in the viewmodel instead.
The vm, the views, make about 2000 lines, the test over 3000, and not a single test really test the business logic in it ! I've made big refactoring we're all the tests stayed green, while the function are full of side effects ! WTF ?!
Oh and what about that migration from rx to coroutine ? well better not break the existing code and continue writting like rx, everything is cold flow ! We just need to store a boolean saying if we already did our call to the data layer then we decide to start our flow or not.
As for the RecyclerView, having too many viewHolder is just so annoying, let's put all our different views in one, and hide what we don't need.
Keystore has been push on the repo, but it's private no ? So who cares ?!
And wait i'm not done ! Some of the main brick of the apps depends on library that hasn't been updated for years, and you know what... yes they were hosted on Jcenter and it's only now that they decide to do something about it, we we're warned about the sunset of jcenter 2 years ago !!!!
So what about compose ? What do you want with compose ?! there is no design system in that app obviously, so don't even think about it !
And there... among all of that mess, I'm supposed to do code review... how the fuck do you do a code review when all the code that is around stink ?!
And there is so much more but by now I'm afraid you're thinking i'm just pissing on the old code like everyone... but damn I guarantee, that's the worst code I've ever seen, and i've work on more than 15 app from small to big on different contract with a lot of legacy code, but nothing that bad !1 -
I was tasked with reviving this mobile app purchased off the shelf. Initially, I was impressed with what I was seeing while perusing the codebase. I'm used to editing laravel projects written by handpicked amateurs. So this felt like a breath of fresh air. Coupled with the fact that I'd recently enquired on this very platform whether anyone has chanced upon an impressive code. All is going well, until
I start finding the multi layers of abstraction and indirection cryptic and obfuscatory; and that is coming from an idealist like me who advocates for "clean" patterns such as event emission. I wonder whether it would have helped if the emission or events were typed for easy listener tracking, instead of a black hole like vm.notifyListeners() (DOESN'T EVEN HAVE AN EVENT NAME!)
With time, I become disgusted by the tons of custom elements with so many parents
My take on production level user of the view model pattern: amazing in theory
One of the architectural decisions made on this project that had me foaming in the mouth, pulling my hair and cursing out the author's generations, past, present and future: can you believe these guys are APPENDING IMAGE DOMAINS TO THE RESOURCE? Ie the domain names are tightly coupled to the images and dictated by the api, instead of the client
If this isn't bad enough, the field names of returned entities/models don't exist on the database, of course because the stupid laravel framework abets this sort of madness by combining eloquent "scopes, attributes, and appends". A trifecta of horrors.
I eventual scaled through the horrors, but not without losing my admiration for the team behind it. App has returned to the shelves, because my company lost patience with my resuscitating it. They have the regular api authentication in place, but that's not good enough. They just had to integrate firebase as well, just because. Meanwhile, this isn't documented anywhere. I stumbled into it during my scuffle with app setup, gradle ish. Eventually got banned by firebase for "sending unusual requests". My company's last straw -
Candidates must check application essay sample to suit their specific purpose
Students require checking any available application essay (https://wikihow.com/Write-an-Applic...) sample for its authenticity and reliability. In this regard, students should remember that maximum number of the papers available on-line, mostly free, is simply the cut and paste job, which make the task of candidates difficult in making their decision. Therefore, it is essential to check the quality of written work of such samples, while students need hunting for the example, which can suit their purpose
For example, students desiring admission to a particular course program in pathology, would need an essay sample, which would relate to the field of analytical medicine, while any written work on the subject of pathological laboratory tests can be excellent. However, finding the topic specific essays like this one would be very difficult, as students need ordering such customized essays.
Therefore, students require spending quite some time in conducting a proper research to find the reliable and trust-worthy essay writing service for getting their customized essay written within the scheduled delivery time. In addition, students should check the sources that the writer would have used for gathering the information, which is presented in the essay, to support its thesis statement.
However, the following guidelines would help students to check the available application essay sample, with regard to its essential ingredients that should be present in such essays. Nevertheless, students could also go through a good term paper help to learn the art of writing a well-defined essay, which can ensure their admission to the coveted course program.
Introduction and the essay topic
Students should check the introduction part of the sample and the method of presenting the topic in it. In addition, the writer should formulate a close link of the topic problem with the thesis statement of the essay. However, as admission officers do not expect candidates to write research papers as their admission essays, the topic question and hypothesis of the essay should be very simple and easy to understand.
However, the topic of the application essay sample should be close to the theme of the assignment. In addition, the students should check the method of presenting arguments in the main essay body, while its introduction should provide hints about them, in brief. Therefore, the sample should provide supporting details like personal examples, while addressing the essay topic.
Check essay language and structure
The language used in the available application essay sample by type of https://500wordessay.org/blog/... should be simple and vivid, while the examples accompanying the discussions should be reader-friendly and easy to understand. Students should realize that selecting officers do not expect them to use any complex terms in their admission essay, as it would give an indication of their bragging, without much reason to do so.
In addition, the essay organization should be such that the contents are transparent and free flowing, while the whole essay writing must be cohesive. Nevertheless, students should look at research paper help for learning the art of locating a good essay sample, on-line.
However, they can find more tips to check the quality of an application essay sample from custom essays.18 -
The Code Abyss Beckons! 🤯
Hey fellow devs, brace yourselves for a wild ride into the chaotic realm of code confessions and debugging dramas! 🎢💻
So, here I am, standing at the precipice of my latest coding adventure, armed with a keyboard and a questionable amount of caffeine. 🚨☕
Today's quest involves unraveling the mysteries of a legacy code that seems to have been written in a language only decipherable by ancient coding sages. 😱📜
As I navigate through the nested loops of confusion and dance with the dragons of runtime errors, I can't help but wonder: Is this what the Matrix feels like for developers? 🕵️♂️💊
In the midst of my debugging odyssey, I stumbled upon a comment in the code that simply said, "// Abandon hope, all ye who enter here." 🏴☠️📛 Well, isn't that reassuring?
And then there's the moment when you finally fix that elusive bug, and you feel like you've just tamed a mythical creature. 🦄✨ Victory dance, anyone? 💃🕺
But let's not forget the rubber duck sitting on my desk, patiently listening to my monologues about algorithms and existential coding crises. 🦆🗣️
So, dear coding comrades, how's your journey through the code abyss going? Any epic wins or facepalming fails to share? Let the rants flow like a river of improperly closed tags! 🌊🚫
May your semicolons be where they should and your documentation be ever truthful. Happy coding, and may your merge conflicts be swift and painless! 🌈🤞
#CodeOdyssey #DebuggingDrama #DevRantChronicles9 -
Ok so.
You know you have to deal with annoying things when you take on a guard duty role and yes, we signed up for it because of the mullah.
However, you also want to do this with a reliable and robust monitoring and alerting systemthat you can depend on! And no i am not going to advertise a product for this... What i will tell you is which one to avoid.
Meet Quest "Foglight" ... It does EVERYTHING! It monitors, it alerts, it does trend watching it does fancy shmancy graphics, it does reporting, it is very extendable... WAUW, right! right?
Well, if you were stuck somewhere in 2005-2010 maybe... But this fucklight is cutting short on EVERYTHING
Today , i got called up at 3:30 in the morning (i am typing this after the incident) because this shit of a system has "HIgh Availability" by basically letting the FMS server suck each others jaggons and hope it somehow respons. This is a sort of keepalived thing, but on proprietary java tech..
Oh, yes, it's written on java and... yes.. Java 6
This means that, effectively we are running RHEL5 machines (yes, RHEL 5!!!) because something more modern in place? nope.
I have no idea anymore what i am ranting about, i'm tired, i'm tired of this shit, i'm tired of getting called up just because of some dude has been cussing up a sales representative, sucked each others jaggons and pushed the federal goverment with a shit solution for almost a decade now.
Fuck Foglight
Fuck Quest software, because did you really think you would get enterprise level support for an enterprise product which you payed enterprise euro's for it? You are so naive, how cute...
And consequently : Fuck Dell and Good job Dell.. For purchasing quest software, mess around with it, and then dump it back to the market... Srsly Dell , you were like me when i had this hot ass chick as a girlfriend but later seemed to be too crazy to justifiably tolerate compared to her hotness. Dump it like it's trump.
Oh, and, wauw! Foglight graced us with a successful startup process after .. what.. 6 times restarting? In 2 hours... With 12 CPU's and 128 GB ram and .... oh fuck this you don't deserve such resources.4 -
1.2 years ago, I was an intern, In letter they've written that 4 hours to work but I was working 12 hours daily cause I was curious and my boss appreciate for this. so one day while testing our app at 3 am in the night, he said, u r working too hard, so u can take a Smart Phone from my side of worth ~$250. I was so happy. He said it is a gift for ur dedication. Also, they've given ~$250 on my initial day while joining to upgrade my PC. But now, I've provided my resignation letter. So they've asking me to give back the Phone cause its a company asset and also give back the money. But later they said don't give the money but deliver the Phone before 15 Jan. So, idk am I an idiot or what but I was working more harder and helping more people in company so that they're provide more stuff and get impressed. But now I think i should not do anything and do my work as a duty. Idk, should I return the phone, should I ask my boss again that u have given it as a gift or should I return another $250? I'm a student, I don't earn much and my boss knew it very well. like after 2 year of experience in MERN stack/ Azure/ Flutter, I've created many things in company and they've decided to give $3,607/year according to my new offer letter. That's why I left the company.5
-
I have been an armchair neuroscientist in my interests. I am fascinated by the brain, how we believe it works, how it really works, and what different research has shown. I have found books written by real neuroscientists that talk about how the brain works and what the research they have shows about intelligence. I am also fascinated by the idea of rewiring your brain. I just found another neuroscience book that has research from some neuroscientists that have challenged the established belief that adult brains have little to no neuroplasticity. This is the ability for the brain to rewire itself to accomplish new tasks or repurpose different parts of the brain. I didn't know this was a limiting factor in the theory of neuroscience. The book also includes information about how Buddhists and neuroscientists are working together to unlock more knowledge about neuroplasticity. The traditional neursoscience belief is that the brain affects the mind solely. However Buddhists have long believed that the mind can affect the brain physically. I am just starting to read this book, but so far the experiments that have been performed seem fascinating. It also has not gotten to the part about the Buddhism influence on the research yet. So far I have just read about how scientists have shown that plasticity can be shown to occur with normal everyday tasks. I don't know where this will lead, but its really cool to read about.
Okay, great, so what?
The why was I looking for this is interesting. I have been looking for some time ideas on how to improve my thinking. I had the idea that I could help myself think better by training my brain with mental exercises. I want to create a program that runs on the computer or phone that one could use with visual and audible cues to play mental games. These games would be designed to make one better at solving puzzles, remember things better, and more. If these exercises could be made in such a way that they were fun to do then we could use our own addictions to improve ourselves. The research I had before frustrated me because they always said you couldn't make yourself smarter. Maybe you cannot increase your mental capacity (not sure if that is true if we can grow neurons, also mentioned in the book), but reorganizing what you have might be possible. Maybe if there is a finite capacity to the brain that reorganizing might cause you to drool. I don't know, but if I could create a puzzle game with the purpose of helping me visualize algorithms, I would find that useful. Also, helping me remember short strings of data would be helpful as well. It seems like I have trouble when it is more than 7 numbers (ten?). Which is also why phone numbers are that long. To make them easier to remember.
I just don't know where this will lead. It might be a wild goose chase. But I think I will learn something about my mind and myself in the process. It also sounds like a great deal of fun.3 -
Despite not having any real C# experience to speak of, I've been put on a short and rather intense enhancement project that was written with .net framework and MVC.
Yesterday I had to add a new method to call a stored procedure. The file I had to add it in was over 6k lines long. Most files, not including entities, are well over 1k - including the views.
Can't say I'm enjoying working on this project so far.
(Did I mention the clients have a tendency to change requirements mid sprint?)1 -
I think I just realized what my biggest gripe about our career paths that I hate the most.
This is something that has worsened over time, especially the last 2 to 3 years.
As developers, we have far too many options. Some of the most powerful apps are written with languages that have hard, and I mean HARD, guardrails in place. If the app is written in a language that does not meet this criteria usually a framework has been used to install those guardrails.
We just get our minds so wrapped around the possibilities and the opportunities in the software, that we just can't focus on the end result. We're like puppies that are excited about something and we just piss all over everything.
In my career I have met far too many developers that don't have the capacity and mental fortitude to take control of their actions. Because of this I think the only way for us to stop this corruption, that I feel we are nurturing, the solutions/services that we use need to push back on us and install those guardrails for us.
All this came from a change that Microsoft put in place that seems well intended, but introduces yet another choice and a multitude of opinions in how you release code.
It used to be a simple check box. If it was checked it was pre-release, if it was unchecked it was a production release. That's it. On or off. The simplest choice you ever needed to make on a release.
Now though, there are two check boxes. One for a pre-release and one for a latest release. You can also not check either for some "ephemeral" release? So now something as easy as on or off has been made into a difficult decision on how this works within my pipeline. Now every time I make a release I have to ask myself, "which one do I check?"
I shouldn't need to spend more than a second to identify a path forward on simple shit like this, but here we are with a third choice.
Can we just stop overcomplicating shit?6 -
I’ve made a list of things I want to learn. Languages, frameworks, etc and i don’t really have too many things on the list that way I can learn them well.
I’ve been struggling with this choice because I’m honestly not sure whether or not I should consider Rust to be on the list.
I like the modern features it contains, and I don’t mind the syntax.
I don’t like it’s way of memory management, I’ve heard it’s performance can be very lacking, and I’ve heard a lot of negative things about the compiler and the efficiency of the language (although I feel like efficiency comes down to the person and how the code is written)
So please redpill me on Rust and try to convince me to add it to my list because it’s close.2 -
I recently joined a good MNC as a .net fullstack dev and right now contributing mostly to the frontend part to one of our projects. I have another team member writing the APIs and when i look at how the middletier is written and how APIs are structured, its just plain shit nothing else. It hardly follows any restful principles, returns weird response code, no design patterns at all, in short its a 10 year experienced dev writing code like a fresher.
I tried to communicate my concerns in a nice way but they were not taken very well. And when later I am asked to work on that codebase it will be like jumping in a pile of shit.
Now my question to you wonderfull people out there is, how do you handle situations like this? Do you have any suggestions for me please?5 -
Some background:
About 2 months ago, my company wanted to build a micro service that will be used to integrate 3 of our products with external ticketing systems.
So, I was asked to take on this task. Design the service, ensure extendability and universality between our products (all have very different use cases, data models and their own sets of services).
Two weeks of meetings with multiple stakeholders and tech leads. Got the okay by 4-6 people. Built the thing with one other guy in a manner of a week. Stress tested it against one ticketing service that is used in a product my team is developing.
Everyone is happy.
Fast forward to last Thursday night.
“Email from human X”: hey, I extended the shared micro service for ticketing to add support for one of clients ghetto ticketing systems. Review my PR please. P.S. release date is Monday and I am on a personal day on Friday.
I’m thinking. Cool I know this guy. He helped me design this API. He must’ve done good. . . *looks at code* . . . work..... it’s due... Monday? Huh? Personal day? Huh?
So not to shit on the day. He did add much needed support for bear tokens and generalized some of the environment variables. Cleaned up some code. But.... big no no no...
The original code was written with a factory pattern in mind. The solution is supposed to handle communication to multiple 3rd parties, but using the same interfaces.
What did this guy do wrong? Well other than the fact that he basically put me in a spot where if I reject his code, it will look like I’m blocking progress on his code...
His “implementation” is literally copy-paste the entire class. Add 3 be urls to his specific implementation of the API.
Now we have
POST /ticket
PUT /ticket
POST /ticket-scripted
PUT /ticket-scripted
POST /callback
The latter 3 are his additions... only the last one should have been added in reality... why not just add a type to the payload of the post/put? Is he expecting us to write new endpoints for every damn integration? At this rate we might as well not have this component...
But seriously this cheeses me... especially since Monday is my day off! So not only do I have to reject this code. I also have to have a call now with him on my fucking day off!!!!
Arghhhhhh1 -
How can a novel emerging challenger software (written in Rust) take me 4 hours to install (still ongoing)?
Today I have decided to give Pijul a go. Pijul describes itself as a theory-sound alternative to Git, which I have wanted to get away from for a while now, due to various reasons -- many of which I saw Pijul advertise to have solved on design level.
So I set away a day to learn Pijul, today. Well, 4 hours after I sat down -- after a number of hilariously wonky failures of "Rust ecosystem" to do the right thing as I had to install Rust with some shell one-liners those insane wizards recommend for installation process (all in the name of "stability but not stagnation") -- Pijul has now been installing with the blasted `cargo` for an hour now (that's after 3 hours of getting to the point where `cargo install pijul` stopped exploding in my face) -- telling me I only have 40 crates more to install. Are they throttling me, perhaps? I don't care -- I should have been installing Pijul from a repository in accordance with my Linux distribution, or -- at worst -- download a BLOODY COMPILED PROGRAM IMAGE.
What is it with the hipster developers today? Everything they get of tools, they subsume and churn out intricate complexities the likes of which we hadn't seen yesterday. Tell me fellow developers who think installation of your software has to require three and a half novel "installation solutions" to which I can't be arsed to be made privy -- do you think your life today is easier than, I don't know -- wrangling with a Makefile and a C compiler (which today thankfully can do rather good job of standards compliance)?
I mean I wouldn't mind Pijul being written in Rust -- but it turns out Rust's advertised elegancy in practice is wrapped in so much "giftwrap" I feel like what desire I had to learn Rust myself, I'll stear well clear.
Here's an advice for developers in general -- an advice continiously ignored for decades -- stop blowing your original scope of delivery in auxilary packages you think you need to reinvent just because you can or because your mom is out of town! For programming languages like Rust this most certainly entails NOT writing your own package manager, with its own package delivery mechanism that has its own configuration file format and virtual machine to configure dependency resolution or what have you!
You wanted to write a programming language that has novel features you think we need? Fine -- write one and stop there. Watch it grow, and watch people who are busy working on other parts (scopes) of software to integrate your offer.
What a shitshow. Stop smuggling alternative package managers, installers, and discombulators with your actual product -- I only want the latter, I don't want the rest of your damn piping, walls, roof and a cathedral on top of it!
Don't be that guy starting with a pin, and ending up with a fucking diorama miniature of a pig farm in Netherlands. Jesus.7 -
Rant
Okay so I was given a task to add an additional column to the reports in our timesheet system a couple of days ago.
This system hasn't been modified in several years and was not written especially well.
The report generated is shown in a Windows forms datagrid.
I spent 2 fucking hours trying to figure out how data was getting added to this shitting thing when I realised that it was being done by shitting index on the SELECT statement.
God, why didn't the original Witter just use a bloody databinding -
rant.author != this
Christ people. This is just sh*t.
The conflict I get is due to stupid new gcc header file crap. But what
makes me upset is that the crap is for completely bogus reasons.
This is the old code in net/ipv6/ip6_output.c:
mtu -= hlen + sizeof(struct frag_hdr);
and this is the new "improved" code that uses fancy stuff that wants
magical built-in compiler support and has silly wrapper functions for
when it doesn't exist:
if (overflow_usub(mtu, hlen + sizeof(struct frag_hdr), &mtu) ||
mtu <= 7)
goto fail_toobig;
and anybody who thinks that the above is
(a) legible
(b) efficient (even with the magical compiler support)
(c) particularly safe
is just incompetent and out to lunch.
The above code is sh*t, and it generates shit code. It looks bad, and
there's no reason for it.
The code could *easily* have been done with just a single and
understandable conditional, and the compiler would actually have
generated better code, and the code would look better and more
understandable. Why is this not
if (mtu < hlen + sizeof(struct frag_hdr) + 8)
goto fail_toobig;
mtu -= hlen + sizeof(struct frag_hdr);
which is the same number of lines, doesn't use crazy helper functions
that nobody knows what they do, and is much more obvious what it
actually does.
I guarantee that the second more obvious version is easier to read and
understand. Does anybody really want to dispute this?
Really. Give me *one* reason why it was written in that idiotic way
with two different conditionals, and a shiny new nonstandard function
that wants particular compiler support to generate even half-way sane
code, and even then generates worse code? A shiny function that we
have never ever needed anywhere else, and that is just
compiler-masturbation.
And yes, you still could have overflow issues if the whole "hlen +
xyz" expression overflows, but quite frankly, the "overflow_usub()"
code had that too. So if you worry about that, then you damn well
didn't do the right thing to begin with.
So I really see no reason for this kind of complete idiotic crap.
Tell me why. Because I'm not pulling this kind of completely insane
stuff that generates conflicts at rc7 time, and that seems to have
absolutely no reason for being anm idiotic unreadable mess.
The code seems *designed* to use that new "overflow_usub()" code. It
seems to be an excuse to use that function.
And it's a f*cking bad excuse for that braindamage.
I'm sorry, but we don't add idiotic new interfaces like this for
idiotic new code like that.
Yes, yes, if this had stayed inside the network layer I would never
have noticed. But since I *did* notice, I really don't want to pull
this. In fact, I want to make it clear to *everybody* that code like
this is completely unacceptable. Anybody who thinks that code like
this is "safe" and "secure" because it uses fancy overflow detection
functions is so far out to lunch that it's not even funny. All this
kind of crap does is to make the code a unreadable mess with code that
no sane person will ever really understand what it actually does.
Get rid of it. And I don't *ever* want to see that shit again.