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 - "single responsibility"
-
Manager: This code you wrote violates the single responsibility principle!!
Dev: How so?
Manager: You have one function that you call in *MULTIPLE* places. That’s too much responsibility for one function! Functions should only have one responsibility!! Creeping the scope of a function beyond that is a TERRIBLE way to write code!
Dev: But why spin up multiple functions that all perform the same thing?
Manager: Well if a function has a bug in it and you use that function multiple places then that bug exists everywhere you use that function. If a function only has one responsibility then if it has a bug that bug will only exist in the single place it is called! You really should think first before asking questions like that.
Dev: …26 -
How I went from loving my job to wishing i dont wake up tomorrow just to avoid it.
Ive been a backend dev in the company im at for 2 years now.
First year was a blast, i loved my work so much, I used to get so many random features to do, bug fixes, campaigns, analytics, etc..
Second year i started getting familiar with the part of the code that has to do with Search in our music streaming app. Nobody wanted to work on it, so i wanted to take initiative and start doing a few tasks.
A few tasks turned into sprints, and sprints turned into months worth of sprints. And because the code was the definition of tech debt, and because it was so messed up that changing one thing can blow up everything else, working on Search was not too fun.
However, people seemed to be happy search tasks are no longer piling up and someone is handling them so that used to make me feel good about it. They also gave me so much freedom and i felt like my own manager because no one told me what to do (not even my actual manager) they just let me be and were happy i was handling the part they want nothing to do with. I was also given an intern to mentor and have her work on Search tasks with me which turned out amazing.
During the last few months, I completely rewrote search, made it 10 times more performant in such a neat way, made an inhouse dashboard to automate certain tasks so we wont need to waste developers on them (all of which were extra effort on my own time without being asked), all meanwhile still tending to the fixes of the old implementation.
I felt so accomplished, and in a way, i felt like a lead (even tho im not managing any employees, i had so much freedom and I was literally responsible for everything about Search and if i decide to play with the sprint task order i can even do that).
Then 6 or so weeks ago my manager left the company, and while i thought id be a standalone team / person (single person teams are not uncommon in the company) i was instead put under someone else. Someone who likes to micro manage the fuck out of me. I have been happy working on shit code because it was my baby, my project, no one interferes and no one tells me what to do and everyone would call me the search lead (unofficially). now if i dont report to that guy every two hours he calls to see if im working. preplans sprints i no longer have a say in, and im the only dev who knows the code so all tasks go to me. I feel i got demoted so fucking much. I felt like a lead on a project and now im back to being a normal code minion. From deciding everything about a project to blindly following a some irrelevant manager's opinion. (who btw is making Search worse) And after all the extra effort i put in, after actually caring, after actually embracing Search as my responsibility i get rewarded with losing everything i liked about my job...My Independence. From feeling like a lead to feeling demoted. I am so demotivated.
I love the company, but this is hell for me and this made me hate a job i always loved. I am thinking of talking to the CTO asking to work on other stuff because i no longer want this. If i am to be a code minion at least let it be on code i like, let me go back to dealing with PMs, fuck my new manager I dont wanna work with that guy he can take the project along with all its poopoo.16 -
Qualification != proficiency
Worked at a company where this bloke (Jepediah mcShitFart we shall call him) had enough programming certs and qualifications to fill a page.
I was the one fixing his fuck ups, because he coded like his ass, debugged like his ass, talked like an ass, and used to shrug off responsibility like an ass. Hr did nothing because he 'was a long time employee'.
Plus, I have met hundreds of programmers who would put many to shame, and they don't have a single qualification.10 -
Lemme be frank for a moment
Just because the compiler tells you that you need to do a certain thing, DOESN'T MEAN YOU SHOULD SEE THAT AS THE ONLY FUCKING SOLUTION
DON'T START FUCKING UP THE SINGLE-RESPONSIBILITY PATTERN JUST BECAUSE THE COMPILER SAYS YOU SHOULD, HOW DENSE MUST YOU BE TO THINK THAT'S THE FUCKING SOLUTION?! PERHAPS YOU SHOULD DIG A LITTLE BIT DEEPER? I CAN'T EVEN LAUGH ABOUT IT IT'S SO SAD. DEADLINE IS GETTING CLOSER DAMNIT
Oh btw, another instance:
"I'm doing X to achieve Y because I'm more familiar with step 1 of X"
Fine, but that takes more time and can be done in way Z, in that way, you don't loose precious time and can just work on the other steps in the proces that contineously get harder.
* Person proceeds to do X anyway and get stuck, in the end having nothing done *
🙄
I like helping people, I really do
But I'm not going to loosen the knot around your neck if you keep tightening it9 -
"As a team, we have the shared responsibility to ___".
(replace with ALL of the following: resolve bugs, do junior's code reviews, clean up dead code, keep the kitchen clean, improve test coverage, write documentation, order coffee beans, etc)
NO. JUST FUCKING STOP RIGHT THERE. Shared responsibilities do not exist. A single person is responsible, and can optionally delegate tasks.
EITHER I DO IT AND I'LL BE FUCKING AWESOME AT IT, OR SOMEONE ELSE DOES — BUT I'LL SLAP SLACKERS IN THE GENITALS WITH MY KEYBOARD.
Fucking startup hipsters with their community driven attitude, this way no shit gets done, ever.7 -
Dev: There’s a file in your PR with over 1000 lines of code, I think it should be broken apart into a couple smaller pieces to be a little more in line with the single responsibility principle
Muppet Dev: That file only has one responsibility! It can’t be broken apart!
Dev: How’s that?
Muppets: It’s single responsibility is managing that group of functionality
Dev: …3 -
Best practice of the day:
Single responsibility principle - One class should be responsible for everything!
Either that or someone was payed for LoC. 😁5 -
Sometimes, being the only fullstack dev with access to a lot of systems gives you the ability to introduce functionality that:
A) prevents future errors
B) introduces new validations to users to make sure A) is prevented.
C) apply these changes to different projects
But most importantly...
D) without a single person in management getting involved or having to sign it off.
It's like running a company you own, but without owning it.
Granted with such power, comes the trust and responsibility of deploying changes with the adequate testing being done prior and handling change management, but fuck, sometimes I wonder if "god mode" for lack of a better term, is too much, or just enough to get the job done without the politics.7 -
Should’ve posted this after it happened, but it requires a bit of background anyway.
There’s this guy that oversees our OpenStack environment. My team often make jokes and groan about him in private because he’s so overbearing. A few months back, he had to take us to our data center to show us our new racks, and he kept saying stupid stuff like “you break this and it costs me $30,000” as if he owns everything. He’s just... one of THOSE people. Always speaks in such a condescending way. We make jokes that he is our “best friend”.
Our company is shifting most of our products to the cloud in response to the coronavirus (trying to make it an opportunity for “innovation”). This has involved some structural and responsibility changes in our department, and long story short, I’m now heading the OpenStack environment alongside other projects.
This means going through grueling 1-on-1 meetings with our “best friend”. It’s not too bad, I can be pretty patient with people, so I didn’t mind too much at first. Then a few things happened.
1. He sent a shared folder that he owned containing info related to the environments. Several documents were outdated and incomplete, so I downloaded them, corrected them, and then uploaded the documents to my teams file share, as I was supposed to since we now own the projects.
2. Several files were missing, and when I asked about them, he said “Oh, did you refresh the browser?”. I told him no, that I downloaded them locally and republished them to my teams server, because he was supposed to hand everything off to us at once. He says “Well, silly, how are you going to get updates if you’re looking at them locally?” and kind of chuckles at me like I’m stupid.
3. He insists on training me how to remote into one of the servers to check on cluster space, which in itself is fine. I understand others wanting to make sure things will be done right by the people who come after them. But he tells me to download SuperPutty. I tell him, “oh no, that’s alright. I don’t need putty”. He says “oh cool, what tool do you use for ssh?”. I answer him “Just Git. If I want to I can use a CentOs bash terminal too, because we have WSL installed”. He responds “You can’t ssh through Git”.
I was actually a little shocked. I didn’t know if he was serious or not so I was silent for a few seconds before hesitantly saying “yes you can”. He says “this is news to me” and I so I tell him “every single one of our build jobs fetches code from Git with ssh” and he seemed genuinely shocked and surprised by that.... so then it occurs to me to show him that you can ssh in Powershell and that REALLY blew his mind. He would not shut up about it for several minutes. I was amused until it just got annoying.
Needless to say, my team had been previously teasing me about having to work with him, so they found it hilarious when I told them afterwards.8 -
For the first time I am feeling like.... I hate my job.
Agile and Scrum can be fucked, but at least there is a work methodology. I was hired by a company being run the old school way.
These guys never heard of git??
- Fuck you. We never used git and neither should you.
Client company does not want to give me push/pull access to their gitlab instance??
- Fuck you, you can use our RDP server for that.
Project planning features be damned, they've got email, Teams and videocalls!
Can I develop in peace? Fuck no, I have to give IT support to the guy who hired me.
Our timeline is defined IN A FUCKING WORD DOCUMENT FOR FUCKS SAKE. I can't connect Issues to milestones in a Word doc
Oh, and the customer is running everything on prem. If there is a need to scale up, FUCK ME. I should have specified 20 machines from the get go or gtfo. We're using 2 machines to run 8 different services that are going to be ingesting and computing data.
They want state of the art on a cheapskate.
And I have nothing else lined up at the moment. Although I am soon to renew the contract... This contract binds me with professional responsibility for a project being ran by people who do not give a single fuck about optimizing the work process.3 -
Before I finally managed to move out of my parents' place, they nonstop kept annoying me by saying I should get a "real job". They thought I was only playing games or browse random unimportant stuff on the computer...
Nowadays they think I "kreate" websites (as Karlie Kloss would pronounce it).
My mother one time was so fucking annoying about my job, I got so pissed off, I threw in her face her that I earn three times what she gets and I have much more responsibility and brain requiring work and that her single-cell brain would never understand what I am doing the whole fucking day.
Since then we dont talk much about work anymore.
Fucking parents... the best thing that happened to me was moving out of their shitty place and their poisonous attitude.1 -
So the other day I randomly checked out a few job postings on some recruiting agency’s website. Didn’t even sign up or anything.
The very next day I get a call from them. The person on the phone tells me they noticed I had visited their website and was wondering if I was interested in applying to any of the offers. Even as a developer I was totally taken aback as to how they managed to track me down based on a single visit.
I believe I ended up on their website by clicking on a link on LinkedIn. I’m assuming it’s via LinkedIn that the managed to get my info (phone etc.). All in all I’m not extremely surprised. But to me it’s downright creepy and it makes me feel like I’m being stalked. Also it makes recruiters look totally desperate and I’m not sure I would want to entrust them with the responsibility of handling my career4 -
I'm the only developer here. I'm also pretty bad.
I can't handle all this responsibility, every single fuck up will be my fault.10 -
The feeling when you realize some people on the project are writing legacy code from scratch. Apparently it seems they've never heard of any coding standards, they think clean code and style guidelines are for the weak and single responsibility means one single method is responsible for a bunch of unbelievably diverse things. They are like the Gumbys of the dev realm but it's my brain that hurts every time I have to deal with their code.4
-
http requests
literally the bread and butter of any software engineer building applications, you would ASSUME they know what they are doing...
and you're gonna write a seperate http get and post function for every type you have?
apparently stuff like this that is written by "senior" developers? you don't even have a basic understanding of software...
i'm won't do it that way, becuase i'm an adult, not a child
what i'm going to do is write a HTTP request util function that can be used for any type and HTTP verb. DRY, single responsibility, etc.
imagine making the http request itself a responsibility coupled to the type 😂😂😂😂
get a clue and come back later
i can't tell anymore if my thoughts are so outlandish compared to everyone else that no one understands them, or if i've been doing this so long that i just immediately understand what needs to be done and don't know how to explain it to anyone else anymore (or take the mental effort to)
peace out
oh P.S.: imagine thinking the SOLID principles are only applicable to OOP
stay safe out there folks, its getting more painful every day8 -
Eric Thomas' Top 10 Rules For Success
1- Know what you want.
If you don’t know what you want, how will you know what to say yes to in your life? Stop taking every body else’s leftovers and step up and take what you deserve!
2- Work on your gift.
We all have our own individual talents, gifts and strengths. But those natural gifts will only become truly great by refining and nourishing them. Natural ability will get you started, but commitment and determination to achieve greatness is what will get you to where you want to be.
3- No excuses.
Stop using your circumstances, finances or current position in life as an excuse to justify why you aren’t working towards your goals. You are in charge. If you aren’t where you want to be, take a look in the mirror and ask yourself honestly- WHY? Take responsibility for you life once and for all.
4- Upgrade your values.
Your values dictate your behaviours. And your behaviours create your results. If you want to a different result, you need to change your behaviour.
5- You reap what you sow.
Nothing in life is free. It is up to you to determine the course of your life. If you want success, you need to do what it takes, daily, to get there. Don’t focus so much on being successful. Focus on solving problems, helping others, and adding value to people’s lives, and success will come.
6- Education is the great equaliser.
If you are at the bottom, you need to learn. If you are at the top, you still need to learn. Never, ever, ever stop growing and educating yourself.
7- What is your WHY?
Why do you wake up in the morning and hustle? Why do you do what you do? Knowing the answer to this question is the single most important thing to know about yourself if you want to become successful. When you know WHY you are doing what you do, you won’t ever quit, even on a bad day.
8- Have boundaries.
If you want to be a huge success, you have to be strict on yourself with how you spend your energy. Distractions will come in many forms, family, friends, TV, but you have to make sure that your time is being spent wisely.
9- Speak from the heart.
Transparency is attractive. Don’t be afraid to open up to the world and let yourself be seen.
10- Succeed as bad as you want to breathe.
Everybody wants to be successful. But not everybody is willing to do the work that it takes to become successful. When you are willing to get so uncomfortable, so out of your depth, so blind that you have no other choice but to be successful, THEN you will become successful. The only question you need to ask yourself is this. Am I willing?
Credits: https://fearlessmotivation.com/2016...2 -
(first post/rant on here)
So I recently started at a new company. I was kinda aware that the project I'm working on would be rather old school (to put it in a nice way :-)).
Part of my job is to 'industrialize' and update/clean up the existing code so there is less time spent on fixing bugs due to bad design.
One of the first things I had to do was to write a new interface to integrate with external software.
I already noticed some rather nasty habits, like prefixing every variable with m (don't know why), private fields for every property (all simple properties) and a whole lot of other stuff that either is obsolete or just bad practice.
Started writing clean code (simple classes with properties only, no m prefixing, making sure everything is single responsibility, unit tests, ...).
So I check in the code, don't hear much from it again besides the original dev/architect that started the project using my code to further work on that integration.
Now recently I started converting everything from TFVC to Git (which is the company standard but wasn't used by our team yet). And I quickly skimmed through my code to check if everything was there before pushing it to the remote repo.
To my surprise, all the code I had written was replaced by m prefixed private variables used in simple properties. BL classes were thrown in together, creating giant monstrosities that did everything. And last but not least, all unit tests were commented out.
Not sure what I got myself into ... but the facepalming has commenced.14 -
so... not really a rant because i'm happy to be in the long-term zenlike state where i don't really give a fuck about anything anymore, but...
so today's my birthday (thanks in advance for all the semi-mandatory "cheers" reactions and such)
the agency i do temp jobs through sends money weekly (for the one week back) (which is the main and only reason i use them). they arrive at friday 12:25, so that's when i know to go "check" by withdrawing it, and it's also awesome because it's the best time to provide funds to reward myself (by booze/weed) at the end of the week.
last week, nothing came in. i called them and learned it was due to the contact person in the company i did job in being too late on sending the agency list of people who showed up at the work, i was told it's gonna arrive one week later together with the proper payment for the week-1,so effectively i was one week without any money (literally), but on the next week double was going to arrive, which is nice.
that next week of double was now. i found out that no double arrived, only single-value payment. i called them to ask why.
i was told that what arrived was the late payment, and the dude in company was again late with sending the presence list, so the other payment, for the proper week's work, will be a week late again.
so... that kinda ruined my financial planning tor tge week that's going to happen.
i guess my point (if i have any) is... funny how when someone fucks up, there's nobody for me to be angry at and hold responsible in any way, but when i have delays in my work due to delays upstream, nobody gives a shit about my excuses and it's my fault and i should have compensated, it was my responsibility and duty, and me not doing it (to my own detriment, for someone else) is me failing.
funny how the subjective dynamics of the world always somehow works out in a way where everyone else fucks up and i either have to suck it up and be okay with it otherwise i'm a selfish unreliable entitled asshole, or suck it up and extinguish their fire for them, otherwise i'm a selfish unreliable entitled asshole XD
anyone else noticed this in their life?
how does it work? what is the factor that decides whether you're in the "suck it up" class or the "fuck it, someone else will suck it up" class?
doesn't seem to (just) be the money(flow), i've seen this thing happen even in situations where the money/client dynamics were flowing the opposite way to what would be natural for the shit fall direction.4 -
SINGLE
RESPONSIBILITY
FUNCTIONS
HOLY GARBAGE UNTESTABLE DIFFICULT TO DEBUG JFC SHIT.
FUNCTIONS DO ONE THING AND DO ONE THING WELL. LEARN IT, LIVE IT, LOVE IT, OR JUMP INTO A LAKE
that is all.5 -
Rant
Frustrated...
How single tiny mistakes can ruin your day...
For those who don't know me (and I've been absent from social media, even DevR cause of a burn out) I'm not a developer as most here, my code Is Numeric Code (work with a CNC machine)
Like, I have to do corrections every day to compensate for my programmer mistakes...
-Today broke two tools because I'm so tired I forgot to make such corrections...
-Got fucked up by my boss cause of It
- worked to hard all week to push the work forward (everyone else is dependent on me, because I start most of the pieces from a block of metal), now I can't think straight... and get fucked because of some simple mistakes...
Colleges trow away pieces worth from 5000 euros to 50000 euros (and more) cause of distraction and he always picks on me, even for stuff that isn't my fault or my responsibility...
I love my job, my company, but sometimes...
BTW, if anyone is curious what a CNC machine does, check this out: https://youtube.com/watch/...
Its so awesome to work with such a machine... Mine has a 2,5m x 1,3m table and 5 tons maximum weight4 -
I recently have been delegated the responsibility of managing a 4 people team by planning the sprints, scheduling tasks, and in general "take charge" (as said by the boss).
What bothers me is there is this "developer" with a heavily toxic attitude, who feels he is above all laws and knows everything just because he joined some months ago all of us.
He is basically a human linter. When he code reviews, you can get away with any major mistake if your linting and indentation (and all that shit) is according to "his standards".
A new guy recently joined the team and was given an overwhelming task by the boss just to test whether he belongs here. (Again, wrong, in my opinion). He didn't know any of the technologies he needs to work on to complete that task but he still learnt them and got a working product. Albeit not according to our God's "standards".
Cut to the chase, the asshole dev is now mocking him in PR comments and demeaning him in every discussion. As a "team lead", what should I do? If I let it go, it'll make the environment toxic and I don't want him to get away with it. If I do take any action, I don't want to be seen as as pussy who can't take such minor insults. Please advise.
PS. The asshole developer once wrote a "friend request accept" API endpoint in such a way that when any single person accepts a request, that'll cause all pending requests (from any person to any person) get accepted. Fucked up the DB queries basically. This is just to give a perspective on what I'm dealing with here.4 -
This class adheres to the single responsibility principle: it is singularly responsible for the entire application.
-
I've played around a bit with illustrating the SOLID principles (Single Responsibility, Open/Closed, etc., you know).
You may check it out here: https://okso.app/showcase/solid
Let's see if it will be helpful or more confusing :D13 -
i booked my first ever car and am having so many emotions... from scary to excited to anxious and mostly feeling super dumb.
i booked a very basic hatchback with minimal features and the lowest price. i was so not sure about the various terms that guy was using: mudflags, foglamps, tilt adjustment wheel ...
like, i read about them just a minute ago on google and next moment, this guy was asking me if i should pay this much amount to get it included in my car or not. i asked him many times and for things that i felt were useful, i got them included.
biggest things about this very first purchase is
1. i have learnt car driving from training school for 30 days. i got my license via some bribe money and did not gave the real test. I am basically a guy with no experience of handling cars. i was doing okay when learning tho
2. i am a single child from a very small, conservative and super anxious family. everytime i am gonna take this car, am sure my mom is gonna start praying to god for my safety. i too have this inherited anxiety and would probably be praying to god everytime i would travel alone.. the responsibility to keep myself safe, and the car safe, while not even knowing how to release clutch properly will be super scary
3. my friends are gonna love this but i want to become a trustful driver for them first. basically among 5 of us, only 1 had his father's car on which we have taken a lot of trips. that boy has my huge respect, and he is one of the best and most reliable safe driving person i know. he even enjoy the songs and pur conversations. i want to be like him, but currently my friends don't even trust sitting on the back of my scooty and feel scared.
4. our neighbours are probably gonna dug up their graves and roll in it. they are already very jelous and angry people, i hope they don't cause any damage to my new car.
5. i am super scared about this new car... how can i protect this precious baby... how to make sure that someone is not stealing parts off this..
so.many.fucking.scary.and exciting.thoughts!!!28 -
To all self made seniors (and those who got granted this title because it was a morale boost): is it really so difficult to grasp ideas like: Single responsibility? Don't repeat yourself? Encapsulation?
Seriously? Is it difficulty level of some quantum physics or what?
I'm not a fucking genius myself either, but when I see 300-500 LoCs function, accepting 10 parameters, having half of code duplicated in different parts of solution - I really wanna start firing people ON THE SPOT.
P.s.
To all shitty developers advocates - I know that everyone makes mistakes sometimes - I'm talking here about consistent "don't give a shit about code" behaviour.23 -
Into a bunch of open source hogging meat heads because no one likes paying for things their own peers toil days and nights creating and creating more under documented over expensive licensed stuff (because agile) while throwing buzzwords to clients just make business while simultaneously choking the life out of underpaid overworked devs and engineers with the skill of running away from responsibility trying to save their own skin with the inept ability to look like a hero/King at the end of the day with a single mail sent with psychic communication or the lack thereof with people who are slogging their asses off to fix a problem created to the vulnerabilities and bugs introduced due to the impatience of the same moron who couldn't afford to give his employees/subordinates more time to figure out an elegant solution to a non existent problem created in the confusion of improperly documenting unnecessary requirements of an ignorant or unknowing client who is way too eager to process way too much load with way too less resources all the while whining about lack of features theyre not gonna use.3
-
!rant
Is making a class just for opening and closing a database connection taking Single Responsibility to far?4 -
Sydochen has posted a rant where he is nt really sure why people hate Java, and I decided to publicly post my explanation of this phenomenon, please, from my point of view.
So there is this quite large domain, on which one or two academical studies are built, such as business informatics and applied system engineering which I find extremely interesting and fun, that is called, ironically, SAD. And then there are videos on youtube, by programmers who just can't settle the fuck down. Those videos I am talking about are rants about OOP in general, which, as we all know, is a huge part of studies in the aforementioned domain. What these people are even talking about?
Absolutely obvious, there is no sense in making a software in a linear pattern. Since Bikelsoft has conveniently patched consumers up with GUI based software, the core concept of which is EDP (event driven programming or alternatively, at least OS events queue-ing), the completely functional, linear approach in such environment does not make much sense in terms of the maintainability of the software. Uhm, raise your hand if you ever tried to linearly build a complex GUI system in a single function call on GTK, which does allow you to disregard any responsibility separation pattern of SAD, such as long loved MVC...
Additionally, OOP is mandatory in business because it does allow us to mount abstraction levels and encapsulate actual dataflow behind them, which, of course, lowers the costs of the development.
What happy programmers are talking about usually is the complexity of the task of doing the OOP right in the sense of an overflow of straight composition classes (that do nothing but forward data from lower to upper abstraction levels and vice versa) and the situation of responsibility chain break (this is when a class from lower level directly!! notifies a class of a higher level about something ignoring the fact that there is a chain of other classes between them). And that's it. These guys also do vouch for functional programming, and it's a completely different argument, and there is no reason not to do it in algorithmical, implementational part of the project, of course, but yeah...
So where does Java kick in you think?
Well, guess what language popularized programming in general and OOP in particular. Java is doing a lot of things in a modern way. Of course, if it's 1995 outside *lenny face*. Yeah, fuck AOT, fuck memory management responsibility, all to the maximum towards solving the real applicative tasks.
Have you ever tried to learn to apply Text Watchers in Android with Java? Then you know about inline overloading and inline abstract class implementation. This is not right. This reduces readability and reusability.
Have you ever used Volley on Android? Newbies to Android programming surely should have. Quite verbose boilerplate in google docs, huh?
Have you seen intents? The Android API is, little said, messy with all the support libs and Context class ancestors. Remember how many times the language has helped you to properly orient in all of this hierarchy, when overloading method declaration requires you to use 2 lines instead of 1. Too verbose, too hesitant, distracting - that's what the lang and the api is. Fucking toString() is hilarious. Reference comparison is unintuitive. Obviously poor practices are not banned. Ancient tools. Import hell. Slow evolution.
C# has ripped Java off like an utter cunt, yet it's a piece of cake to maintain a solid patternization and structure, and keep your code clean and readable. Yet, Cs6 already was okay featuring optionally nullable fields and safe optional dereferencing, while we get finally get lambda expressions in J8, in 20-fucking-14.
Java did good back then, but when we joke about dumb indian developers, they are coding it in Java. So yeah.
To sum up, it's easy to make code unreadable with Java, and Java is a tool with which developers usually disregard the patterns of SAD. -
Started doing CakePHP because of a project I’m taking over. What in the world is that? Dependency injection? Separation of concern? Single responsibility? What did I get myself into…3
-
I just read Robert Martin's chapter on the Single responsibility principle in Clean Architecture.
In it he explains that stakeholders, or actors, that require their own functionality that may be similar to others should have separated code. This is because 2 actors == 2 potential reasons for change.
But this seems to run counter to DRY. Am I mistaken?12 -
If your SPA doesn't work with the browsers navigation buttons . . . go fuck yourself and fix your application.
At work I have to deal with an application that manages work tickets. There's a login page, an overview console and a page for each individual ticket (and a whole bunch of other pages that I'll ignore for this rant.) If I click on a ticket to view it I go to a new page, right?
What happens if I want to go back to the overview? I hit back on my browser. That should take me back!
WRONG
Nope. Because it's a single page application with no fucking routing programmed, the browser still thinks that the login page is the last page so it takes me there instead.
Like come on, good UX/UI design takes advantage of what the user expects and what the user is used to. The user expects the back button to take him back one page, and therefore it is the responsibility of a SPA developer to mimic that capability in his app. I don't know what framework this web page uses (it has none of the recognizable hallmarks of React or Angular) but for gods sake, implement a freaking router.4 -
I’m working on a new app I’m pretty excited about.
I’m taking a slightly novel (maybe 🥲) approach to an offline password manager. I’m not saying that online password managers are unreliable, I’m just saying the idea of giving a corporation all of my passwords gives me goosebumps.
Originally, I was going to make a simple “file encrypted via password” sort of thing just to get the job done. But I’ve decided to put some elbow grease into it, actually.
The elephant in the room is what happens if you forget your password? If you use the password as the encryption key, you’re boned. Nothing you can do except set up a brute-forcer and hope your CPU is stronger than your password was.
Not to mention, if you want to change your password, the entire data file will need to be re-encrypted. Not a bad thing in reality, but definitely kinda annoying.
So actually, I came up with a design that allows you to use security questions in addition to a password.
But as I was trying to come up with “good” security questions, I realized there is virtually no such thing. 99% of security question answers are one or two words long and come from data sets that have relatively small pools of answers. The name of your first crush? That’s easy, just try every common name in your country. Same thing with pet names. Ice cream flavors. Favorite fruits. Childhood cartoons. These all have data sets in the thousands at most. An old XP machine could run through all the permutations over lunch.
So instead I’ve come up with these ideas. In order from least good to most good:
1) [thinking to remove this] You can remove the question from the security question. It’s your responsibility to remember it and it displays only as “Question #1”. Maybe you can write it down or something.
2) there are 5 questions and you need to get 4 of them right. This does increase the possible permutations, but still does little against questions with simple answers. Plus, it could almost be easier to remember your password at this point.
All this made me think “why try to fix a broken system when you can improve a working system”
So instead,
3) I’ve branded my passwords as “passphrases” instead. This is because instead of a single, short, complex word, my program encourages entire sentences. Since the ability to brute force a password decreases exponentially as length increases, and it is easier to remember a phrase rather than a complicated amalgamation or letters number and symbols, a passphrase should be preferred. Sprinkling in the occasional symbol to prevent dictionary attacks will make them totally uncrackable.
In addition? You can have an unlimited number of passphrases. Forgot one? No biggie. Use your backup passphrases, then remind yourself what your original passphrase was after you log in.
All this accomplished on a system that runs entirely locally is, in my opinion, interesting. Probably it has been done before, and almost certainly it has been done better than what I will be able to make, but I’m happy I was able to think up a design I am proud of.8 -
Having a lot of bad experiences while working as intern in startups and about to join a MNC, i wanted to share my work life balance and technical demands that i expect from a company. These are going to be my list of checkpoints that i look forward , let me know which of them are way too unrealistic. also add some of yours if i missed anything :
Work life balance demands ( As a fresher, i am just looking forward for 1a, 2a and 8, but as my experience and expertise grows, i am looking forward for all 10. Would i be right to expect them? ):
1a 8 hr/day. 1b 9h/day
2a 5days/week. 2b 6 days/week
3 work from home (if am not working on something that requires my office presence)
4 get out of office whenever i feel like i am done for the day
5 near to home/ office cab service
6 office food/gym service
7 mac book for working
8 2-4 paid leaves/month
9 paid overtime/work on a holiday
10.. visa sponsorship if outside india
Tech Demands (most of them would be gone when i am ready to loose my "fresher " tag, but during my time in internship, training i always wished if things happened this way):
1. I want to work as a fresher first, and fresher means a guy who will be doing more non tech works at first than going straight for code. For eg, if someone hires me in the app dev team, my first week task should be documenting the whole app code / piece of it and making the test cases, so that i can understand the environment/ the knowledge needed to work on it
2. Again before coding the real meaningful stuff for the main product, i feel i should be made to prepare for the libraries ,frameworks,etc used in the product. For eg if i don't know how a particular library ( say data binding) used in the app, i should be asked to make a mini project in 1-2 days using all the important aspects of data binding used in the project, to learn about it. The number of mini tasks and time to complete them should be given adequately , as it is only going to benefit the company once am proficient in that tech
3. Be specific in your tasks for the fresher. You don't want a half knowledgeable fresher/intern think on its own diverging from your main vision and coding it wrong. And the fresher is definitely not wrong for doing so , if you were vague on the first place.
4. most important. even when am saying am proficient , don't just take my word for it. FUCKIN REVIEW MY CODE!! Personally, I am a person who does a lot of testing on his code. Once i gave it to you, i believe that it has no possible issues and it would work in all possible cases. But if it isn't working then you should sit with me and we 2 should be looking, disccussing and debugging code, and not just me looking at the code repeatedly.
4. Don't be too hard on fresher for not doing it right. Sometimes the fresher might haven't researched so much , or you didn't told him the exact instructions but that doesn't mean you have the right to humiliate him or pressurize him
5. Let multiple people work on a same project. Sometimes its just not possible but whenever it is, as a senior one must let multiple freshers work on the same project. This gives a sense of mutual understanding and responsibility to them, they learn how to collaborate. Plus it reduces the burden/stress on a single guy and you will be eventually getting a better product faster
Am i wrong to demand those things? Would any company ever provide a learning and working environment the way i fantasize?3 -
Timesheets and Formations:
Every week, I'm supposed to fill out a form detailing how much time I've spent on which projects... I'm a research engineer assigned to a single project, so I'll always fill every day with 8 hours on the same project, because if it yields to less than 39h the website gets mad at you (even though I'm paid on days, not hours).
I get why it's here, I just don't get why it's my responsibility to declare which project's budgets should be liable for my salary.
As for the formations, they're always these extremely slow paced, completely obvious type of courses that borderline murder you with boredom. Yes, I know, corruption is bad, can I get back to work? -
Today I made a class to do one simple thing. Duplicate a database entry along with a few of its relationships. At first it didn't make sense to create one class for that but I decided to follow my SOLID gut. It ended up being almost 100 lines long with just one entry function working as a route controller. Thank God for SOLID principles...
-
Just found a service method that saves an entity that isn't related to that service, that returns a ModelAndView object. I think my brain just broke. 1) Single Responsibility Principal. Do not save ObjectB in ObjectAService. 2) Services should not be aware of your view context. That's what controllers are for. Do not return a ModelAndView from a service method.