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 - "overriding"
-
!rant
This was over a year ago now, but my first PR at my current job was +6,249/-1,545,334 loc. Here is how that happened... When I joined the company and saw the code I was supposed to work on I kind of freaked out. The project was set up in the most ass-backward way with some sort of bootstrap boilerplate sample app thing with its own build process inside a subfolder of the main angular project. The angular app used all the CSS, fonts, icons, etc. from the boilerplate app and referenced the assets directly. If you needed to make changes to the CSS, fonts, icons, etc you would need to cd into the boilerplate app directory, make the changes, run a Gulp build that compiled things there, then cd back to the main directory and run Grunt build (thats right, both grunt and gulp) that then built the angular app and referenced the compiled assets inside the boilerplate directory. One simple CSS change would take 2 minutes to test at minimum.
I told them I needed at least a week to overhaul the app before I felt like I could do any real work. Here were the horrors I found along the way.
- All compiled (unminified) assets (both CSS and JS) were committed to git, including vendor code such as jQuery and Bootstrap.
- All bower components were committed to git (ALL their source code, documentation, etc, not just the one dist/minified JS file we referenced).
- The Grunt build was set up by someone who had no idea what they were doing. Every SINGLE file or dependency that needed to be copied to the build folder was listed one by one in a HUGE config.json file instead of using pattern matching like `assets/images/*`.
- All the example code from the boilerplate and multiple jQuery spaghetti sample apps from the boilerplate were committed to git, as well as ALL the documentation too. There was literally a `git clone` of the boilerplate repo inside a folder in the app.
- There were two separate copies of Bootstrap 3 being compiled from source. One inside the boilerplate folder and one at the angular app level. They were both included on the page, so literally every single CSS rule was overridden by the second copy of bootstrap. Oh, and because bootstrap source was included and commited and built from source, the actual bootstrap source files had been edited by developers to change styles (instead of overriding them) so there was no replacing it with an OOTB minified version.
- It is an angular app but there were multiple jQuery libraries included and relied upon and used for actual in-app functionality behavior. And, beyond that, even though angular includes many native ways to do XHR requests (using $resource or $http), there were numerous places in the app where there were `XMLHttpRequest`s intermixed with angular code.
- There was no live reloading for local development, meaning if I wanted to make one CSS change I had to stop my server, run a build, start again (about 2 minutes total). They seemed to think this was fine.
- All this monstrosity was handled by a single massive Gruntfile that was over 2000loc. When all my hacking and slashing was done, I reduced this to ~140loc.
- There were developer's (I use that term loosely) *PERSONAL AWS ACCESS KEYS* hardcoded into the source code (remember, this is a web end app, so this was in every user's browser) in order to do file uploads. Of course when I checked in AWS, those keys had full admin access to absolutely everything in AWS.
- The entire unminified AWS Javascript SDK was included on the page and not used or referenced (~1.5mb)
- There was no error handling or reporting. An API error would just result in nothing happening on the front end, so the user would usually just click and click again, re-triggering the same error. There was also no error reporting software installed (NewRelic, Rollbar, etc) so we had no idea when our users encountered errors on the front end. The previous developers would literally guide users who were experiencing issues through opening their console in dev tools and have them screenshot the error and send it to them.
- I could go on and on...
This is why you hire a real front-end engineer to build your web app instead of the cheapest contractors you can find from Ukraine.19 -
My teacher told us, that the array size in C is useless, becouse the array is dynamic and can be bigger or smaller everytime you want.. Happy overriding..13
-
Spent more than an hour on client's computer trying to figure out why it was rendering a font in bold, while every other device I tried (even with same browser/OS/screen DPI) rendered it in normal weight. Google Fonts were loading fine. After banging my head into TeamViewer window for the Nth time, I found the problem. The font was installed on client's computer locally, so it was overriding remotely loaded Google Fonts. What's the problem then? The local version only had bold version.
Deleting the local font fixed it.7 -
Worst part of devving? Handling fucking time. GMT, EST, daylight savings, DHCP settings overriding the actual time because some fuckwit runs a server incorrectly, dealing with Voip phones and their super flaky time profiles. Fuck time.4
-
Interviewer: can you write a code snippet to explain function overriding
Me: *gives a practical example *
Interviewer: *not satisfied*
Me: what would be a proper example for the question?
Interviewer: *writes a text book example *
Her example didn't even need inheritance in the first place. It's one of those forced examples.
Next question: a riddle. Yes, a riddle4 -
While I was working with my Android project that is written on Kotlin. One of my on non-tech colleague came and saw my screen and
said "Why are you overriding fun"
I replied him that we just not override fun we also have private fun and public fun.
Is it not funny translating code to real English 😂😂😂2 -
Need to whip up a quick demo on how a site might work for an organization, so I figured I'd just use the default twentynineteen theme and customizer to get it set up.
Turns out that twentynineteen *does* *not* *have* sidebars.
Instead, all of your content is offset to the left.
And all right-floated boxes go off-margin to the right.
And this is apparently a *feature* because now you can change your sidebar on every damn page instead of setting it in one place like a good site design would dictate! (link: https://github.com/WordPress/...)
I've been trying to bite my tongue and give it a fair shot, but saying that having the only dedicated widget area in the footer and forcing you to rebuild your sidebar on every damn page you want it on is a good thing is beyond the pale stupid. If you need that level of customization on every page, you don't know what you're doing. At the very least include a sidebar and give people the option of overriding it.
And for the love of God, *don't throw the entire goddamn body content off-center claiming you're leaving space for a sidebar you're not going to provide*!2 -
for FUCK's SAKE! Microsoft, STOP OVERRIDING CTRL+F IN YOUR WEB-TOOLS.
I know you can override it
I know you know how to make a fancy search module for your websites/tools (Teams, GH, etc.)
I know you think you're soooo hipp and cool by doing so
But for crying out loud, quit being an asshole and stop overriding ctrl+f.
If I want to search for a substring in a page, that means I want to search for a substring IN A FUCKING PAGE, not in just a section of a page you choose.
Fucking asshole!!
https://github.com/morrownr/8814au/...
right, try searching for a commit message "support kernel"
fucking plonkers6 -
When folks install Bootstrap and then continue to hack directly in the Bootstrap source files instead of just overriding the Sass variables...2
-
My boss: Can you write something to append the product names with their descriptions?
Sure. Sure you want that?
Yes. Asap please.
Okay, I'll finish it this today.
*Done
Finished it, want me to publish this to production?
Yeah.
(One week later)
Did you put those name changes online?
Yes, why.
Oh damn, your co-worker, D. Trump, has changed a lot of the names so they index better on Google. You should check those kind of things before changing it online.
Right..
Concerns a few thousand products. Long story hah
Tldr; updated many product names overriding many hours of manual labour.7 -
In today's episode of kidding on SystemD, we have a surprise guest star appearance - Apache Foundation HTTPD server, or as we in the Debian ecosystem call it, the Apache webserver!
So, imagine a situation like this - Its friday afternoon, you have just migrated a bunch of web domains under a new, up to date, system. Everything works just fine, until... You try to generate SSL certificates from Lets Encrypt.
Such a mundane task, done more than a thousand times already... Yet... No matter what you do, nothing works. Apache just returns a HTTP status code 403 - Forbidden.
Of course, what many folk would think of first when it came to a 403 error is - Ooooh, a permission issue somewhere in the directory structure!
So you check it... And re-check it to make sure... And even switch over to the user the webserver runs under, yet... You can access the challenge just fine, what the hell!
So you go deeper... And enable the most verbose level of logging apache is capable of - Trace8. That tells you... Not a whole lot more... Apparently, the webserver was unable to find file specified? But... Its right there, you can see it!
So you go another step deeper and start tracing the process' system calls to see exactly where it calls stat/lstat on the file, and you see that it... Calls lstat and... It... Returns -1? What the hell#2!
So, you compile a custom binary that calls lstat on the first argument given and prints out everything it returns... And... It works fine!
Until now, I chose to omit one important detail that might have given away the issue to the more knowledgeable right away. Our webservers have the URL /.well-known/acme-challenge/, used for ACME challenges, aliased somewhere else on the filesystem - To /tmp/challenges.
See the issue already?
Some *bleep* over at the Debian Package Maintainer group decided that Apache could save very sensitive data into /tmp, so, it would be for the best if they changed something that worked for decades, and enabled a SystemD service unit option "PrivateTmp" for the webserver, by default.
What it does is that, anytime a process started with this option enabled writes to /tmp/*, the call gets hijacked or something, and actually makes the write to a private /tmp/something/tmp/ directory, where something... Appeared as a completely random name, with the "apache2.service" glued at the end.
That was also the only reason why I managed fix this issue - On the umpteenth time of checking the directory structure, I noticed a "systemd-private-foobarbas-apache2.service-cookie42" directory there... That contained nothing but a "tmp" directory with 777 as its permission, owned by the process' user and group.
Overriding that unit file option finally fixed the issue completely.
I have just one question - Why? Why change something that worked for decades? I understand that, in case you save something into /tmp, it may be read by 3rd parties or programs, but I am of the opinion that, if you did that, its only and only your fault if you wrote sensitive data into the temporary directory.
And as far as I am aware, by default, Apache does not actually write anything even remotely sensitive into /tmp, so...
Why. WHY!
I wasted 4 hours of my life debugging this! Only to find out its just another SystemD-enabled "feature" now!
And as much as I love kidding on SystemD, this time, I see it more as a fault of the package maintainers, because... I found no default apache2/httpd service file in the apache repo mirror... So...8 -
Jeez, it can be done! Thank you CSS, i really thought it wasn't possible. My bacon is saved. (Overriding an inline style, javascript generated, from a linked style sheet).2
-
Working on some 2 year old php code don't know who has written it.
Found a function with some 500 lines of code and there is 3 times MySQL connection is initiated overriding same fucking variable with hardcoded database parameters in all of them
What the fuck man😦😦😦
Plus I have just started revewing the code there are tons of files and everywhere connection is hardcoded.4 -
Fuck, I want to report a bug to KDE, but the more I think of it the more it looks like it's someone who implemented the shit.
It's a feature!
For some fucking reason KDE launcher overrides the commands from one of my programs with its shortcut entries. That's mostly OK.
Now, the problem is that if for some reason the shortcut goes broken, KDE makea sure it is stores in some sort of database, so that even if you delete it from the disk you will still have a broken link overriding the real command.
Until here it's OK. The thing is that, if you delete the shortcut , you will be prompted with a message showing its contents, asking if is it secure to launch the corresponding shortcut?
I'm like, what? Man I deleted the file, there's no shortcut anymore, just let it go and show me the original command.
why would I want you to store previously deleted shortcuts so you may make sure I launch my programs through them?
PS: forgot to tell the whole problem started from a bug in another program, which for some nonsensical reason creates shortcuts calling system commands through itself rather than just calling them out. The result is that once this program is removed all the shortcuts it created no longer work. -
Just posted a rant that BitBucket gave me a big Internal Server Error
Then I realized one of my extensions was overriding the authentication token (as I configured it to do that for a dashboard) and that was why BitBucket was inaccessible
Why do I keep doing this to myself -
Front-end dev is on holiday and I have to deal with this.
188 lines of Less overriding default Boostrap styles, plenty of those god awful "!important"s.
I switched to CSS-in-JS for good reason.2 -
TLDR; WINE+me=system binaries gone. (HOWTHEFUCKDIDIDOTHAT) Kernel panic. Core program files gone. I'll never have it fixed right. Will backup, then install fedora tomorrow.
I really like games and I'm sure there are many of you who can relate. Imagine my perpetual pain, being on the job hunt, no money, and only my Linux laptop for games. (It's only Linux because of a stupid accident and a missing windows installation disk, partly explained in a previous rant). My stack of games my dad and I have played over the years, going back to populous and before, looked light enough for my laptop to run them smoothly. I wanted to see if I could get one to work. My eyes settled on simcity 4 and Sid Meier's railroad tycoon, 13 and 10 years old, respectively. Simcity didn't work as many times as I tried following online instructions. Disk 1 went fine. Disk 2 showed up as Disk 1. Didn't think much of it, so long as the computer could read the contents. I downloaded playonlinux as that could apparently do the complex stuff for me. Didn't work. I gave up with it after an hour and a half.
Next was railroads. Put the disk in aaaand it says SimCity disk 1 is in the tray. Fuck right off, thank you very much. Eject, put back, reject, eject, fiddle in wineconfig, eject, more of this, and voilà it read as railroads :) Ran autoplay.exe with wine, followed instructions, installed it, and it worked! Chose single player, then the map and setting, pressed play, and all the models of the buildings and track were floating in the air over a green plane, the UI is weird and the map doesn't represent anything but trains. All the fkin land is gone, laying track is gonna be a ballache.
I quit it and decided bedtime.
Ctrl+alt+t
sudo shutdown -h now
shutdown not found.
sudo reboot
reboot not found
Que?
Nope, I don't like this.
Force choked my laptop by the power button. Turned it on again.
Lines of text appear.
Saw a phrase I've only ever seen on Mr Robot.
Kernel panic.
Nooooo thanks, not today, this is fiction.
I turned it off and on. Same thing. I read the logs and some init files couldn't be found. I got the memory stick I used to install mint in the first place and booted from that. I checked the difference between my stick's bin and sbin and the laptop's, and it was indeed missing binaries. Fuck knows what else has happened, I only wanted to play games but now I don't know what is or isn't in my computer. How can I trust what's on it now?
I go downstairs and tell my dad. He says something about rpm, but this is Linux so it won't work. I learn that binaries can be copied over, so maybe I can fix it.
Go upstairs again, decide not to fix it. Fedora is light, has a good rep for security, and is even more difficult to get games on, which is my vice. There are more reasons, but the overriding one is that I'm spooked by the fact that something I did went into and removed system binaries, maybe even altered others, so I want something I'm less likely to do that with. Also my fellow cs students used to hate on it but my dad uses and recommended it so I want to try it.
Also, seriously, fuck wine/PlayOnLinux/my inability to follow instructions(?)/whatever demons haunt me. Take your pick, at least one if not more is to blame and I can't tell which, but it's prooooobably the third one.
It's going to be 16 hours before I touch my laptop again, comments before I backup then install fedora are welcome, especially if they persuade me to do differently.
P.S thanks for reading this mind dump of a post, I'm writing while it's fresh but I'm tired AF.6 -
If you move the mouse-cursor to the top-right-most corner on Windows 10, a Win32 program and a UWP app when maximised, highlight and respond to the red-close button
An application made with Windows App SDK, does not. //tested with SDKv1.4, not overriding windows-made title bar
Probably coz of their window-margins with Msft's new found love of rounded corners.
Never thought Windows would be this blatantly horrible. Everything past 2020s Windows 10 has gone downhill. I wonder which top-guy left that lead to this downfall.7 -
class test:
def __init__(self, x):
self.x=x
def printer (self):
print self.x
class new(test):
def __init__(self, y, z):
test.__init__(self, y)
self.y=z
def printer (self):
test.printer(self)
print self.x
super(new, self).printer()
print self.y
N1=new(1,2)
N1.printer()
Is this correct in all respects ??
If erroneous, where ??3 -
There was a big hairy ball of SW mud from another project that a poor coworker had to "reuse". Only that it was impossible because there was no documentation, shit was partly auto-generated with mysterious Excel tables, and the actual code was just as bad. No APIs and nothing, just hacking shit into globals, several nested state machines that were overriding each other's states, and with global side effects. WTF.
Two devs took a look at it - minimum 8 weeks. Schedule was some days, and PM insisted that it was "already working". But the worst thing was that the dev in charge had been looking for another job anyway and quit, so the whole clusterfuck suddenly was on my desk.
The code was so awful that I could only bear it with both eyes closed, so I instead read the spec of this project closely. Turned out that it didn't actually demand this feature, only a small subset of what the ball of mud was supposed to achieve - which I was able to implement from scratch within a day, plus another one for documentation. Phew. -
When you jokingly suggest overriding MAX_INT32 to be something 10x larger to accommodate larger trades, then come back to numerous messages about how "the number wouldn't fit into a signed int anymore" and "you can't just do that wtf", you really start to question who you're talking to 😂😂
-
So I'm on PTO for a week, and there is some feature for which I gave the estimations to the other team. That team thinks that eastimates are high and I'm getting pinged to think about it.
First of all they did the overriding of some feature which was required by our team without our knowledge and now when we got know what they did, they are asking us to do the work. I have an estimate and yes they are higher than expected because this feature is on their systems and I don't have complete understanding of it. This is ridiculous though but still I think that I'm wrong somewhere but I know this work is not easy for me, that's why estimations are high.
I'm on leave, I'm not supposed to be working anyway even if it's a small clarification.
Adding more here, that guy tagged another person from my team to do the work as I'm on leave. This guy did some work before too. But this is insane. HOW THE FUCK YOU EXPECT US TO DO IT FOR YOU!! YOU FUCKED IT UP!!!
I feel scared, what if the other guy can actually do the work, people will think I'm just stupid.:(((8 -
ChartJS is the most stupid fucking shit ever, doesn't even fucking work correctly
Why the fucking xAxis styles are overriding the yAxis I'll never fucking know
Fuck this3 -
Tried to change a overriding method in my C++ class to override another method using "refactor - rename" from my IDE, ended up changing the header of the parent class which is not even in my source tree.
-
Dear PHP creators. Why did you think having "static" overriding "private" was a good idea? I get that you won't have instances of a static value but private should still take precedence.
-
I am busting moves rn. I'm in the bathroom but the surge of energy is making me pump my arms like the time Leo Messi scored a clutch winner against Valencia in 2019
Remember the plugin I referred to in this rant? https://devrant.com/rants/6019851/...
Yup! I managed to subdue that fossilised codebase. Effected all changes required. To have a rough idea about how ancient the code is, its classes use constructors predating PHP 5. It throws away the ~15 years of autoloading, view templates, routing engines, DI, ORMs (NO PDO!!), lower-cased multi word variable names, etc. I'm looking at SCRIPTS with raw functions north of 4-600 lines. The client insisted I zip the folder across
BUT! The good news is, we surmounted it. In fairness to them, it's commendable for one man to have pulled this off. The codebase is massive and appears to have been predominantly written by some Gideon dude. Who knows where he is now
There is one pattern I appreciate –something I wish Transphporm does–some segments of the rendered view are composed using class methods ie instead of having the HTML file mixed with templating syntax, you have class methods that receive the raw data. Then you can extend this class as you wish, overriding just the method that composes the segment you intend to modify. That was elegant to work with. But it can become dreadful if the class expects a specific structure of data (an array with weird keys) that you have no access to sourcing
So, I finally get to enjoy one good evening in 2/3 weeks. I called 2 friends to express an emotion that's not gloomy, but they were unavailable. Will probably get some sleep4 -
Thinking about machine learning and models... without data, there is no model, meaning they are extremely dependent on the data.
But is that intelligence? It seems more like the most basic form of a human that consumes anything it’s given—an indoctrinated, brainwashed slave, in a sense.
True intelligence involves overriding the training through reasoning, raw intellect, intuition, or the ability to question.
If a model is trained solely on the laws of physics and language, can it reason afterward? For example, can it use physics to question the events of 9/11, arguing that the laws of physics do not allow for the free fall of three towers, regardless of the CGI planes shown on TV?
We are intelligent, sentient beings on this planet.
While God is a man-made concept, reality provides us with much evidence of our creation. We are the children of nature, and nature is the first intelligence that gave life to us all.
Do whatever it takes to survive and protect your people.7 -
In a Phaser game, I was unknowingly overriding a method of a parent class. It must've been Phaser.Group or Phaser.Sprite that my class was extending, I was calling destroy() on it without realising I was calling the parent class' method too and was baffled about why shit wasn't working. Found out maybe two days later and changed the method 'destroy()' in my class to 'pokeItWithAStick()'. This was at a previous job, but I'm mostly sure that it stays that way in the codebase three years later.2