Do all the things like ++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatarSign Up
Get a devDuck
Rubber duck debugging has never been so cute! Get your favorite coding language devDuckBuy Now
Search - "wk155"
We need more JS devs for our frontend.
After half a year of PM complaining that he doesn’t find devs, he finally came back to us:
TeamLead: „... wait, you searched for Java devs half a year?“32
My team handles infrastructure deployment and automation in the cloud for our company, so we don't exactly develop applications ourselves, but we're responsible for building deployment pipelines, provisioning cloud resources, automating their deployments, etc.
I've ranted about this before, but it fits the weekly rant so I'll do it again.
Someone deployed an autoscaling application into our production AWS account, but they set the maximum instance count to 300. The account limit was less than that. So, of course, their application gets stuck and starts scaling out infinitely. Two hundred new servers spun up in an hour before hitting the limit and then throwing errors all over the place. They send me a ticket and I login to AWS to investigate. Not only have they broken their own application, but they've also made it impossible to deploy anything else into prod. Every other autoscaling group is now unable to scale out at all. We had to submit an emergency limit increase request to AWS, spent thousands of dollars on those stupidly-large instances, and yelled at the dev team responsible. Two weeks later, THEY INCREASED THE MAX COUNT TO 500 AND IT HAPPENED AGAIN!
And the whole thing happened because a database filled up the hard drive, so it would spin up a new server, whose hard drive would be full already and thus spin up a new server, and so on into infinity.
Thats probably the only WTF moment that resulted in me actually saying "WTF?!" out loud to the person responsible, but I've had others. One dev team had their code logging to a location they couldn't access, so we got daily requests for two weeks to download and email log files to them. Another dev team refused to believe their server was crashing due to their bad code even after we showed them the logs that demonstrated their application had a massive memory leak. Another team arbitrarily decided that they were going to deploy their code at 4 AM on a Saturday and they wanted a member of my team to be available in case something went wrong. We aren't 24/7 support. We aren't even weekend support. Or any support, technically. Another team told us we had one day to do three weeks' worth of work to deploy their application because they had set a hard deadline and then didn't tell us about it until the day before. We gave them a flat "No" for that request.
I could probably keep going, but you get the gist of it.7
The moment i started Android Porting.
The tons of messages i got on XDA from random people.
Oh fucking hell
But one message was like WTF ?
Not exactly the message but it has the same point.
Hey Bro, I installer your room and it work but when i turned my phone of it didnt turn back on. The small buttn on side doesnt work to turn it on.
Then he posted the same message to thread since i dont respond to PMs.
Some user helped him and what was the issue ?
HIS FUCKING PHONE BATTERY WAS DEAD
He just had to charge it. FFS6
Previous developers read entire result of a SELECT into array of arrays.
Then used that later on in the following fashion.
print "name: " + result[row]
print "address: " + result[row]
without any description whatsoever what the numbers mean.
And it's here "result" and "row", in the actual code it was "arr" and "ii".
And these arrays were "public static" used everywhere, but initialized only at few places, so if you went onto wrong screen or if there was a phone call that kicked the app out it crashed.
But real fun began when people started changing queries and altering tables...
I seriously thought I was being pranked as a new hire.7
My code broke for no reason.
I added a log statement to see why.
What the 何?!7
Worst WTF dev experience? The login process from hell to a well-fortified dev environment at a client's site.
I assume a noob admin found a list of security tips and just went like "all of the above!".
You boot a Linux VM, necessary to connect to their VPN. Why necessary? Because 1) their VPN is so restrictive it has no internet access 2) the VPN connection prevents *your local PC* from accessing the internet as well. Coworkers have been seen bringing in their private laptops just to be able to google stuff.
So you connect via Cisco AnyConnect proprietary bullshit. A standard VPN client won't work. Their system sends you a one-time key via SMS as your password.
Once on their VPN, you start a remote desktop session to their internal "hopping server", which is a Windows server. After logging in with your Windows user credentials, you start a Windows Remote Desktop session *on that hopping server* to *another* Windows server, where you login with yet another set of Windows user credentials. For all these logins you have 30 seconds, otherwise back to step 1.
On that server you open a browser to access their JIRA, GitLab, etc or SSH into the actual dev machines - which AGAIN need yet another set of credentials.
So in total: VM -> VPN + RDP inside VM -> RDP #2 -> Browser/SSH/... -> Final system to work on
Input lag of one to multiple seconds. It was fucking unusable.
Now, the servers were very disconnect-happy to prevent anything "fishy" going on. Sitting at my desk at my company, connected to my company's wifi, was apparently fishy enough to kick me out every 5 to 20 minutes. And that meant starting from step 1 inside the VM again. So, never forget to plugin your network cable.
There's a special place in hell for this admin. And if there isn't, I'll PERSONALLY make the devil create one. Even now that I'm not even working on this any more.9
At a previous company, a new IT director decided we should outsource the development of a webapi to another company, but this outside company would not be allowed access to the database, so we had to develop a webapi to provide data to the outside company's system, so we could call their webapi and get the same data back.7
Back in my sysadmin days we had an IT zoo to look after. And I mean it... Linux side was allright, but unix.... Most unices were no longer supported. Some of their vendors' companies were already long gone.
There was a distant corner in our estate known to like 2 people only, both have left the company long ago. And one server in that corner went down. It took 2 days to find any info about the device. And connecting to it looked like:
1 ssh to a jumpbox #1
2 ssh to a jumpbox #2
3 ssh to a dmz jumpbox
4 ssh to an aix workload
5 fire up a vnc server
6 open up a vnc client on my workstation, connect to than vnc server [forgot to mention, all ssh connections had to forward a vnc port to my pc]
7 in vnc viewer, open up a terminal
8 ssh to hp-uxes' jumpbox
9 ssh to the problematic hp-ux
Everytime I encounter cpanel or plesk
fuck that shit, I dont need that aids-software on any machine11
!Dev but still a work related wtf moment.
A company has lunchtime sessions where people could present their hobbies or interests. All went well until one guy presented about his and his wife's interest in BDSM, complete with props and photos. The sessions were quietly abandoned after that.5
The day that the back-end of the team complained loud and clear to boss that my code was bad because I wasn't giving support to IE5 and IE6.
At that time IE7 was already dying and the global usage was less that 5% in total (adding IE7 and IE8).
After 15 mins of heated argument between me and her (note that all this time she didn't give a fuck while I mentioned numbers to support my point), boss who wasn't even listening just asked:
Boss: will you develop faster if you don't need to worry about them?
Boss: fine, don't think we need to give support to them.3
Actually the worst fucking developer experience is meeting those all knowing people who think they know everything but actually they even don’t know how the fucking tools they’re using every day are written and how they work.
Those people that think when they installed library it should do everything how they imagined to and don’t fucking bother to debug problems and create pull requests if it’s fucking buggy.
Those fucking ranters who moan about something they don’t understand.
Those fuckers who think if they understood what A*, Dijkstra, graph algorithm is they’re smarter then others.
No you fuckers you’re dumb as fuck cause instead of explaining it to someone you just blame people for not knowing “obvious shit”.
All those fucking ignorants I am fucking writing about you.
You either start support each other or fuck you people.7
1: When i saw my friends codebase, like wtf who the hell name their variables "cake" & "kek" and who the hell puts JS, HTML, CSS & PHP inside the same file. One huge mess.
2: Another example: "Lets name the C# class, ClusterCustomer, because it sounds funny" - it had nothing todo with a cluster.
3: (probably the most wtf):
So my friend who coded in NodeJS, who had to switch back to PHP due to some reasons, he said he didnt like PHP before (and it sucks), only because he coded inside notepad++ (makes sense right -.-).3
So I've had a shoulder surgery to fix my problem always losing my left arm, I'm on a medical leave, so no work but i get payed, nice and dandy ... Yesterday my old colleague/friend calls me that he arranged an interview for me for a project ... Excuse me but wtf, I'm happy getting payed and not working 🤔
I vent to the interview, and all they want is to add Romanian and Hungarian translations to a site and mobile app they have, technically they don't even have access to the server or files to add the other languages.
Now explain that to a non tech guy.
We agreed that they get my answer when they have approval and access to the needed stuff 🤣
Edit: this also fits this weeks question8
Me: I deprecate a react component, because it's bloated and no longer makes sense, and I let everyone on the team know that we're working to get rid of that component
Other Dev: Hmm, if I copy this component for every time that it is used, rename all of my copy's and delete the original, I got rid of the deprecated component...
Me: After hearing that deprecated component was removed... "Good job other Dev"
Me: A couple of weeks later after dev leaves company and I start adding some new features to the app "WTF"
1. When two solutions architect in their 50's started having an email fight while the other one is sharing his screen to me. It started when our SA reported an issue to the other SA's workstream. He was demonstrating one of the dev work he wanted me to do when the other SA responded to his email saying "You're just making all these issues and blaming us before we blame you." Our SA couldn't let it pass and responded while he was sharing his screen and asked, "What did I do?"
It was funny because our SA just got back from a tax break and his first innocent email ever got an aggressive response.
2. When a middleware expert bragged about her willingness to help us optimize our application. It turned out, it was their system that's causing the issue.
3. When a colleague got too comfortable and decided to respond to my work-related email about video games. I responded nicely that I didn't have time to play these days and he said, "because all you do in your condo is have sex". He was joking and he's a known dumbass, btw. I let it slide for a couple of months then after my last day, I forwarded his email to the project manager. It got him so furious and an investigation if other employees are experiencing the same behavior from that guy started.
I quit that job for other reasons but the fact that I reported it after I'm gone made my manager think that the guy was the reason I left and that I didn't feel safe saying it while I was there which made him even more angry at the guy.
4. The time when a junior developer used curse words as test data. One of them in all caps "SMEGMA". My team was pretty cool about it, had a good laugh, and just told him to stop doing it. Then he responded to my email with "EZ" which meant "easy" when I said he did a good job in one of the activities.
This triggered the fuck out of my team members and they gave him hell. No one disrespects Senpai. One of my team members made him cry and pretty much told that he hasn't proven anything yet and his attitude is fucking unacceptable.
5. When two business analysts started fighting during a conference call and the solutions architect was playing referee. One of the BAs don't know shit about the application and the other BA just told her to learn the application because it's necessary to do her job. The other BA started bitching and whining about it while the other one tells her that she's just trying to help. Then she said, "No! You're not helping anything."
And many more. I don't remember most of them.6
We were running an obfuscator as part of our build pipeline, but also were not. I discovered we had disabled every rule, and after asking around it turns out that the obfuscator broke the app (because of reflection and things I won't go into).
So I turned it off.
An hour later the CTO came to me and said to put it back. "We have to obfuscate, put it back."
"But... it wasn't doing anything, other than slowing the build down."
"I don't care, we HAVE to run obfuscation. It's in our contract with the client."
My manager's boss just commited on a delivery date a month from now. We dont know what is to be delivered, nor does the client. We are supposed to work on a platform that we know nothing about. And of course the catchphrase is : yeah just use big data and spark. I'm dying...6
One of my worst WFT moments was just over 2 years ago.
A former colleague had been tasked with “upgrading” our solution for handling customer specific CSS on our platform for building newsletter emails.
He had been with us for about 5 years and ported most of the front end gui over that time from classic asp to .net and C#.
This work started in November and with a pause over dec-mid jan for high season and Christmas leave he continued.
In the beginning if mars we had the first of multiple WTF on that when I realized that his solution required a lot of special CSS or rather LESS, more than the a actual HTML for the template, and all was custom less rules that was very hard to understand.
We found that he actually never really understood how LESS worked and had tried to do things in a very backward way. Another colleague jumped in and manage to clean it up a bit so it got down to manageable levels.
Then in the end of Mars came the next bigger WTF. This is a newsletter building application. Turns out the new LESS based solution was entirely dependent on the js version of LESS and only worked when running in the browser. Guess what, the email send engine is not a browser and css classes and rules generally does not work in emails.
The new solution was impossible to integrate with the part that built and sent the emails without some very heavy rework.
Oh, and it was also completely incompatible with 12 years of old newsletters and customer templates that just did not work.
And of cause, he had not shown any of this in code reviews but rather just merged it part by part to the new version branch interleaving it with 5 months of other work.
He left the company short after.11
Work at software contracting company
Get a new client, iOS objective-c app with ~40000 lines of code
Previous Dev didn't leave a single comment, and he didn't use a database, he used 'NSUserDefaults'1
When they want to take a business critical app that is using Enterprise Oracle running on Exadata, and move it to community Postgres running on Amazon RDS, because "it will be in the Cloud, and it will save us money..." No, no it won't.2
Jajaja a friend of mine told me that he was going to pay me if I helped his father with a small system. He told me he was going to pay me %20 and I only had to do the design... Then almost finishing I figured that he was going to receive the %20 from the total payment and I was going to receive the %20 from his part 😓😓 obviously I didn't finish my part and I didn't give them6
I was using Delphi 7 to develop a desktop application in Windows 2000. Every time my application opened the standard Windows open file dialog, I'd get a BSOD but only if I was running the application with debugger attached. Never found out WTF was wrong... Just changed my code not to show the open dialog if IsDebuggerPresent() was True.
This weeks question fits me well, as I am still unsure about the full details of how the fuck this all came together and was about to just rant about it anyway.
Ever since this companies network equipment and cabling has been updated, a lot of vital tools went down and bug out every now and then, at seemingly random times.
The codebase is a horrible mess to begin with and random things execute at random times and at random places spread all over different resources that get random hooks from random physical values etc.
Turns out (or at least what it so far seems like) all of them somehow sync their clock and other variables based on how many (valid-?) requests it gets per measured time and similar oddities, so when the network equipment got updated, that meant that multiple processes now could reach each other much faster and therefore threw off thousands of values and internal clocks.
There's a total of like 600 systems that are all "separate" from each other but all need to communicate in-sync for the production chain to properly work. Thankfully I didn't sign anything yet, so might actually just redirect them to somebody else, I am not ready to age 20 years, even for the amount that would pay.1
There was a time in my life when I had one of these multiple times a day. I was a windows user then. I’d click one thing and it would literally do the opposite. Shitty software vendors sold us software that had error messages with no text in them. Microsoft office yuk. You had to download unsigned drivers from the machines vendor and just install them, praying that there wasn’t a rootkit in the kernel code you were willfully injecting, and that there was no bloatware in the installer (there pretty much always was). There were multiple times that I downloaded the right driver from the right vendor and it refused to install because “this machine is not compatible” and I had to hex edit the binary to make it go.
File names that got too long would fuck the entire system up and you couldn’t delete them, at least not without a linux live cd or yes, dropping caches and hex editing the disk, the system would just randomly stop booting up one day and you’d never know why, sometimes it was literally because a dll file was missing or corrupted and I would just replace the file from another working machine and it would be fine. How the fuck even? But that “only” happened three times. All the other times I never ever figured out why my install was broken.
everything you wanted to do requires a mouse, and the c++ API was nonstandard for reasons that nobody alive understands.
I will never ever be going back. Had to go to therapy after being a windows user.5
It was in old days when I was working in java and windows systems.
Java and different log4j versions across dependencies caused system not working only on production server.
Turned out some of libraries got log4j embedded and conflicted with other log4j.
It worked in all computers except production one.
Actually that was my main reason to switch my career to python after that dependency hell.
Another one was windows server 2008 tcp connection limit set to 200 or something.
We needed to change registry to get our servers working. After this case we finally managed to convince people to switch to linux.
Anyway any non standard error when you got multiple layers communicate with each other is hard, practice make it easier to solve those problems as your success moment comes faster.4
None of my localhost calls were getting through, either through postman or through app. I wasted nearly an hour and then realised my NO_PROXY was configured with ; instead of , I wanna kill myself right now 😫6
During my first project in one of the SQLite statements I didn’t realize that it needed single quotes since I was new to it. So I brushed that off but when working on the next function for the program 8 hours were dedicated to debugging to only realize that the error was caused because I forgot the fucking single quotes. FUCK
This condition over here which is never supposed to be true sometimes becomes true, no one know how or why, just change it manually in prod whenever that happens...1
Oh, my worst dev experience.
First of all everyone know it, people who ask you to repair there computer 🤦♂️
Or people who say: "Hey Windows Media player is not working now. Fix it"
But the best moment and worst too is a moment where I present my new website and a friend start to refresh the site with F5 on his browser. I ask him why he do it and he answere "Yeah, you will be rich when I do it"
I don't get it. Why rich? So I ask him and he answere that websites are paid by web request an "clicks" "views" counter.
That was the stupidest thing I ever hear. Okay when I would show ads than maybe it's "true" but without them🤦♂️
But that's not the end after I explained him that it's not so he fucked me up that I would be very stupid because I don't register on a service which pay you for it. I explained him that the only service could be an ad service but no he don't understand it and try to discuss with me that a service like this exist. I ask for a link to the service and he could not answer.
For me it was the worst experience because for me it was the most stupidest thing ever and he try to discuss with me and really we discuss 1 hour about it🤦♂️🤦♂️🤦♂️3
Integrating some SAP service in our otherwise perfectly ok application and having a glimpse of the SAP way -.-1
C++ reading the zero address every fucking time I try to run this piece of shit why is it doing that I didn't do anything bad to it bitch I am trying to sort an array why are you reading address 0 it's not for you reeeeeeeeeeeeeeeeeee4
My first time using an MVC framework, not understanding packaging libraries, essentially writing over a composer package for it to do what I needed. 3 days of work later, did a composer install annnnnnd surprised pikachu
Watching my first demo of Outsystems low code bullshit. What self respecting dev would WANT this as their environment?? How the complete fuck is this a thing??? Buncha lazy shits...4
1) Had to fix severe bugs in a dynamic UI (configuration-driven forms) component.
Recognized undocumented Copy/Paste/Modify/FuckUp driven variations of the same component all over the project. Unsurprisingly, the implementations covered 99% of the antipattern catalog on wiki.c2.com and could compete with brainfuck in regard to human-readable code.
Escalated the issue, proposed a redesign using a new approach, got it approved.
Designed, Implemented, tested and verified the new shared and generic component. Integrated into the main product in the experimental branch. Presented to tech lead/management. Everyone was happy and my solution opened even more possibilities.
Now the WTF moment: the product with the updated dynamic UI solution never has been completely tested by a QA engineer despite my multiple requests and reminders.
It never got merged into baseline.
New initiatives to fix the dynamic UI issues have been made by other developers. Basically looking up my implementation. Removing parts they do not understand and wondering why the data validation does not work. And of course taking the credit.
2) back in 2013, boss wanted me to optimize batch processing performance in the product I developed. Profiling proved that the bottleneck ist not my code, but the "core" I had to use and which I must never ever touch. Reported back to him. He said he does not care and the processing has to get faster. And I must not touch the "core".
(FYI: the "core" was auto-generated from VB6 to VB.Net. Stored in SourceSafe. Unmaintainable, distributed about a bunch of 5000+ LoC files, eye-cancer inducing singlethreaded something, which had naive raw database queries causing the low performance.)
When I started at a new job and couldn't find the CMDB. I asked one of the so-called experts if it was true that we didn't have one, and he confirmed. "We don't need one," he said. "We have puppet!"
Thousands of servers. Hundreds in our own little silo. No CMDB at all. What the fuck?2
All those mine WTF moments are somehow related with caching which i keep on forgetting... the most fresh one was last week, i had some GIGANTIC mySQL query, and for the sake of response time I immediately made a cache function that kept Redis cache for a day or so... so last week i had to change something (good ol' client and his visions for app). So there i was with the query that returned same god damned results every time, i copy the query in some mySQL manager and it goes fine, but in the app it doesn't... what the actual FUCK!!! i was questioning my career until i figured it out, i was planning to buy some sheeps and a fife and to hell with this, a loud facepalm was echoed through the office that day...3
short: The admin with enough xp is ill, there is no one with xp with varnish is and after 1 restart varnish outputs only 503.
long: there original admin is ill but he gave me an project to migrate an typo3 installation to a new server. Thats ok.
Plan: I move 150 GB of data with rsync to the new server, let specialists do something and switch ips between the new and old and clear varnish with a restart.
Reality: +2 hours to migrate the data, because of false infos from the admin, 7 hours preparing the switch, 5 minutes switch, 3 hours to find out the F*****G varnish is the single point of failure. I and the t3 guys agree to see the next day what went wrong.
ALL HAPPENED TODAY!
Plan for tomorrow: speak with the boss to account the extra hours to that day so i dont get over 10 hours and debug that fucking varnish and delete some servers from another project from the backupsystem and monitoring.3
Just gonna leave this here:
Like who the fuck puts releases in their own git repo? Apparently this guy.8
my recents WTFs
1. Typo3 in general 2. Outlook ignoring „margin“ with a lower m ... capital M works fine.4