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 - "ancient code"
-
So, you start with a PHP website.
Nah, no hating on PHP here, this is not about language design or performance or strict type systems...
This is about architecture.
No backend web framework, just "plain PHP".
Well, I can deal with that. As long as there is some consistency, I wouldn't even mind maintaining a PHP4 site with Y2K-era HTML4 and zero Javascript.
That sounds like fucking paradise to me right now. 😍
But no, of course it was updated to PHP7, using Laravel, and a main.js file was created. GREAT.... right? Yes. Sure. Totally cool. Gotta stay with the times. But there's still remnants of that ancient framework-less website underneath. So we enter an era of Laravel + Blade templates, with a little sprinkle of raw imported PHP files here and there.
Fine. Ancient PHP + Laravel + Blade + main.js + bootstrap.css. Whatever. I can still handle this. 🤨
But then the Frontend hipsters swoosh back their shawls, sip from their caramel lattes, and start whining: "We want React! We want SPA! No more BootstrapCSS, we're going to launch our own suite of SASS styles! IT'S BETTER".
OK, so we create REST endpoints, and the little monkeys who spend their time animating spinners to cover up all the XHR fuckups are satisfied. But they only care about the top most visited pages, so we ALSO need to keep our Blade templated HTML. We now have about 200 SPA/REST routes, and about 350 classic PHP/Blade pages.
So we enter the Era of Ancient PHP + Laravel + Blade + main.js + bootstrap.css + hipster.sass + REST + React + SPA 😑
Now the Backend grizzlies wake from their hibernation, growling: We have nearly 25 million lines of PHP! Monoliths are evil! Did you know Netflix uses microservices? If we break everything into tiny chunks of code, all our problems will be solved! Let's use DDD! Let's use messaging pipelines! Let's use caching! Let's use big data! Let's use search indexes!... Good right? Sure. Whatever.
OK, so we enter the Era of Ancient PHP + Laravel + Blade + main.js + bootstrap.css + hipster.sass + REST + React + SPA + Redis + RabbitMQ + Cassandra + Elastic 😫
Our monolith starts pooping out little microservices. Some polished pieces turn into pretty little gems... but the obese monolith keeps swelling as well, while simultaneously pooping out more and more little ugly turds at an ever faster rate.
Management rushes in: "Forget about frontend and microservices! We need a desktop app! We need mobile apps! I read in a magazine that the era of the web is over!"
OK, so we enter the Era of Ancient PHP + Laravel + Blade + main.js + bootstrap.css + hipster.sass + REST + GraphQL + React + SPA + Redis + RabbitMQ + Google pub/sub + Neo4J + Cassandra + Elastic + UWP + Android + iOS 😠
"Do you have a monolith or microservices" -- "Yes"
"Which database do you use" -- "Yes"
"Which API standard do you follow" -- "Yes"
"Do you use a CI/building service?" -- "Yes, 3"
"Which Laravel version do you use?" -- "Nine" -- "What, Laravel 9, that isn't even out yet?" -- "No, nine different versions, depends on the services"
"Besides PHP, do you use any Python, Ruby, NodeJS, C#, Golang, or Java?" -- "Not OR, AND. So that's a yes. And bash. Oh and Perl. Oh... and a bit of LUA I think?"
2% of pages are still served by raw, framework-less PHP.32 -
The company I work for...
Has:
1. No CI/CD
2. SVN instead of GIT
3. Outsourcing to India (oof)
4. No Automated Testing
5. Uses Bugnet (ancient, outdated)
6. No clearly defined code standards
7. No real documentation on the code
8. Rubbish code
9. No desire to reduce technical debt
10. Poorly maintained DB
11. Poor outdated equipment
12. A useless PM
13. Still priotizes IE support (??)
On a scale of 1 to 10 how fucked is this company and anything they develop?41 -
I've got a mini stroke today. My project ended and I got delegated elsewhere.
"It's going to be fine, it's c++, you will find yourself there"
Suspicious, it's a project everybody was staying out of as hard as they can. But hey, it's cool, how bad can it be? what can go wrong with that?
Reality was brutal, project that uses Boost C++ as framework and bjam as builder. Builds with a decent dose of luck, and only under special circumstances, only under one specific version of compiler. No docs, quartet of the code is in Fortran, just to use ancient lisp part which was second qarter. The most senior Dev around does not have idea how it all works. Also everything is inside one enormous try/catch block. Because of the reasons.
That's how people end up with severe alcoholism and meth addiction.8 -
In my current work, I have two systems to work on (let's name em Systems A and B). Both basically do the same thing; both allow users to book facilities available to them.
System A is already in production. My job is to fix any bugs that come up on said system. System B is an improved version that they wanted me to develop. This would follow a different framework etc. I am already halfway through this system.
Now, here's the fucked up part. The code for system A is a massive clusterfuck. It has unused commented code dated back to ancient times where men had the brain of an ape.
And don't get me started on the fucking logic. One part of the code was to retrieve and display the timeslots available for a chosen facility. The code to do that alone takes up 500++ fucking lines, filled with ajax commands, html manipulation and commented, unused codes..AND THAT'S JUST THE FRONTEND!
The fucking backend was not a problem of smelly code anymore. Nope. It was like a programmer had code diarrhea and shat his backend code all over the project. If I had a pin board, I would have made a crazy wall just to understand what some fucknut was trying to achieve.
Anyway, my supervisor told me to fix some bugs on System A. Knowing how the code was, I told her that I could refactor the code. Since I've already achieved that function on System B, with a shorter and cleaner code, I could just copy that and use on System A. But nope. She SPECIFICALLY told me to just "do whatever to fix the bugs. I don't want to waste time on System A." Okay. Makes sense to me. Whatever. I didn't wanna fuck my head up looking through that mess of a cesspool. So, I came up with a few hacks, not thinking of clean code and fixed whatever bugs there was. I then just pushed to the repo (after testing of course).
This bloody morning, supervisor came in and gave me more bugs to fix. When I thought she was done, she said "Hey. I saw the fix you made to the system. The bugs are fixed but the retrieval of the timeslots is now pretty slow. Could you see what is the problem?"
Slow.. She said that it was slow. And asked if I could fix it. I already told her what the problem was and she did not want me to waste time on it. But she wants me to fix it. WHAT THE FUCK IS WRONG IN HER BLOODY HEAD! I SWEAR TO GOD... UGHHHHH I swear I was already waterboarding her in my head. YOU WANT FAST?? How bout fucking allowing me to refactor the code?? Fucking shit head. I think I should take up yoga.1 -
!!office drama
I haven't been around much in recent weeks. Due to family illness, christmas shopping, dealing with estranged parents, and brooding over the foregoing, I haven't had a lot of time or energy left to myself.
tl;dr: The CTO ("API Guy") is ostensibly getting fired, and I might be taking over his job. I don't know if I should accept, try to stave this off, or simply flee.
------
Anyone who has been following my recent rants knows that API Guy is my boss, and he often writes terrible code. It's solid and unbreakable, but reading it is a *nightmare.* One of our applications is half the length of Leo Tolstoy's War and Peace, and it's difficult to tell what code is live and what amounts to ancient, still-active landmines. This is one application; we have several, most of which I've never even looked at.
Ostensibly the code is so terrible because the company grew extremely quickly, and API Guy needed to cram in lots of unexpected / planned-against features. From what I can see, that seems about right, but I haven't checked timeframes [because that's a lot of work!].
Here's a brief rundown of the situation.
- API Guy co-founded the company with the CEO.
- CEO and API Guy have been friends for a long time.
- CEO belives the company will fail with API Guy as head of tech.
- They could just be testing me; I have zero way of knowing. API Guy seems totally oblivious, and CEO seems sincere, so this feels pretty doubtful.
- CEO likes pushing people around. CEO believes he can push me around. API Guy doesn't budge. (I probably won't, either, except to change task priorities.)
- API Guy's code is huge and awful, but functional.
- API Guy is trying to clean up the mess; CEO doesn't understand (maybe doesn't care).
- Literally nobody else knows how the code works.
- Apart from API Guy and myself, the entire company is extroverted sales people.
- None of these sales people particularly like me.
- Sales people sell and sell and sell without asking development if they can pull enough magic features out of their hat to meet the arbitrary saleslines. (because the answer is usually no)
- If I accept, I would be the sole developer (at first) and responsible for someone else's mountain of nightmarish code, and still responsible for layering on new features at the same pace as he. Pay raise likely, but not guaranteed.
- My getting the position is contingent upon the CEO and the investors, meaning it's by no means guaranteed.
- If I don't accept, likely API Guy will be replaced with someone else of unknown ability, who doesn't know the code, and whom I must answer to regardless. Potentially OK, potentially a monumental disaster.
Honestly, it feels like I'm going to be screwed no matter what course I choose.
Perhaps accepting is slightly better?
The best would be to assume the position of CTO and keep API Guy around -- but that would feel like an insult to him. I doubt he'd be okay with it. But maybe. Who knows? I doubt the CEO would seriously consider that anyway.
I feel like a lamb between a dim, angry rhino, and an oblivious one.23 -
I have just thought of the perfect solution when support for fucking ancient IE versions creaps in the requirements (and asking the assholes to produce numbers to support the crazy does not help)
Just do browser detection and if IE < 9 Replace body with one of those winXP alert boxes that tell them there Computer is infected and that they can get a free scan (it's what they are used to anyway). Put a link to the installer of your favourite browser over the entire image.😎
Good news is 100℅ code reuse! Works on every outdated IE and every website that requires IE support.4 -
YOU FUCKING COCKSUCKERS!
Are you fucking serious? How it is possible that you, being a fucking teacher in a PRIVATE UNI, AREN'T ABLE TO FUCKING DEPLOY A .NET CORE WEB PAGE EVEN THOUGH I FUCKING WROTE YOU A PDF, LINKED TO MS DOCUMENTATION AND EVEN WENT TO TELL YOU HOW TO DO IT?
You fucking prick, and now you argue to your superiors that we aren't doing our job as expected... seriously? ARE YOU FUCKING STUPID SERIOUS?
I hope you choke on the turkey this christmas, you ignorant incompetent cheap slut... ha, you're not even cheap, because parents are paying THE SCHOOL to provide them with "supposed" better infrastructure, education than a public one, BUT YOU COME TO TELL ME I MUST CODE YOUR ANCIENT PAGE IN FUCKING ASPX WITH DOCUMENTATION DATED 4 YEARS AGO?
Yeez... seriously dude, level up or GTFO.12 -
An ancient legend goes that there exists sacred knowledge that enables anyone possessing it not to turn one’s career into a constant uphill battle with the management.
I sought this knowledge, I travelled the world, to no avail. Once upon a time, I climbed the Mount Fuji and met the wizard in his pagoda on the mount. I won in a CSS-golf battle with him, and he revealed the sacred truth: one need to chose companies that do business instead of constant backroom deals and dick-measuring contests.
Like Prometheus, I give this knowledge to you. An ancient scroll says that for this I’ll be chained to the mountain of PHP legacy code, and HRs will peck my brain for eternity, but I found Arachne, the queen of HRs, and exchanged the keto-diet secret for freedom.1 -
Fuck (some of) you backend developers who think regurgitating JSON makes for a good API.
"It's all in JSON. iOS can read JSON, right?"
A well-trained simian can read JSON, still doesn't mean it can do something with it. Your shitty API could be spitting out fucking ancient Egyptian for all I care, just make it be the same ancient Egyptian everywhere!
Don't create one endpoint that spits out the URL for the next endpoint (completely different domain, completely different path structure). Are you fucking kidding me?
As if that wasn't enough, endpoints receive data structured in one way, but return results in another!! "It's all JSON", but it's still dong.
How do I abstract that, you piece of shit? Now I have to write ever so slightly different code in multiple places instead of writing it only once.
How the fuck do I even model that in a database?
Have a crash course on implementing APIs on the client side and only come back when you're done.
Morons.6 -
start teaching people how and why to delete code instead of teaching them only how to write code
compare functional and object oriented languages as well as high level and low level languages and explain what are advantages of using certain language without going into the syntax
let people do mistakes and don’t punish people for making them but let them explain what happened, if they know what was the cause of mistake it is worth ten times than doing things correctly
mix teams per period of time instead of per project
make showcases how to modify ugly code to pretty one and what are the steps and what patterns people should look after
teach by not showing old stuff but showing where old stuff exists in modern things and why it’s important there and what’s the purpose of doing things certain way instead of flat theory based on ancient examples1 -
My manager thinks I am Superman! and he is so confident that can do any shit he wants me to do.
Yesterday he asked me to merge an ancient code hotfix (literally ancient) with latest branch of changes.
1. Hotfix is really old, most of the things are hardcoded, very specific to a stone age client.
2. Code documentation does not exist.
3. Developers of that code are probably dead.
4. Many Libraries which code uses are deprecated.
5. It's a legacy code, so no one has fucking idea what a particular clumsy block of code do, or what will happen if you remove it.
'if it runs don't touch it' policy by management.
Despite all this shit I successfully merged the the hotfix, refactored outdated code so as to run the application.
Showed this to my manager in full swag!
He was surprised at first, and asked me to show the code changes.
'Code review' was done by comparing files 😅
Manager: Dude, you have changed these lines, why? Explain.😧
Me: those lines won't work with new build, with new libs.☺️
Manager: then why can't you do old build with new changes?🙄
Me: umm.. wait... what???🤔
Manager: the code was working previously, it must be working even today without these changes.😡
Me: it was not working hence I made changes and now it's working fine see! ☺️
Manager: you have removed this, this and this!!! 😡
Me: but I also added that, that and that!😔
Manager: "don't touch it' if it works!"😡
Me: ... Idk what to say!
(In the back of my mind: "Don't touch it even it doesn't works!")😌8 -
My company has two offices in separate cities but they treat each the devs of each location very very differently.
In one office the devs get full power to experiment with whatever tech they want, they just stomp their feet and management gives em whatever they ask for, freedom of choice regarding anything they are working on, to be allowed to do greenfield work or experimental stuff
But in my office we are forced to do ONLY. Bug fixing and refactoring shitty code from over a decade a go, our tech is ancient and we are not allowed to to
Shit , anything we ask for is denied
And improvements to our process is shut down with the reasoning that whatever we got works so why meddle ??
For us , management is solely focussed on making sure we respond to support calls , deployments , configurations and little bug fixing. Basically they only care that we manage to finish for out next delivery.
No new work whatsoever!
If there is any hint of something new to to
Implemented the golden boys from the other office just stopm their feet tillmthey get it or just go off and start working on it then seek permission afterwards, with their much larger team they obviously get further than we do by the time management hears about it so they end up taking over the work since they already have more done already
My manager decided to push us to attend a company devCon to share ideas with our devs from our other location. This rapidly turned into a sour experience
Basically we do all shitty boring work which puts money on the table which goes straight to those idiots to play with...
They have the guts to laugh when we mentioned that we never get anything interesting to work on
Never seen so many of our devs looking up job sites on the bus back...
This is gonna blow up in management's face...2 -
After 10 years maintaining the same codebase, I sometimes find features in the system that I wrote years ago and I forgot they existed, like "Cool, I didn't know the system was able to do that, I completely forgot, I wonder how it works, and God knows how I wrote this shit, let's see..".
I've even found myself starting to implement features that already exist, and then having to revert the changes.3 -
I really like Kotlin as a language, but Gradle makes me feel nauseated.
Pulling in deps without getting errors, then the library won't resolve because of some version mismatch (still, no error or warning on build, until I try to import the dependency in the code, and then just "unable to resolve <library>" without details). All of the documentation on the internet is either super specific for Android projects, or for an ancient Gradle version. Feels like I'm back in Haskell's "Cabal Hell".
*runs back into the loving embrace of Cargo*.
What was I thinking, trying to write an application in something that's not Rust.5 -
Parts of the code I am working on date back to the early nineties, written in ancient C++ with lots of special cases for ancient compilers by people with 0-2 years of coding experience.
My favourite coding moment is every time when after refactoring a part of the code, it has about 1000 lines less (no exaggeration), is more reliable, AND can do a lot more than before.6 -
When you have to add new features to a 5 years old app, because it would be a heavy lift to rewrite.
So no dev lead has the balls to bring it through the board, so you are stuck with ancient and awful code.1 -
Going through legacy or other developers code which don't have documentation or even comments. Plus the author of the code is not working in same organisation anymore to consult. We have to understand the code like deciphering any ancient language. 😥2
-
Rant Mode: ON
Do you know what really grinds my gears? Those dreaded "404 Page Not Found" errors. It's like a digital black hole, sucking your users into a vortex of frustration.
And don't get me started on inconsistent coding standards. It's like trying to decipher hieroglyphics written by different ancient civilizations. Why can't we all just follow the same conventions?
Oh, and software updates that break everything! You spend hours perfecting your code, only for a new update to come along and wreak havoc. It's like the universe is conspiring against developers.
But hey, despite the rants, we developers are a resilient bunch. We thrive on solving problems, no matter how infuriating they can be. So, here's to the endless debugging, the endless coffee, and the endless love-hate relationship with coding. We wouldn't have it any other way.
Rant Mode: OFF
Phew, that felt good. Thanks for letting me vent!6 -
I have been keeping this inside for long time and I need to rant it somewhere and hear your opinion.
So I'm working as a Team Lead Developer at a small company remotely based in Netherlands, I've been working there for about 8 years now and I am the only developer left, so the company basically consists of me and the owner of the company which is also the project manager.
As my role title says I am responsible for many things, I maintain multiple environments:
- Maintain Web Version of the App
- Maintain A Cordova app for Android, iOS and Windows
- Working with pure JavaScript (ES5..) and CSS
- Development and maintenance of Cordova Plugins for the project in Java/Swift
- Trying to keep things stable while trying very hard to transit ancient code to new standards
- Testing, Testing, Testing
- Keeping App Stable without a single Testing Unit (sadly yes..)
- Just pure JavaScript no framework apart from JQuery and Bootstrap for which I strongly insist to be removed and its being slowly done.
On the backend side I maintain:
- A Symfony project
- MySQL
- RabbitMQ
- AWS
- FCM
- Stripe/In-App Purchases
- Other things I can't disclose
I can't disclose the nature of the app but the app is quite rich in features and complex its limited to certain regions only but so far we have around 100K monthly users on all platforms, it involves too much work especially because I am the only developer there so when I am implementing some feature on one side I also have to think about the other side so I need to constantly switch between different languages and environments when working, not to mention I have to maintain a very old code and the Project Owner doesn't want to transit to some more modern technologies as that would be expensive.
The last raise I had was 3 years ago, and so far he hasn't invested in anything to improve my development process, as an example we have an iOS version of the app in Cordova which of course involves building , testing, working on both frontend and native side and etc., and I am working in a somewhat slow virtual machine of Monterey with just 16 GB of RAM which consumed days of my free time just to get it working and when I'm running it I need to close other apps, keep in mind I am working there for about 8 years.
The last time I needed to reconfigure my work computer and setup the virtual machine it costed me 4 days of small unpaid holiday I had taken for Christmas, just because he doesn't have the enough money to provide me with a decent MacBook laptop. I do get that its not a large company, but still I am the only developer there its not like he needs to keep paying 10 Developers.
Also:
- I don't get paid vacation
- I don't have paid holiday
- I don't have paid sick days
- My Monthly salary is 2000 euro GROSS (before taxes) which hourly translates to 12 Euro per hour
- I have to pay taxes by myself
- Working remotely has its own expenses: food, heating, electricity, internet and etc.
- There are few other technical stuff I am responsible of which I can't disclose in this post.
I don't know if I'm overacting and asking a lot, but summarizing everything the only expense he has regarding me is the 2000 euro he sends me on which of course he doesn't need to pay taxes as I'm doing that in my country.
Apart from that just in case I spend my free time in keeping myself updated with other tech which I would say I fairly experienced with like: Flutter/Dart, ES6, NodeJS, Express, GraphQL, MongoDB, WebSockets, ReactJS, React Native just to name few, some I know better than the other and still I feel like I don't get what I deserve.
What do you think, do I ask a lot or should I start searching for other job?23 -
We had 1 Android app to be developed for charity org for data collection for ground water level increase competition among villages.
Initial scope was very small & feasible. Around 10 forms with 3-4 fields in each to be developed in 2 months (1 for dev, 1 for testing). There was a prod version which had similar forms with no validations etc.
We had received prod source, which was total junk. No KT was given.
In existing source, spelling mistakes were there in the era of spell/grammar checking tools.
There were rural names of classes, variables in regional language in English letters & that regional language is somewhat known to some developers but even they don't know those rural names' meanings. This costed us at great length in visualizing data flow between entities. Even Google translate wasn't reliable for this language due to low Internet penetration in that language region.
OOP wasn't followed, so at 10 places exact same code exists. If error or bug needed to be fixed it had to be fixed at all those 10 places.
No foreign key relationships was there in database while actually there were logical relations among different entites.
No created, updated timestamps in records at app side to have audit trail.
Small part of that existing source was quite good with Fragments, MVP etc. while other part was ancient Activities with business logic.
We have to support Android 4.0 to 9.0 of many screen sizes & resolutions without any target devices issued to us by the client.
Then Corona lockdown happened & during that suddenly client side professionals became over efficient.
Client started adding requirements like very complex validation which has inter-entity dependencies. Then they started filing bugs from prod version on us.
Let's come to the developers' expertise,
2 developers with 8+ years of experience & they're not knowing how to resolve conflicts in git merge which were created by them only due to not following git best practice for coding like only appending new implementation in existing classes for easy auto merge etc.
They are thinking like handling click events is called development.
They don't want to think about OOP, well structured code. They don't want to re-use code mostly & when they copy paste, they think it's called re-use.
They wanted to follow old school Java development in memory scarce Android app life cycle in end user phone. They don't understand memory leaks, even though it's pin pointed by memory leak detection tools (Leak canary etc.).
Now 3.5 months are over, that competition was called off for this year due to Corona & development is still ongoing.
We are nowhere close to completion even for initial internal QA round.
On top of this, nothing is billable so it's like financial suicide.
Remember whatever said here is only 10% of what is faced.
- An Engineering lead in a half billion dollar company.4 -
I once had to review and transform the code of one of my colleague at school which had no indentation, no spacing and was a clusterf*** of syntax errors. The nightmare was that it was all done in the ancient Turbo C++. So I opened up plain ol' Notepad and whipped up some decent code and helped him out of a tight situation.
Now he is no longer a programmer. :|7 -
Documentation? That's the stuff of dreams for us.
Instead we have ancient code written by people who have long left / forgotten with no idea what the cryptic mess they left behind does. -
I am really stressed rn. I have terrible Imposter's Syndrome coupled with this being my 2nd year as a professional (bootcamp grad) and an extreme lack of insight and support from my company. WFH has only exacerbated it. Im on a 2-ish person team handling some ancient legacy code with no one ever willing to just throw me a fucking bone. My supe is actually on my team and makes up the "ish" part and has always told me to ask questions but when I do he gets pissed and reminds me of all the people who are working and super busy and dont have time to stop what they're doing and help me. Its my first job in tech and I just need to know if this is a consistent thing across the board bc im ready to fucking jump ship. My anxiety levels are through the roof and when I go over our backlog I look at every card and ask myself how tf Im going to grt it done bc Ive never seen any of it before. Initially I thought i landed a great workplace with complete autonomy but now I just dont know. My other teammate has a habit of being condescending, whether he realizes it or not and therefore I just feel like im out here alone trying to figure all this shit out. This sprung from a card ive been working on for 2+ months but cant resolve, finally I just came to the conclusion it was above what im currently capable of and he told me he's "disappointed Im just throwing in the towel" even though ive asked for help from senior devs. Idk what to do, he even told me there'd be cards I may hit a wall on when I first started but this just feels shitty. Ive had other things going on to including surviving a fucking hurricane, having a friend murdered, and having my dad die all within a few weeks time. I am absolutely stretched to my emotional limit, but I dont know if Im overreacting. Anyway, I just needed to vent to people who could understand, thanks for reading.6
-
Oh, gather 'round fellow wizards of the code realm! 🧙✨ Let me regale you with the epic tale of software sorcery and the comical misadventures that come with it! 🤪🎉
So there we are, facing the dreaded Internet Explorer dragon 🐉 - an ancient, stubborn beast from the era of dial-up connections and clipart-laden websites. It breathes fire on our carefully crafted layouts, turning them into a pixelated disaster! 🔥😱
And then, the grand quest of cross-browser testing begins! 🚀🌍 One moment, your website is a shining knight in Chrome's armor, and the next, it's a jester in Safari's court. A circus of compatibility struggles! 🎪🤹
CSS, the arcane art of cascading style sheets, is our magic wand. But oh, the incantations can be treacherous! A slight misstep and your buttons start disco dancing, and your text transforms into a microscopic mystery! 🕺👀
But fear not, brave developers! We wield the enchanted sword of Stack Overflow and the shield of Git version control. We shall slay bugs and refactor with valor! ⚔️🐞
In this enchanted land, documentation is the mystical parchment, often written in the cryptic dialect of ancient monks. "This function doeth stuff, thou knoweth what I meaneth." 📜😅
And meetings, oh the meetings! 🗣️🤯 It's like a conference of babbling brooks in the forest of Jargon. "Let us discuss the velocity of the backlog!" 🌿🐇
But amidst the chaos, we code on! Armed with our emojis and a bubbling cauldron of coffee, we persist. For we are the wizards and witches of the digital age, conjuring spells in Python and brewing potions in Java. 🐍☕
Onward, magical beings of code! 🚀 May your bugs be few, and your merges conflict-free! 🙌🎩3 -
*[style*="width:"],*[width] {max-width:100% !important;}img[width] {height:auto !important;}
* !important feels so hacky but it works!
Old site with ancient code and multiple people not versed in css or even newer html. Decided, ah F it, just workaround that and * all the things!1 -
Hopefully, you already know that the company controlled by the alledged reptiloid subhuman and olimpic testicle juggler formerly known as Mister Zuck My Tits is not to be trusted.
But as is always the case in this bitch, I've been forced into cowjizz flooded swamps' worth of stinking shit platforms for the sake of avoiding isolation.
And so, I've just found yet another way in which Facebook **THUNDERSTRIKE** ... the company, not the geriatric ward, is one of the CROWN ACHIEVEMENTS of human civilization.
Let me tell you something: some people are fucking broke. Hell, some people sleep on the streets, live on scraps, and willingly engage in acts of public defecation when provoked. But I'm not even talking about them no, just plain *broke*.
And so imagine being that guy who doesn't really use his phone much, except maybe for sharing cat pictures with mom because that's what being an absolute chad is all about. You don't get a new phone, because money is a __little__ bit tight. But THEN...
The dreaded CAPITAL strikes, and requests of you to bend and fall onto your knees so as to provide intense, intimate and manual -- as well as oral -- PLEASURE to the [NOT SO] METAPHORICAL PENIS of the """SYSTEM""".
Oh, what an abominable, drooooooling revenant that lies before you!
"Gimme your ass... " he says, menacingly, as you wail about in a futile attempt to guard and preserve the very last vestiges of your own anal virginity.
And so you fight, and kick him in the NADS with everything you have, down to the final shreds of vigor. Victory! Or so you thought...
"You must... " he mutters, mortally wounded "update WhatsApp... "
"Still you breathe?!" you exclaim, suddenly transformed into a heroic, sexy moustachoed arquebusier "After I'm done ~OILING~ my VICTORIOUS CHEST, I *shall* bestow DEATH uppon you!".
But as you rip open your shirt to apply sensual oiling to your marvellous frontal assets, your nemesis reveals it's portentous Portugal: "this new version of Android... " he gasps as he perishes "is incompatible with your device... "
"Ughh! Sacrebleu!" you shriek out in pain, realizing that you are now unable to ACCESS THE FUCKING DATA THAT IS IN YOUR OWN FUCKING HARDWARE BECAUSE OF A STUPID FORCED BINARY INCOMPATIBILITY.
That's right. Now even if I *do* get a new phone, I can't do shit about losing all of the family memes. And contacts and all of that shit, but the stickers are more important. A minor inconvenience, yes, and it didn't need all of this preamble but I was doing the dramatic fight scene bit inside my head as I was writing and I got into it.
Because the only documented way to transfer all of that data is to OPEN THE APPLICATION and scan some code, but everytime I go to do that, IT TELLS ME I NEED TO UPDATE. And every time I GO TO UPDATE, it says that MY PHONE is TOO FUCKING OLD!! AAAAAAAGHGHGHGHGHGHGHG!!!!
And you too, might be a dashing french man from centuries past, with both balls and tits down to your fucking knees, folding your arms in a position that exhumes smugness in a disgustingly irreverent and self-aggrandizing way, looking at me as a mere plebeian who cannot wrap his head around the mystical art of interacting with Google's black deuce box.
And you would be somewhat right in your judgement! But just having to fiddle about with these fucking pocket Elmo screens is such a traumatic experience for me that I'd rather lose my stickers.
[ADBREAK] Are you a debonair victorian undercover butt pirate, taking unparalleled care of your Falstaffian, highfalutin poils pubiens? Need your "sword" sharpened, as you browse through the pages of this magnanimous lexicon? Would you rather allocate final death to your coworkers than learn one more synonym for sonorous, supercilious and pontifical?
We all know that ALL you need to help keep that honor intact is slaying your enemies in high-stakes combat. But how to satisfy less gallant needs, when male prostitution is outlawed in more than sixteen duchies?
Look no further than BloodCurse, the ancient hex that will haunt your family for countless generations! With BloodCurse, you may crawl the earth as a mindless, shameless, piece of shit cockswallowing JUGGERNAUT that craves nothing BUT the consumption of scabbed human ass!
BloodCurse is easily contracted through consumption of the GENITAL fluids of highly-lecherous succubi, conjured through [EXTREMELY CENSORED]! This forbidden arcana allows the user to debour HIS OWN testicles in no time!
Get your bottle of scents, sensual Portuguese chest oils, and fucking designer-drug bath salts for the low, low price of a passionate, unceassing self-blowjob! And use my code FRONTALASSETS for 60% OFF in your next soul-robbing foray into the felational dark arts!
Big ups to BloodCurse for sponsoring this RRRRRRRR~$RRR$$RR%5RRRRR$0000:>A48CC50A E3A1B22A : 330D4750 7C24E5A5|.......*3.GP|$.. 5262E7D5 0D1C24E6 : 85594B39 1CB7593E|Rb......YK9..Y>
:~11 -
So... our software is... really old. Part of it was built 20 years ago in Delphi 6 and is still used to this day. It's an automation tool, which supports some scripting... In WSH. Meaning, it only supports JScript (that's right, not javascript, just JScript, the 1998 version), VBScript, and through the use of activex, Python or Perl.
And even our *newer* software, built a couple years ago, just released an update where the HTML rendering engine was updated... to Gecko 38, the version from 3 years ago. And the JavaScript engine is Rhino, the "old" one now replaced by Nashorn a few years back, and barely updated since.
But... there is *some* light on the horizon. The very newest automation tool now has a new plugin, which is based in NodeJS. Having just installed this newer version, I looked in the files to find the nodejs.exe executable... to find that it's on version 8.9.4. Ok it's not precisely the "latest" version, but knowing the history of development for these things I almost expected node 0.10.
It's great news in all this ancient technology I have to deal with. When's the *last* time you made an HTTP request using this code?
var http = new ActiveXObject("WinHttp.WinHttpRequest.5.1");
http.open('GET', 'http://example.com/', false);2 -
Trying to refactor legacy code can be a real adventure. It's like exploring an ancient ruin, except instead of hidden treasures, you're uncovering cryptic code and dead ends. But the real plot twist comes when you realize there are no unit tests to guide you. It's like trying to navigate a maze blindfolded - you never know when you're going to hit a dead end and end up with a headache! 🤯6
-
Okay so for all of you who think that you can't do shit without stackoverflow. I'll tell you this, fuck SO. There's this ancient technique of programmers of old probably just about 20-25 years ago called RTFM. Why bother copy pasting some one else's spaghetti(that you might not fully understand) when you can write your own better code! (said in good faith). When something is behaving strange or you don't know what something requires just hit the docs or manual and read about the api because it is describes not only what it wants and needs but also what it does. So try this because it might have more information that you need than stack overflow might tell you12
-
Let's implement a workaround on top of another workaround which is a workaround of another ... workaround to the nth level. Just to avoid touching an ancient code¡¡¡2
-
Brought to you from the 5000+ line Java file. Contained within the 1500 line method. I bring you the following pattern. Let's guess all the ways we could've done this better?
- Streams
- For loop
- Iterator
What gets really fun is when this you get this pattern doubly nested so you have a random i's and j's floating all over the place.
Note: this isn't ancient code it was developed about 3 months ago.
[Code has been lightly anonymized]5 -
I guess I should relate what work experience I have: my internship.
A little backstory I suppose. It's required at my school to do an internship to graduate except under certain circumstances. They encourage work experience a lot where I study. It was around time for me to apply for internships. However, the closest I got was a phone call with Amazon that I biffed when they started asking about stuff like sorting algorithms and other Big O notation stuff. So I was pretty desperate. I found a small company that were looking for internships and got an interview with them. The pay was dirt (I made more as a crew trainer at McDonalds) but I needed that internship and they were only 10 minutes away.
Immediate red flags when I showed up to the address. At first I thought I was wrong, But I noticed the sign of the company pointing up some stairs that were installed on the side of the house I was in front of.
Interview was a bit weird. It was with the CEO and the marketing manager. Again red flags. I show up for work a week later.
Turns out, they have no full time developers. 1st day was getting my workstation ready and 2nd day I was running Ethernet cables to the basement where the phones were connected. Spent around a week doing that.
This was supposed to be a Software Engineering internship?? Excuse me?? I came here to learn how working on Software is supposed to be like! I was also their "tech support" both for their computers and their crappy software that was built 16 years ago that people still pay for that I had NO idea how it worked because I just started and NOBODY taught me anything! To make matters worse, even if I wanted to delve into the code to see how it works it was all made in ancient Perl which didn't make things any easier.
But I needed that internship to graduate. And thus begun my 9 months with them and boy howdy I have stories to tell. Stay tuned in the future.3 -
I am an ancient beast called "Humturnal".
..half human..half nocturnal..
I answer life problem and code like a beast at night.
I wake up tired as f**k and I remember nothing in the morning.1 -
Got accepted as a part-time FE developer in a well-known company.
Reality check: all I do is maintain a horribly formatted spaghetti code (20k+ lines in a file) using ancient tech like PL/SQL, prototypeJS and IE11.
Buy hey, at least I know some SQL magic now.. Right?!7 -
!Rant
Tldr: great spike to solve deployment problem may be a wasted effort.
Deployments of an ancient electron application need to be done in CodeDeploy to deploy the latest build. Customer hour restrictions cause this to be done only after midnight, and manually checked.
The whole team knows this is the wrong method of deployment and that there are many other operational problems with the project.
A few other senior team members get together and decide to spike out a way to use electron auto-deployment to accomplish this without using code-deploy at all.
After a shallow dive into this subject, we all get pulled aside to handle a change in another part of the software ecosystem. It happens. We leave the spike behind.
A junior-intermediate developer on the team pics the project up and gets a good spike going in a day and a half! We are all high fives and beers. This is Friday.
By Monday there is a pull request in for code review and it looks solid. Seems like it will make deployments a lot better.
Preparing the last deployment (hopefully) with CodeDeploy ever...
Marketing team members inform us that they are running an add system on the customer devices and to do it they are using Linux.
The current application being deployed is using Windows 10 (yeah, another problem).
They say they have made plans to move our application over to Linux. This means we may not be able to launch the junior devs great spike and the old deployment method may stay for the time being.
Meetings soon to find out how all of this will hash out.
End of rant. I hope I'm doing this right -
Spent about an hour and a half getting an NPE. Cleaned the project, rebuilt, restarted IntelliJ, danced the ancient code dance... Nothing.
Clicked Run one more time and everything worked. TF was that about? I HATE these types of bugs!!1 -
Ah, the ancient art of copy-paste development – where originality goes to die and bugs come out to play. It's like a cursed incantation that tempts even the best of us into the dark abyss of shortcuts.
You think you're saving time by copying that snippet from Stack Overflow, but little do you know, you've just invited a horde of gremlins into your codebase. Suddenly, your once-cohesive architecture looks like a patchwork quilt sewn by a drunkard.
And let's not forget the thrill of debugging when you realize that the copied code references variables that don't even exist in your context. "Ah, yes, I remember copying this gem at 2 AM. What could possibly go wrong?"
But wait, there's more! Copy-pasting also introduces a special kind of chaos when updates are needed. You find yourself fixing the same bug in five different places because you couldn't be bothered to encapsulate that logic in a reusable function.
So here's a heartfelt salute to all the copy-paste warriors out there, bravely navigating the treacherous waters of borrowed code. May your future coding endeavors involve more thinking, less CTRL+C, and a lot fewer late-night bug hunts!1 -
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. -
memcpy( _ticket.getData(), "\0\0\0\0\0\0", 6 );
... 15 times alike in one file.
Must be from the old ages, before memset was invented. -
"The Perils and Triumphs of Debugging: A Developer's Odyssey"
You know you're in for an adventurous coding session when you decide to dive headfirst into debugging. It's like setting sail on the tumultuous seas of code, not quite sure if you'll end up on the shores of success or stranded on the island of endless errors.
As a developer, I often find myself in this perilous predicament, armed with my trusty text editor and a cup of coffee, ready to conquer the bugs lurking in the shadows. The first line of code looks innocent enough, but little did I know that it was the calm before the storm.
The journey begins with that one cryptic error message that might as well be written in an ancient, forgotten language. It's a puzzle, a riddle, and a test of patience all rolled into one. You read it, re-read it, and then call over your colleague, hoping they possess the magical incantation to decipher it. Alas, they're just as clueless.
With each debugging attempt, you explore uncharted territories of your codebase, and every line feels like a step into the abyss. You question your life choices and wonder why you didn't become a chef instead. But then, as you unravel one issue, two more pop up like hydra heads. The sense of despair is palpable.
But, my fellow developers, there's a silver lining in this chaotic journey. The moment when you finally squash that bug is an unparalleled triumph. It's the victory music after a challenging boss fight, the "Eureka!" moment that echoes through the office, and the affirmation that, yes, you can tame this unruly beast we call code.
So, the next time you find yourself knee-deep in debugging hell, remember that you're not alone. We've all been there, and we've all emerged stronger, wiser, and maybe just a little crazier. Debugging is our odyssey, and every error is a dragon to be slain. Embrace the chaos, and may your code be ever bug-free!1 -
The Code Abyss Beckons! 🤯
Hey fellow devs, brace yourselves for a wild ride into the chaotic realm of code confessions and debugging dramas! 🎢💻
So, here I am, standing at the precipice of my latest coding adventure, armed with a keyboard and a questionable amount of caffeine. 🚨☕
Today's quest involves unraveling the mysteries of a legacy code that seems to have been written in a language only decipherable by ancient coding sages. 😱📜
As I navigate through the nested loops of confusion and dance with the dragons of runtime errors, I can't help but wonder: Is this what the Matrix feels like for developers? 🕵️♂️💊
In the midst of my debugging odyssey, I stumbled upon a comment in the code that simply said, "// Abandon hope, all ye who enter here." 🏴☠️📛 Well, isn't that reassuring?
And then there's the moment when you finally fix that elusive bug, and you feel like you've just tamed a mythical creature. 🦄✨ Victory dance, anyone? 💃🕺
But let's not forget the rubber duck sitting on my desk, patiently listening to my monologues about algorithms and existential coding crises. 🦆🗣️
So, dear coding comrades, how's your journey through the code abyss going? Any epic wins or facepalming fails to share? Let the rants flow like a river of improperly closed tags! 🌊🚫
May your semicolons be where they should and your documentation be ever truthful. Happy coding, and may your merge conflicts be swift and painless! 🌈🤞
#CodeOdyssey #DebuggingDrama #DevRantChronicles9 -
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 -
TL;DR I just recently started my apprenticeship, it's horrible so far, I want to quit, but don't know what to do next...
Okay, first of all, hey there! My name is Cave and I haven't been on here for a while, so I hope the majority of you is doing rather okay. I'm programming for 6 years now, have some work experience already, since I used to volunteer for a company for half a year, in which I discovered my love for integrations and stuff. These background information will probably be necessary to understand my agony in full extend.
So, okay, this is about my apprenticeship. Generally speaking, I was expecting to work, and to learn something, gaining experience. So far, it only involved me, reading through horrible code, fixing and replacing stuff for them, I didn't learn a thing yet, and we are already a month in.
When I said the code is horrible, well, it is the worst I have ever seen since I started programming. Little documentation - if any -, everywhere you look there is deprecated code, which may or may not been commented out, often loops or simply methods seem to be foreign for them, as the code is cluttered with copy paste code everywhere and on top of that all, the code is slow as heck, like wtf.
I spent my past month with reading their code, trying to understand what most of this nonsense is for, and then just deleting and rewriting it entirely. My code suddenly is only 5% or their size and about 1000 times faster. Did I mention I am new to this programming language yet? That I have absolutely no experience in that programming language? Because well I am new and don't have any experience, yet, I have little to no struggle doing it better.
Okay, so, imagine, you started programming like 20 years ago, you were able to found your own business, you are getting paid a decent amount of money, sounds alright, right? Here comes the twist: you have been neglecting every advancement made in developing software for the past 20 years, yup, that's what it feels like to work here.
At this point I don't even know, like is this normal? Did git, VSCode and co. spoil me? Am I supposed to use ancient software with ancient programming languages to make my life hell? Is programming supposed to be like this? I have no clue, you tell me, I always thought I was doing stuff right.
Well, this company is not using git, infact, they have every of their project in a single folder and deleting it by accident is not that hard, I almost did once, that was scary. I started out working locally, just copying files, so shit like that won't happen, they told me to work directly in the source. They said it's fine, that's why you can see 20 copies of the folder, in the same folder... Yes, right, whatever.
I work using a remote desktop, the server I work on is Windows server 2008, you want to make icons using gimp? Too bad, Gimp doesn't support windows server 2008, I don't think anything does anymore, at least I haven't found anything, lol.
They asked me to integrate Google Maps into their projects, I thought it is gonna be fun, well, turns out their software uses internet explorer 9.. and Google maps api does not support internet explorer 9... I ended up somehow installing CEF3 on that shit and wrote an API for it in JS. Writing the API was actually kind of fun, but integrating it in their software sucked and they told me I will never integrate stuff ever again, since they usually don't do that. I mean, they don't have a Backend as far as I can tell, it looks like stuff directly connects with their database, so I believe them, but you know... I love integrating stuff..
So at this point you might be thinking, then why don't you just quit? Well I would, definitely. I'm lucky that till December I can quit without prior notice, just need a resignation as far as I can tell, but when I quit, what do I do next? Like, I volunteered for a company for half a year and I'd argue I did a good job, but with this apprenticeship it only adds up to about 7 months of actual work experience. Would anybody hire somebody with this much actual work experience? I also consider doing freelancing, making a living out of just integrating stuff, but would people pay for that? And then again, would they hire somebody with this much experience? I don't want to quit without a plan on what to do next, but I have no clue.
Am I just spoiled, is programming really just like that, using ancient tools and stuff? Let me know. Advice is welcomed as well, because I'm at a loss. Thanks for reading.10