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 - "legacy php"
-
Everyone here ranting about a fucking missing semicolon. I can't remember the last time a missing semicolon was the issue...
You wanna know what's REALLY BALL-BUSTING????
WHEN THE FUCKING 10 y/o LEGACY CODEBASE, CODED BY FUCKING PHP WORDPRESS SCRIPTERS WHO THOUGHT THEY COULD BUILD AN ENTERPRISE SHIT CAUSE ZF2 "LOOKS EASY" AND THEN FILL IT UP WITH SPAGHETTI, IS SO BAD WRITTEN THAT IN ORDER FOR THE PAGE TO RENDER YOU ACTUALLY ****HAVE**** TO DISABLE ERROR REPORTING SO WHENEVER A FUCKING ERROR HAPPENS ON THE TEMPLATE RENDER COMPONENT OF ZEND FRAMESHIT 2, YOU'RE LEFT WITH A FUCKING BLANK PAGE AND NOTHING IS LOGGED TO THE LOG FILE, SO YOUR ONLY OPTION IS DIE() DEBUGGING LINE BY LINE ON THE 1300 LINES PHTML FUCKFEST OF A VIEW THEY HAVE.
MISSING SEMICOLON? YES PLEASE, GIVE ME MORE OF THAT SHIT38 -
Hey, wanna hear a disappointing stack?
- WordPress
- jQuery
- vanilla inline CSS
- shitty random legacy PHP
Disclaimer:
The author is NOT responsible nor liable for any injuries, mental health issues, sanitary problems, asexuality, crippling depression, triggered by this rant nor liable for any damaged walls, hurt animals or deaths.12 -
I just got handed a legacy php web project... Full of vulnerabilities... And it's using only mysql_ functions... Not only it's not OOP, there is not even a single class...
How good it's coded: User profiles are created manually by the frontend dev as htmls, and then the past php dev implemented them as links etc in the current page.
This is how I feel:5 -
Why the fuck would you assign two new values to the same variable in consecutive lines like that ? I swear this project is driving me nuts. Fuck the dev who wrote this.4
-
Hello there, just couple of words about PHP. I've been develop on PHP more than 10 years, I've seen it all 3,4,5,{6},7. Yes PHP was not good in terms of engineering and patterns, but it was simple, it was the most simple language for web to start those days. It was simple as you put code into file, upload it via FTP and it works. No java servlets, no unix consoles, no nothing, just shared hosting account was enough to host site, or even application with database. As database everybody used to have mysql, again because its simple to start and easy to maintain. So PHP+MySQL became industry standard on Web during 00-2012, and continues in some way.
You can write HTML and logic inside single file, within php code, even more single file may content few pages, or even kind of framework. That simplicity and agility sticks everybody who wants to develop sites with PHP.
This is pretty much about why it is so popular.
Each good or wannabe PHP developer in an early days write its own framework or library (like in javascript this days because of nodejs)
Imagine that PHP has hadn't have package manager, developers used to have host packages on their own sites, then various packages catalog sites created, and then finally composer. A gazillions of php code had spread over internet, without any kind of dependency control. To include libraries to your projects you have to just write include, or require. Some developers do it better than others.
So what we have ? A lots of code, no repositories, zip archives with libraries, no dependency control.
Project that uses that kind of code are still alive even today, they are solid hose of cards, and unmaintainable of course.
And main question that I'm trying to answer is Why PHP is not good ?
- First is amount of legacy code which people copy and pasted into their project, spread it even more like a virus.
- Lack of industry standards at the beginning lead to a lots of bad practices among developers. PHP code usually smells.
open source php projects in early days was developed in same conditions so even in phpbb, phpnuke, wordpress, drupal used to have a lot of bad practices in their codebase. So php developers usually not study by another library, instead they write their own frameworks/libraries.
- "It works", - there are no strong business demands, on web development, again because lack of standards, and concerns.
This three things are basically same, they linked to each other and summarize of answer of why PHP have strong smells and everybody yelling against it.
Whats is with PHP nowadays ? Of course PHP today is more influenced by good practice of webdev. Composer, Zend, Laravel, Yii, Symphony and language it self became more adult so to say, but developers...
People who never tried anything except PHP are usually weaker in programming and ecosystem knowledge than people who tried something else, python, perl, ruby, c for instance.
Summary
PHP as any other programming language is a tool. Each tool has its own task. Consider this and your task requirements and PHP can be just good enough solution.
"PHP is shit" - usually you heard that from people who never write strong applications on PHP and haven't used any good tools like Symphony or Laravel.
Cheap developers, - the bigger community, the more chance to hire cheap developers, and more chance to get bad code. That can be applied on any other language.
PHP has professionals developers, usually they have not only php on scope.
That's all folks, this is very brief, I am not covering php usage early days in details, but this is good enough to understand the point.
Enjoy.8 -
Still trying to get good.
The requirements are forever shifting, and so do the applied paradigms.
I think the first layer is learning about each paradigm.
You learn 5-10 languages/technologies, get a feeling for procedural/functional/OOP programming. You mess around with some electronics engineering, write a bit of assembly. You write an ugly GTK program, an Android todo app, check how OpenGL works. You learn about relational models, about graph databases, time series storage and key value caches. You learn about networking and protocols. You void the warranty of all the devices in your house at some point. You develop preferences for languages and systems. For certain periods of time, you even become an insufferable fanboy who claims that all databases should be replaced by MongoDB, or all applications should be written in C# -- no exceptions in your mind are possible, because you found the Perfect Thing. Temporarily.
Eventually, you get to the second layer: Instead of being a champion for a single cause, you start to see patterns of applicability.
You might have grown to prefer serverless microservice architectures driven by pub/sub event busses, but realize that some MVC framework is probably more suitable for a 5-employee company. You realize that development is not just about picking the best language and best architecture -- It's about pros and cons for every situation. You start to value consistency over hard rules. You realize that even respected books about computer science can sometimes contain lies -- or represent solutions which are only applicable to "spherical cows in a vacuum".
Then you get to the third layer: Which is about orchestrating migrations between paradigms without creating a bigger mess.
Your company started with a tiny MVC webshop written in PHP. There are now 300 employees and a few million lines of code, the framework more often gets in the way than it helps, the database is terribly strained. Big rewrite? Gradual refactor? Introduce new languages within the company or stick with what people know? Educate people about paradigms which might be more suitable, but which will feel unfamiliar? What leads to a better product, someone who is experienced with PHP, or someone just learning to use Typescript?
All that theoretical knowledge about superior paradigms won't help you now -- No clean slates! You have to build a skyscraper city to replace a swamp village while keeping the economy running, together with builders who have no clue what concrete even looks like. You might think "I'll throw my superior engineering against this, no harm done if it doesn't stick", but 9 out of 10 times that will just end in a mix of concrete rubble, corpses and mud.
I think I'm somewhere between 2 and 3.
I think I have most of the important knowledge about a wide array of languages, technologies and architectures.
I think I know how to come to a conclusion about what to use in which scenario -- most of the time.
But dealing with a giant legacy mess, transforming things into something better, without creating an ugly amalgamation of old and new systems blended together into an even bigger abomination? Nah, I don't think I'm fully there yet.8 -
It's enough. I have to quit my job.
December last year I've started working for a company doing finance. Since it was a serious-sounding field, I tought I'd be better off than with my previous employer. Which was kinda the family-agency where you can do pretty much anything you want without any real concequences, nor structures. I liked it, but the professionalism was missing.
Turns out, they do operate more professionally, but the intern mood and commitment is awful. They all pretty much bash on eachother. And the root cause of this and why it will stay like this is simply the Project Lead.
The plan was that I was positioned as glue between Design/UX and Backend to then make the best Frontend for the situation. Since that is somewhat new and has the most potential to get better. Beside, this is what the customer sees everyday.
After just two months, an retrospective and a hell lot of communication with co-workers, I've decided that there is no other way other than to leave.
I had a weekly productivity of 60h+ (work and private, sometimes up to 80h). I had no problems with that, I was happy to work, but since working in this company, my weekly productivity dropped to 25~30h. Not only can I not work for a whole proper work-week, this time still includes private projects. So in hindsight, I efficiently work less than 20h for my actual job.
The Product lead just wants feature on top of feature, our customers don't want to pay concepts, but also won't give us exact specifications on what they want.
Refactoring is forbidden since we get to many issues/bugs on a daily basis so we won't get time.
An re-design is forbidden because that would mean that all Screens have to be re-designed.
The product should be responsive, but none of the components feel finished on Desktop - don't talk about mobile, it doesn't exist.
The Designer next to me has to make 200+ Screens for Desktop and Mobile JUST so we can change the primary colors for an potential new customer, nothing more. Remember that we don't have responsiveness? Guess what, that should be purposely included on the Designs (and it looks awful).
I may hate PHP, but I can still work with it. But not here, this is worse then any ecommerce. I have to fix legacy backend code that has no test coverage. But I haven't touched php for 4 years, letalone wrote sql (I hate it). There should be no reason whatsoever to let me do this kind of work, as FRONTEND ARCHITECT.
After an (short) analysis of the Frontend, I conclude that it is required to be rewritten to 90%. There have been no performance checks for the Client/UI, therefor not only the components behave badly, but the whole system is slow as FUCK! Back in my days I wrote jQuery, but even that shit was faster than the architecuture of this React Multi-instance app. Nothing is shared, most of the AppState correlate to other instances.
The Backend. Oh boy. Not only do we use an shitty outated open-source project with tons of XSS possibillities as base, no we clone that shit and COPY OUR SOURCES ON TOP. But since these people also don't want to write SQL, they tought using Symfony as base on top of the base would be an good idea.
Generally speaking (and done right), this is true. but not then there will be no time and not properly checked. As I said I'm working on Legacy code. And the more I look into it, the more Bugs I find. Nothing too bad, but it's still a bad sign why the webservices are buggy in general. And therefor, the buggyness has to travel into the frontend.
And now the last goodies:
- Composer itself is commited to the repo (the fucking .phar!)
- Deployments never work and every release is done manually
- We commit an "_TRASH" folder
- There is an secret ongoing refactoring in the root of the Project called "_REFACTORING" (right, no branches)
- I cannot test locally, nor have just the Frontend locally connected to the Staging webservices
- I am required to upload my sources I write to an in-house server that get's shared with the other coworkers
- This is the only Linux server here and all of the permissions are fucked up
- We don't have versions, nor builds, we use the current Date as build number, but nothing simple to read, nonono. It's has to be an german Date, with only numbers and has always to end with "00"
- They take security "super serious" but disable the abillity to unlock your device with your fingerprint sensor ON PURPOSE
My brain hurts, maybe I'll post more on this shit fucking cuntfuck company. Sorry to be rude, but this triggers me sooo much!2 -
When you realize the legacy PHP code you're working in has a class you're extending with over 2000 lines and you think, "Nope, this isn't a class, it's a university."2
-
"Our last lead-developer was a real smart guy, he modernized the legacy code and we all learned a lot from him"
I need a beer, and a shotgun.10 -
I just discovered a local beer brewery called Crazy Duck. Now that's my kind of debugging buddy!
I'm buying some the moment I get back from vacation to test them on a legacy PHP project.2 -
Java:
Primitive streams. Their need to exist is a monument to legacy failure.
VB.net
OrElse and AndAlso short-circuiting operators. The language designers were too fucking lazy to process logic, so they give specific keywords for those cases.
PHP
Random Hebrew error messages
JS
Eval. It can be used responsibly, but most of the times you see it it's because someone fucked up.
C#
Lack of Tuple destructuring in argument specification. Tuples were added, and pattern matching was added, and it's been getting better. The gear grinding starts with how Tuple identity assignment in arguments is handled. Rather than destructuring into the current scope, it coalesces the identity specification into a dot property of whatever the argument name is. This seems like an afterthought given they have ootb support for ignore characters.
Typescript
This will probably be remedied in the next version or two, but Tuple identity forwarding between anonymous scopes normalizes to arrays of union types, because tuples compile to typeless arrays. It's irritating because you end up having to restate the type metadata in functional series even when there is no possibility for any other code branch to have occurred.12 -
99% of our server-side code is Python and PHP (legacy applications).
Asked a junior dev to make a small update to a PHP site so we could have it run some cleanup server side. Plenty of existing PHP code to look at and piece something together. Should be 50 lines max.
Did he use the existing PHP code to do this task? Nope. Did he at least use Python? Nope.
Node.js
His response?
"I couldn't figure it out and Node.js seemed to have good support for mongo so I used that instead."
We have 0 lines of server side javascript. Never had node installed. Literally none of the devs use node here. Not only is this completely outside of our tech stack, but he had to take the time to learn Node and JS just because he thought it was easier.
Much would of rather he put in twice as much time to learn the tools of our stack.8 -
Oh man. Mine are the REASON why people dislike PHP.
Biggest Concern: Intranet application for 3 staff members that allows them to set the admin data for an application that our userbase utilizes. Everything was fucking horrible, 300+ php files of spaghetti that did not escape user input, did not handle proper redirects, bad algo big O shit and then some. My pain point? I was testing some functionality when upon clicking 3 random check boxes you would get an error message that reads something like this "hi <SENSITIVE USERNAME DATA> you are attempting to use <SERVER IP ADDRESS> using <PASSWORD> but something went wrong! Call <OLD DEVELOPER's PHONE NUMBER> to provide him this <ERROR CODE>"
I panicked, closed that shit and rewrote it in an afternoon, that fucking retard had a tendency to use over 400 files of php for the simplest of fucking things.
Another one, that still baffles me and the other dev (an employee that has been there since the dawn of time) we have this massive application that we just can't rewrite due to time constraints. there is one file with (shit you not) a php include function that when you reach the file it is including it is just......a php closing tag. Removing it breaks down the application. This one is over 6000 files (I know) and we cannot understand what in the love of Lerdorf and baby Torvalds is happening.
From a previous job we had this massive in-house Javascript "framework" for ajax shit that for whatever reason unknown to me had a bunch of function and object names prefixed with "hotDog<rest of the function name>", this was used by two applications. One still in classic ASP and the other in php version 4.something
Legacy apps written in Apache Velocity, which in itself is not that bad, but I, even as a PHP developer, do not EVER mix views with logic. I like my shit separated AF thank you very much.
A large mobile application that interfaced with fucking everything via webviews. Shit was absolutley fucking disgusting, and I felt we were cheating our users.
A rails app with 1000 controller methods.
An express app with 1000 router methods with callbacks instead of async await even though async await was already a thing.
ultraFuckingLarge Delphi project with really no consideration for best practices. I, to this day enjoy Object Pascal, but the way in which people do delphi can scare me.
ASP.NET Application in wich there seemed to be a large portion of bolted in self made ioc framework from the lead dev, absolute shitfest, homie refused to use an actual ioc framework for it, they did pay the price after I left.
My own projects when I have to maintain them.9 -
A lot of engineering fads go in circle.
Architecture in the 80s: Mainframe and clients.
Architecture in the 90s: Software systems connected by an ESB.
Architecture in the 2000s: Big central service and everyone connects to it for everything
Architecture in the 2010s: Decentralized microservices that communicate with queues.
Current: RabbitMQ and Kafka.
... Can't we just go back to the 90s?
I hate fads.
I hate when I have to get some data, and it's scattered on 20 different servers, and to load a fucking account page, a convoluted network of 40 apps have to be activated, some in PHP, others in JS, others on Java, that are developed by different teams, connected to different tiny ass DBs, all on huge clusters of tiny ass virtual machines that get 30% load at peak hours, 90% of which comes from serializing and parsing messages. 40 people maintaining this nightmare, that could've been just 7 people making a small monolithic system that easily handles this workload on a 4-core server with 32GB of RAM.
Tripple it, put it behind a load balancer, proper DB replication (use fucking CockroachDB if you really want survivability), and you've got zero downtime at a fraction of the cost.
Just because something's cool now, doesn't mean that everybody has to blindly follow it for fucks sake!
Same rant goes for functional vs OOP and all that crap. Going blindly with any of these is just a stupid fad, and the main reason why companies need refactoring of legacy code.12 -
[CMS of Doom™]
The gift that keeps on giving...
When you think you've seen it all after 7 months in legacy hell, you get another gift:
Let's say you use PHP, but your IQ is in the zero-ish range, then it is obvious to:
- use define() for constants in all your config.*.php files
- then include said config.*.php files multiple times
- and because define() doesn't overwrite the same constant, because it's - you know - a constant, you instead of including just do a file_get_contents() to read the PHP file as string and then parse the values by Regex.
The dev who wrote this was truly one of the devs ever.12 -
My company just got a new developer to work on a legacy PHP app.
My boss was boasting about how this guy has more years of professional experience than me ( I have 9 months of experience and he has been working for 4 years on PHP).
Today was one week since he started and I had him set up a REST API, I had to explain to him what json_encode does and how http requests work.6 -
My own personal hell was a html page that had a script tag that called a rest endpoint that sent back a text block of JavaScript that was then dynamically executed to redirect the user to a php 3 page that was the exact same thing as the original page but with an extra bit of css to make the buttons blue and slightly rounded
You can’t make this shit up6 -
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 -
Sooo I've been working on an ancient php 5.6 project that did not have any documentation and was a homemade "framework" created 7 years ago. The original creator is long gone and no one else knows a lot about this project.
When I first looked into it I almost immediately noticed the security flaws...
Old outdated libraries
a "development" feature to easily turn dev mode on/off
BY A GET PARAMETER!
it spits out full sql queries and php warnings -.-
Oh and did I mention that the site is a webshop.... and has a backdoor password?
AND THAT THE CUSTOMER REQUESTED THAT?3 -
OMFG! Who’s bright fucking horrible stupid ass idea was it to mix Ajax with php (php deciding the ajax paths) with random js outputting HTML inside random fucking static divs found no where near the logical route of content.
Trying to add a simple fucking status to a gigantic cluster fuck of a legacy project is just FUCK.
If I could I would burn this bitch to the ground and start again I would, But no, it’s needed.
Someone kill me before I break the shit out of this thing, I would take a wordpress project right now instead. -
Dev manager: Php 8 is around the corner and i'd like to move the project to it
Dev: this would be a huge change I don't think you understand what you're asking...
Manager: Yes I understand, we'll plan 2-3weeks for the migration
Dev: the app is under symfony2.4, what you're asking is completly off the mark
Manager: look we'll plan it and we'll see don't be pessimist
Dev: ok whatever
I left the company, good luck to my fellow dev5 -
i understand some developers like to write wrapper functions to handle tedious things, I even understand how to write dynamic SQL queries, but for the love of fucking god and sanity, NEVER FUCKING DO THIS!!!!
Yes its PHP, but its not even bad PHP, its a fucking abomination from hell of PHP.rant mysql legacy code gone wrong bourbon lots of bourbon why the fuck god no php sql injection ftw what in the flying fuck30 -
Well, for starters there was a cron to restart the webserver every morning.
The product was 10+ years old and written in PHP 5.3 at the time.
Another cron was running every 15 minutes, to "correct" data in the DB. Just regular data, not from an import or something.
Gotta have one of those self-healing systems I guess.
Yet another cron (there where lots) did run everyday from 02:00 to 4ish to generate the newest xlsx report. Almost took out the entire thing every time. MySQL 100%. CPU? Yes. RAM? You bet.
Lucky I wasn't too much involved at the time. But man, that thing was the definition of legacy.
Fun fact: every request was performed twice! First request gave the already logged-in client an unique access-token. Second request then processed the request with the (just issued) access-token; which was then discarded. Security I guess.
I don't know why it was build this way. It just was. I didn't ask. I didn't wanted to know. Some things are better left undisturbed. Just don't anger the machine. I became superstitious for a while. I think, in the end, it help a bit: It feels like communicating with an alien monster but all you have is a trumpet and chewing gum. Gentle does it.
Oh and "Sencha Extjs 3" almost gave me PTSD lol (it's an ancient JS framework). Followed by SOAPs WSDL cache. And a million other things.5 -
I was looking for a job 2-3 months ago and two companies reached out to me after the interviews and offered me a working position. One company was pretty close to me and didn't require me to relocate to another city, even though it was a shittier kind of IT/developer job where we needed to fix legacy PHP CMS's. By that point I had no money and was depressed after looking for that long and jumped on the opportunity. Forward 1.5 months later and the company I started working for decided to file for bankruptcy. Nice huh, working for a whole 1.5 months. I reached out to other company that would have hired me otherwise in hopes they would still have a position open, all they can offer me is a non-paid internship. I would need to relocate to another city where I don't have anywhere to stay and pay rent + a deposit, after which I would be broke again, and they offered me a performance review after the internship after which they would THINK about giving me a job. Fuck this.4
-
Recently for a project I needed to read/write ID3 tags from MP3 files. And after a long search, I found this bloated, monolithic but quite stable library, "getID3".
So, I was looking through the code-base and I found this. This guy literally storing the key value based data embedded as comments within the class file. Then wrote a method to parse the data and even used caching to ensure maximum speed! And such usage is repeated all over the code-base.
So, this is what people used do before arrays were invented :314 -
Often when I struggle with a complex programming task or get stuck in a bug, this cube and a big cup of ☕ helps me to get back on track.
But when nasty legacy PHP code or WP templates hits the fan, only a mental institution can help...4 -
Mystery of the day: why some developers can't decide on a code style. Let's count:
- two types of brace placements
- three types of assignment spacing (with, without spaces, and aligned with extra space)
- two types of clause spacing
- mixed case in the first char of a variable for no apparent reason(?)
- bonus: unneeded parentheses
At least in ONE thing the person was consistent: no space between parameters!
WHY GOD.13 -
Coming back here after years to rant about... myself.
TLDR: I fucked up and now have to call a thousand people as a dev, I'm not even getting paid for it and they all get crazy about a random ID that got assigned to them, so now I want to throw away all my electronics and become a skilift operator.
Stupid me deployed a project shortly before we have the largest amount of orders in the year. (Like 90% of yearly orders in a couple minutes cause they are sold out fast and people wait to order first)
I got this horrible legacy "plain self written framework php" project which I tried to upgrade state of the art.
There was one piece missing to upgrade everything and nicely deploy it to some fresh new servers which can handle the high load which peaks at the time orders open.
So I did it the day before orders open and... everything worked well! Nothing crashed.
I wrote my client to wait a little before he confirms the orders, since after confirmation each of the people who ordered will receive an email where they can choose a unique number which they'll receive as a sticker with the order.
Since it's an event my client is promoting, people will meet each other wearing those unique stickers and being able to identify each other online and in person with this number.
Suddenly my clients call me that "customers are complaining about that there is something wrong"
Turned out he confirmed all orders straight away and that part of the application which makes the number unique was broken on the update.
So everyone could chose any number (also taken ones) as his "unique" number.
In my panic, I told my client "It's my mistake, I'll deal with it of course and call the affected people in my free time, since it's my mistake you don't have to pay for it". (it's my largest client by far, am a freelancer)
Realizing when people can chose any number it'll not be a few ones who have the same, it's like almost everyone did chose "69", "1", "420", "88 (a scary amount of people)",... (with 69 being the number being chosen by most people btw, even more then "1")
So now I have to call about a thousand people telling them a new random ID will be assigned to them. I thought of course about mailing them, wrote a script that deals with the issue automatically, and FUCKED IT UP TOO so everyone is confused and the only way to deal with it is by a call basically.
And while I'm sitting here now for 2 days straight calling people in my free time about their random ID will have to change, I realized that some people are quite crazy about random ID's.
I'm talking about yelling and threatening because "is it too much to ask for a working website when ordering this expensive product".
I hate my life right now and am getting quite serious about throwing all my electronic devices away and become a skilift operator instead. Fuck the higher pay, it's not worth the shit, I wanna have only responsibility about one button to press while watching people fall on their face.5 -
I started at a company to develop an "uber" clone. Hired by the company's cto. I was happy initially as i had been unemployed for a while but that's because i didn't see the shitstorm coming. The task was build this using php, well 2 weeks later and db locking issues because mysql only allows 100 connections and the website takes over 200mb per request, i tried using the meteor framework, a lil better but the orphaned process would require me to reboot every 2 days. So enter erlang, built in 3 weeks works amazing problems none here... Well in comes the cto (which came in once a week). Apparently he had been reviewing my code and didn't understand it. He couldn't understand no for loops etc and demanded that it be made understandable to a normal dev. Did normal devs write uber no. Anyhow i spent the next 6 Weeks refactoring trying to make elixir looks like imperative programming, he finally gave up, so now I'm deep committed writing an API, finish in a week cto comes in and "why aren't you using patch" i don't need it, well another day implanting a patch api that will never be used. Ok done. Now we have a meeting with the investors who i worked in the same building with and they want a frontend built. I explained i was a backend dev and they needed a uiux expert. Next week cto comes back with this jquery fire pit and stolen bootstrap theme and take me with implementing it. This time we scrap the api change some of the backend logic and implement rest from the 90s one static page per request. After 3 months working with jquery I'm let go because of finical issues. I told them i was a backend dev but they didn't listen if the cto would've gotten a frontend expert things would be different but what to expect from a cto who's coding legacy is creating WordPress plugins.
Hopefully things will be better soon I'm tired of living on the streets.5 -
Maintaining a legacy Apache x86 PHP application that is coded in a way that it requires windows as an operating system.
Oh wait thats my job2 -
My company con not find any other developer than me.
I could not understand.
We use only up to date libraries in our projects.
Please note the comment private properties...12 -
My worst devExperience since there are dev evperiences for me, was when I had to rewrite a pretty important tool to the new onlineshop we created.
See https://devrant.com/rants/1016596/...
My best devExperience in 2017 was going live with one of our biggest web projects I had to develop all alone and hearing only great feedback. My boss told me there were more than 30'000 visitors one day after going live.
It was and still is quite satisfying. 😎1 -
Okay, first rant here.
Spend most of my morning searching for a js file that was supposed to build some graphs in a report page in this legacy system (still in active development) just to find it embedded inside a random .php file being included inside a wall of if-elses (that shit has around 100 lines) on the index.php (that somehow manages to route all the nonsense that's going on there).. was it really that difficult to make it a proper .js file? and actually import it on the page that is using it? c'mon...4 -
is it just me, or do some people just make life difficult for the fucking sake of making life difficult?
now, lets ignore the lack of sanitised data, lets also ignore the lack of prepared statements, and for the love of god... lets ignore some magic numbers, because I still don't know what they mean yet....
but why! why would you create an array, implode it, smash it into a database query on the fucking fly, instead of just adding the data into the query in the first place.... it's not like you were doing this right to begin with, but this... this is next level!28 -
So I setup a nice csv file for the customer to fill in the shop items for their webshop, you know? with a nice layout like
name - language - description etc.
(just temporary, because the legacy website is going under a ((sadly frontend only)) rework, so it now also has to display different 'kind' of products... and because the new cms isn't done yet they
have to provide the data with other means)
my thoughts were to create a little import script to write the file into the database.... keep in mind of the relations... etc...
guess what? TWO MONTHS later, I get a file with a custom layout, empty cells, sometimes with actual data, sometimes (in red / green text color) notes for me
I mean WHY.... WHY DO YOU MAKE MY LIVE HARDER???
So now I have to put data in 6 columns and 411 rows in the database BY HAND...
oh and did I mention they also have relations? yeah... I also have to do that by hand now...3 -
I don't know if I'm being pranked or not, but I work with my boss and he has the strangest way of doing things.
- Only use PHP
- Keep error_reporting off (for development), Site cannot function if they are on.
- 20,000 lines of functions in a single file, 50% of which was unused, mostly repeated code that could have been reduced massively.
- Zero Code Comments
- Inconsistent variable names, function names, file names -- I was literally project searching for months to find things.
- There is nothing close to a normalized SQL Database, column ID names can't even stay consistent.
- Every query is done with a mysqli wrapper to use legacy mysql functions.
- Most used function is to escape stirngs
- Type-hinting is too strict for the code.
- Most files packed with Inline CSS, JavaScript and PHP - we don't want to use an external file otherwise we'd have to open two of them.
- Do not use a package manger composer because he doesn't have it installed.. Though I told him it's easy on any platform and I'll explain it.
- He downloads a few composer packages he likes and drag/drop them into random folder.
- Uses $_GET to set values and pass them around like a message contianer.
- One file is 6000 lines which is a giant if statement with somewhere close to 7 levels deep of recursion.
- Never removes his old code that bloats things.
- Has functions from a decade ago he would like to save to use some day. Just regular, plain old, PHP functions.
- Always wants to build things from scratch, and re-using a lot of his code that is honestly a weird way of doing almost everything.
- Using CodeIntel, Mess Detectors, Error Detectors is not good or useful.
- Would not deploy to production through any tool I setup, though I was told to. Instead he wrote bash scripts that still make me nervous.
- Often tells me to make something modern/great (reinventing a wheel) and then ends up saying, "I think I'd do it this way... Referes to his code 5 years ago".
- Using isset() breaks things.
- Tens of thousands of undefined variables exist because arrays are creates like $this[][][] = 5;
- Understanding the naming of functions required me to write several documents.
- I had to use #region tags to find places in the code quicker since a router was about 2000 lines of if else statements.
- I used Todo Bookmark extensions in VSCode to mark and flag everything that's a bug.
- Gets upset if I add anything to .gitignore; I tried to tell him it ignores files we don't want, he is though it deleted them for a while.
- He would rather explain every line of code in a mammoth project that follows no human known patterns, includes files that overwrite global scope variables and wants has me do the documentation.
- Open to ideas but when I bring them up such as - This is what most standards suggest, here's a literal example of exactly what you want but easier - He will passively decide against it and end up working on tedious things not very necessary for project release dates.
- On another project I try to write code but he wants to go over every single nook and cranny and stay on the phone the entire day as I watch his screen and Im trying to code.
I would like us all to do well but I do not consider him a programmer but a script-whippersnapper. I find myself trying to to debate the most basic of things (you shouldnt 777 every file), and I need all kinds of evidence before he will do something about it. We need "security" and all kinds of buzz words but I'm scared to death of this code. After several months its a nice place to work but I am convinced I'm being pranked or my boss has very little idea what he's doing. I've worked in a lot of disasters but nothing like this.
We are building an API, I could use something open source to help with anything from validations, routing, ACL but he ends up reinventing the wheel. I have never worked so slow, hindered and baffled at how I am supposed to build anything - nothing is stable, tested, and rarely logical. I suggested many things but he would rather have small talk and reason his way into using things he made.
I could fhave this project 50% done i a Node API i two weeks, pretty fast in a PHP or Python one, but we for reasons I have no idea would rather go slow and literally "build a framework". Two knuckleheads are going to build a PHP REST framework and compete with tested, tried and true open source tools by tens of millions?
I just wanted to rant because this drives me crazy. I have so much stress my neck and shoulder seems like a nerve is pinched. I don't understand what any of this means. I've never met someone who was wrong about so many things but believed they were right. I just don't know what to say so often on call I just say, 'uhh..'. It's like nothing anyone or any authority says matters, I don't know why he asks anything he's going to do things one way, a hard way, only that he can decipher. He's an owner, he's not worried about job security.13 -
Fuck this completely abysmal CMS!!!!
Not even god damn Einstein would be smart enough to understand this stinky pile of legacy code!
No, it's not enough to write an HTML template in PHP with less than 500 lines of code, noooooo, every god damn template HAS TO BE AT LEAST 3000 FUCKING LINES OF CODE WITH RANDOM INCLUDES EVERYWHERE!!!
Every fucking thing I fix spawns at least 2 new bugs! I FUCKING CAN'T!!!
I swear, if I meet these fucking worms of developers... someone will eat fresh turds mixed with puke from a highway toilet!17 -
Having a big legacy project written in good ol' vanilla PHP 5.4, running not in a server but in a desktop PC powered by a Celeron CPU.
Turns out that old buddy serves the tools everyone uses to work.4 -
older clients are returning with my old projects and asking for improvements, I did buy a few very shitty scripts from the internet/ and used one of my friends custom php cms for the other client because I REALLY needed money and they needed the projects yesterday.
Now I'm looking at the code and can't start working because of how messy it all is, I want to remake it all with a good framework and system, but it would take too much time (and they want it fast) and they wouldn't want to pay for the improvements because what they have now works..
I guess the shit you throw out when you're younger does come flying back like a boomerang..3 -
Problem: ugly-ass php spaghetti code that has a technical debt of 16(!!!) years. I mean, it's so spaghetti that has two legacy frameworks that talk to each other inside the same monolith.
Observation: after two months my colleagues, trying to refactoring stuff, they were able to touch so little stuff that it almost made no difference.
How much is worth a rewrite? Because i don't think i can make a difference on a codebase so messy.
I know that rewrite is not the answer 99.9999% of the time, but i have tons of doubts here.13 -
The legacy codebase, episode 94385948:
How to neatly organize your code in the age pre-docblocks.
Bonus: could this function be renamed to colectomy? Or maybe de-punctuation?
(yep, probably a bad joke with a "typo", sorry)
Bonus 2: seriously? A function for that?13 -
The legacy codebase, episode 4584985948:
- outdated comment
- die parentheses space string no-space parentheses
- die AND exit, just to be on the safe side
- won't comment about the screaming boolean
- at least they used triple equals (and yep, that's a font ligature)4 -
Quitting job because of Java and legacy corporate OSGI codebase. Being junior developer I'm just done with no documentation, terrible team support and non existent code review. After 18 months I can't justify staying any longer. Never had luck with Java and I guess some things just stay the same.
Joined only because of Javascript part, just to be thrown into fullstack position. Stayed way longer because of COVID. Good old simple PHP I loved and foolishly left because of money.4 -
This is a true story. We had this subject, called “Web Design” (really, “design”), where we studied HTML, CSS, JavaScript, PHP and MySQL (confusing, right?). And when we get the PHP (e-)book, it was this old PDF (probably downloaded illegally) teaching the legacy 4.0 version of PHP. Anyway, when we had to develop the final project, the sane professor allowed us to use a newer version of PHP — 5.2, released on 2008. I had to follow the rules, so I developed probably the less secure web application I will ever develop. That means no protection from SQL injection, XSS vulnerable and a bunch of other security holes… And that’s how they liked it developed!3
-
Fixed a bug in a code wrote 11 years ago.
It took 11 years for a user to find a bug.
The user must have a prize: a Bug Bounty.
My Boss does not like Bug Bountis4 -
We've got this legacy PHP system that doesn't really run anywhere else than on it's server. It's not configured with git, and there's no pipeline. Just plain old SSH. How would you go about managing it?11
-
I was underestimated about tech skills and earning, because I use PHP at work. I agree that PHP sucks and it's used by a lot of developers who don't know how it works. But the legacy systems I work on now compose a platform used by more than 400K users. In addition, I used to use C++ for game programming and Java for web systems. Also I'm playing with Node.js and javascript for my personal projects. In my experience, I don't think PHP is easy to make things work as expected. Plus, I don't get low salary compared to the others in this region. It's always very hard to explain how I'm working as a PHP developer. At the moment of underestimation, I was feeling so bad, but I couldn't say anything. It might lead a religious argue. Any advice?22
-
Because, definitely, size shouldn't matter.
Code description for the blind: if the size of this query is loved, then close the database and die.8 -
For the love of GOD, if you're an architect or someone in the position where you can make drastic changes to the overarching design of a software system, if you're so keen on enforcing something "cool" just because you've read about it in a blog post/seen it on a youtube video, READ ABOUT IT THOROUGHLY, as in, pick up a fucking book or do actual research. An architect overseas just informed us that a whole legacy PHP application (a fucking monolith with a dysfunctional database, yes, I think someone demented designed it) should be rewritten to a microservice architecture (without a messaging broker, just plain API interaction through HTTP) AND WE'RE KEEPING THE DATABASE WHICH BEGS TO BE PUT DOWN FOR GOOD. So now we're gonna have a clusterfuck of tons of PHP microservices (Q_Q) which interact through plain HTTP APIs (swagger's gonna be put to a test) and all have a single broken database in the center. Talk about a microlithic design. Jesus Christ.9
-
[CMS Of Doom™]
Ah, yes, their built-in bullshit newsletter module just sent the n-th user n emails. Wonderful considering n=368.
The culprit? Better don't ask...
OK, anyway: So the mailer is running as a CRONjob, but nah, not as a console script call but by a public HTTP GET URL call, fucking obviously (it's the CMS Of Doom for a reason).
So these fucking imbeciles "implemented" an ob_start() callback where HTML links are - for whatever fucking reason - modified by some regex (obviously everybody knows parsing HTML by Regex is trivial). In this case the link was somehow modified to recall the mailer Cronjob...
This must have upset the pngoing mailing process thus spamming mails. Whyyyy
And I've thought I've seen it all after 6 months in this legacy hell...
This is why you don't run a company consisting of only beginners in PHP (in cluding their "CEO")! -
When refactoring legacy code and your colleague committed this a week ago... As punishment we made him listen to "You're too fat to fly" all day long.
-
I think I may have officially gotten myself fired before I even started a new job. My salaried start date was supposed to be Jan 3 but they hired me to do spot work at my hourly rate until then. My server side PHP skills were never great but they appear to be completely inadequate to the task of patching their undocumented, spaghetti legacy code. I just sent a note basically saying I either need to convert their entire site to something else 3 weeks ahead of the timeframe we planned or to basically outsource my work to another developer to patch this code. Feeling like a total imposter at the moment. I wouldn't hire me.4
-
sensible naming stuff for readability? nah.. it's not like someone will read my code after i'm done here right?1
-
Last year I was asked to optimize a code in our legacy portal (yet to be replaced with the new portal). The legacy system didn't have a design phase. Straight away went to development by whatever developer available at that time.
It was seriously fucked up.
So I went and had a look at the vanilla PHP code that served data for a datatable.
** I nearly fainted **
A query was done to get data from a table without any joins.
Then for loop to display those data.
Then inside for loop, for every single column that gets data from a related table there's a fucking query.
Eg: select * from users where.... to display username. Then again select * from users where..... to display user's email, then another query for his phone number. Then another query to get service providers name, then another to get their phone number.
I think the guy who did it wrote his first hello world app with a bunch of queries and sent it to production. No one bothered to check until 4 years later when it slowed down like a friggin snail.
I'm surprised it even survived that long. -
Sometimes I do wonder why can’t I just be content at getting best I can get at what I’m already good at - and what brings in the €€€? Why do I go ”oooh look shiny intetesting language, let’s try do shit with it” or ”hey, let’s try this thing called kernel dev/pld/program verification which are all so far outside my core expertise they might as well be in a different universe!”
Dude I mean writing a kernel in V and doing proof oriented programming in F* are fun and all, but what good’s that gonna do me when I’m in all likelihood still maintaining legacy web apps in PHP ten to twenty years from now?
I guess what I’m trying to say is that I’m torn inside with my current workplace offering me everything I value and stuff that’s rare to find - but at the same time I’d love to be challenged more and don’t really have enough of those opportunities in my current environment. Or some shit like that.
Well fuck that, back to writing my own embedded DSL into F* in F#….1 -
I'm currently between jobs and have a few rants about my previous job (naturally). In retrospect, it's somewhat therapeutic to range about the sheer brainfuckery that has taken place. Enjoy!
First, let me set the scene: legacy B2B web app made with LEMP stack and sencha ext.js 3 + 4 (don't ask) and a lot of madness. Let's call that app "Alpha".
Alpha is a self made CMS build for typical ERP stuff. Yes, a self made CMS: entities are containers, containers have types and fields and values. Like so many legacy PHP apps, it does not have a dedicated FE: the HTML is rendered on the server and then spewed out to the browser.
Easy right? Coding like it's 1999! But there was a twist: Because everything is basically a container, the HTML-templates are saved in the DB. Along with the nessary JS and the CSS. And the translation variables. Why? Because fuck you! That's why. Who needs a git history anyways.
For some reason, Alpha was kinda slow.
There was also an editor, that allowed you to modify templates (web, mail, pdf) on the fly in prod. Because templates contain repeating data (header/footer), one template could contain additional templates. Much confusion. You could change templates via migration (slow, boring) or just ctrl-c/ctrl-v that sucker (fast, much excitement).
Did I mention Alpha was slow?
On with the rant: e-mails! How do they work? Noone knows. How to send mails asynchronous in PHP? Witchcraft is the only possible answer to that riddle. Here is your enterprise™ solution:
1. create mail
2. insert mail into DB
3. WAIT UP TO 59 SECONDS FOR A FUCKING CRON TO SEND MAIL
Why? "Because that way, we can resend mails in case the network is down :)"
Same procedure for the SOAP-API (db-queue + cron). You read that right: all requests to various other systems are processed once a minute.
Alpha slow.
Alpha was only one of several systems. Imagine a bunch of monolithic php apps, interconnected via SOAP, REST and GraphQL like a godamn intergalactic orgy. Image having to debug that cluster fuck.
Let's say there is a bad request. These things happen. No biggie. Remember the db-queue? Let's try to send the bad request a second time! And a third time! Still no luck? How odd. Let's create a specific file in a specific directory: a LOCK-file. Now, "the db-queue is on hold and no request gets processed :)"
Golly gee thanks Alpha.
Anyhow, did you know that MySQL has a join limit of 61 tables?3 -
Today, i discovered thus beauty within our legacy code:
// TODO: this is probably the most dirty thing in our product. It needs a model more than anything else
This captions a crappy part of controller code for several years :/ -
Upsides of an atrocious, 10year old legacy PHP/(improperly used) CodeIgniter codebase:
When you actually manage to force it to be able to do the new thing it needs to be able to do, you feel like a God.
Downsides of an atrocious, 10year old legacy PHP/(improperly used) CodeIgniter codebase:
Everything else, especially the process leading to that single upside. -
Ooh what a nice feeling it is when you come back from a short vacation and everything is in the gutter... My team is divided into the two other teams... (I said divided but I ment everyone got assigned into team X... And I am the only one who was put into team Y)
Besides the whole team fiasco, I think my legacy project decided to role around in the garbage... Because I have no idea where all those bugs came from...
One positive thing is that I won't be working alone on that legacy project anymore, at the start of next week I get help from my new team... Now let's hope they don't suck!1 -
I think the worst time was when I worked on a work project through the night. It was at my previous employer, I was forced to work on legacy php projects I knew nothing about. Nobody could help me and I was always doing days over tickets which were just a pain in the ass in an old magic framework and a custom build cms :c.
I couldn't motivate myself for days and eventually when the deadline came I worked through the night and committed in the morning, then I jumped into bed. I realized that this was a big sign that I really had to quit, and switched companies several months later.2 -
Tldr: I think I made a company fire some dev a year ago.
I was working for this company remotely, alone, on a very big and old legacy php project where they still used echo '<code><code/>'; and i was a very junior junior front end developer, needed to make the website work somehow (whole new design). They brought in a random guy to work with me, and we started working.. I was using bitbucket to version my changes, and I asked him to do the same. He tried pushing his changes once and then practically never again because he started working in files that i was working on and there were git conflicts, and he gave up, even though i asked him to do that... he then statted using general classes to style the page (like .color) with absolute positioning and it broke everything everywhere. He then proceeded to minify half of the php files 'because of performance', I remember talking to other few people in the company and he disappeared a few more days later. I never finished the project because they stopped it randomly and i think i got him fired even though he could've continued working in the company -
Man... I hate refactoring. After I had finished up an issue this morning, I had to refactor old sql queries and the parsing to the views.
I've worked on it all day and I still haven't finished! Still loving my job, tasks like these are unavoidable but they drain the life out of me.3 -
Last week me and my friend have been changed from a legacy PHP project to new Ruby on Rails-based setup. What, in first instance, looked like a great improvement, now becomes a nightmare.
All this convention-over-configuration is awesome - but only if you already know the conventions, or if somebody told'em to you.
And everything is going even more out of control because the damn project is based upon Spree gem and several other extensions, that MUST be changed to meet out company needs.
I'm getting really mad with all this pressure. Ruby seems to be a great language, but I'd rather be working with Laravel. Its overall organization, the centralization of CLI commands in artisan, and the astoundingly clear, eloquent, direct and well-designed documentation made my adoption curve there a little more pleasant.
I mean, legacy PHP systems are awful, but Laravel framework sounds way more easy-to-learn and well-constructed when compared to rails.
But given all this nightmare, I really want to be proved the opposite.1 -
At my school library there is this system, made in php, to make monthly reports on student access, since everyone goes to the library everyone knows it and the guys who did it were considered the best of the school. So since I used to work on the library the director asked me to add some features to it, and I was like "Sure, cool I get to work on a real system", what I didn't know was that the system had no head or tail, the core were two files "load.php" and "db.php", everything was in those two files, no design patterns, no oops, safly that wasn't even the worst part, the modules were loaded through Ajax, which called files with lines like
`echo "<td>Student</td>";`
Literally most of the damn HTML was "echoed" WTH,undefined another useless tag student stories legacy wk58 pichardo for president php hate nightmares -
So, it's been a while since I've been working on my current project and I've never had the "luck" to touch the legacy project wrote in PHP, until this week when I got my first issue.
And damn, this goddamn issue. It was a bug, a very strange bug, that only happens in production and that nobody has any idea what was happening, so yeah, I didn't have anyone to ask and I got less time than usual ( because Thanksgiving ).
And thus, I have no starting point, no previous knowledge on PHP and less time! I expected a very fun week 😀 and it was beyond my expectations.
First I tried to understand what might be causing the issue, but there wasn't any real clue to star with, so no choice, time to read the flow on the code and see what are they're doing and using ( 1k line files, yay, legacy ). Luckily I got some clues, we're using a cookie and a php session variable for the session, ok, let's star with the session variable. Where it's that been initialize ? Well, spoiler alert, I shouldn't start with that, because my search end up in the login method of the API that set a that variable and for some reason in the front end app it was always false and that lead me to think that some of the new backend functions were failing, but after checking the logs I got no luck.
Ok, maybe the cookie it's the issue, I should try open the previous website on the brow...redirect to new project login, What? Why ? I ask around and it's a new feature push on Monday, ok I got Chrome Dev tools I can see which value of the cookie it's been set and THERE IT WAS it has a wrong domain! After 2 days ( I resume a lot of my pain ) I got what I've been looking for, so now I should be able to fix the bug. Then where is the cookie initialized ? In the first file the server hits whenever you tried to enter any page of the app, ok, I found the method, but it's using a function that process the domain and sets it correctly? wtf ? Then how in heaven do I get the incorrect domain ? Hello? Ok, relax, you still have one more day to fix this, let's take it easy.
Then, at the end of the Wednesday, nope I still have no clue how this is happening. I talked with the Devops guy and he explain me how this redirection happens and with what it depends on, I followed the PHP code through and nothing, everything should works fine, sigh. Ok I still have 2 days, because I'm not from US and I'm not in US, so I still have time, but the Sprint is messed up already, so whatever I'm gonna had done this bug anyhow.
Thursday ! I got sick, yay, what else could happen this week. Somehow I managed to work a little and star thinking in what external issue could affect the processing, maybe the redirection was bringing a wrong direction, let's talk with the Devops guy again, and he answer me that the redirection it was being made by PHP code, IN A FILE THAT DOESN'T EXIST IN THE REPOSITORY, amazing, it's just amazing. Then he explained me why this file might be missing and how it's the deployment of this app ( btw the Devops guy it's really cool and I will invite him a beer ) . After that I checked the file and I see a random session_star in the first line of the code, without any configuration, eureka ! There was the cause and I only need to ask someone If that line it's necessary anymore, but oh they're on holiday, damn, well I'll wait till Monday to ask them. But once and for all that bug was done for ! 🎉
What do I learn ? PHP and that I don't want any more tickets of PHP 😆. -
Hello and welcome come to hell for developers. Take a seat at any open computer.
You may have noticed we did away with the fire and brimstone.
Instead we just have you maintain the legacy code from your first job.
It's genrally html, php, javascript, and css all on the same page and all mixed together.
We would say have fun, but that's not really the point. -
Today I've landed on a legacy project which still uses mail() method in PHP. Just gonna enjoy this one.5
-
Today I was forced to write spaghetti code.
When your database structure isn't set up properly, that happens...
I'm already sure I will need to revisit this piece of literal shit when we revise that structure. Though, it'll be much easier and logical, and I'll probably be able to just delete a big part of the code and implement it as intended. -
You know the PHP legacy code base is complete garbage when it requires a script memory limit of 1.5GB.9
-
Rebuilding a whole disintegrating legacy plain-PHP project from zero in my favourite framework alone with data importers and stuff in 6 weeks.
Gave me some dreamless nights, but it was a great adventure. -
Training in NodeJS for 3 years so my first contracts ask me to do Reactjs, fire me and then got hired only return to WordPress and Drupal which I havent touched since 2016.
Guess I'm back at PHP and working crazy hours fixing legacy code.
This time I think I'll master it because I lost my job last year, got sick, move back with my parents and have bills to pay.
I'm still sick but I'll keep pushing... -
When you spend weeks working on a new codebase in Python and you have to jump into the legacy PHP one to fix something nasty3
-
Meh. FFS. Thats how this shit starts.
Get a call to say 2018 Bank Holidays not showing on legacy web calendar.
/me looks for bank holiday code in PHP file ..... no dice.
/me finds a dBase table that holds all Bank Holiday info. Not ideal, but I can work with that.
Enter all Bank Holidaya into dBase. Sit back, relax, wait for page to reload to show me Banks .... no dice.
Huh??
Read code more closely ......
Included file (inline, half way through PROCEDURAL FILE FFS) and notice that the linked file has all Banks hand formatted into Calendar events, and minified.
If I ever meet the old dev in the street, so help me god. 🤬2 -
Because of the amount of complaining I do at work concerning legacy php applications the HOD is trying to push for different technologies to use for backend services. We have met multiple times to discuss the proper way of handling the situation since there are a lot of very obvious things to consider regarding the push for a new tech stack. The typical names have come about, but my biggest issue will be training people for these stacks.
Testing environments with docker and so forth, push for CERTAIN applications to be more API centric and the use of better frontend frameworks that will remain standard for years to come(hard to bet on this one but I tend to orefer React) among other things are the topics of conversation.
Personally I would love to move the shop to something geared towards Golang, thing is, the lead dev is complaining about it saying that the training for a new language would just take time. After a couple of examples he is still not convinced.
I think its wrong of him to center himself on just PHP and JQUERY as the main development stack he uses and learning new things should be part of the job, I also have a case against the spaghetti code that results from just using vanilla php with no proper development practices(composer based systems, oop etc etc you get the gist)
In the end I am starting to think that it will become one of those "fuck off I am the boss" type of deal since I am going to be here after a long time and he has about 2 years before he medically retire.1 -
When you love the company you work for, and your boss is amazing; but you're stuck with Zend Framework 2 and PHP on a 1.2m LoC untested legacy system...
-
Another cardinal sin: i use cortana. And she is useful. Get the pitchforks and torches you can send me to hell i have to maintain legacy php applications im acustomed to it.6
-
Implementing my own PHP library for Station Playlist Studio, mainly for grabbing the list of songs and requesting songs to be played.
Such a legacy connection... Bad command scheme...
Having it succesfully request songs when UTF-8 ain't even supported properly, is a pita.
Luckily there's been an update to SPL about 2 years later, and my code still works. (:
(Not my biggest accomplishment so far, but those are under RMA..) -
A former team lead decided the team should review any open PR before proceeding with their own tasks after their breaks. Any open PR also meant reviewing refinements in an ongoing discussion. Several times, we wasted time for review, coding, and discussing when the second reviewer asked to revert the changes introduced according to the requests of the first reviewer.
Now as a freelancer, in smaller projects, I sometimes have no coworkers to review my code. So, apart from testing, I try to pay more attention to linters, static code analysis and automated coding assistance. I have stylelint, eslint, SonarLint, and possibly some more IDE inspections. For the infamous popular blogging software, I also have a so-called PHP code sniffer that checks all PHP and JavaScript code for compliance with the WordPress coding styles, so finally, I got the team experience back: SonarLint suggests removing unnecessary spaces and reformating my code, which in turn makes PHPCS complain that the code violates the legacy code style. -
I have a ton.
This one is more about my own foolhardiness, but I also learned a ton and came out stronger & wiser.
when I started out as a dev (my very first job!) and had not learned to say no.
I was a novice way out of my playground.
Like lifting a full booking platform from legacy php to Laravel & launching it like yesterday because it’s high season.
Didn’t know the full domain, so I just built something quite different in a week and shafted the existing db into it.
Obviously wasn’t feature complete or anything, so it resulted in maintaining legacy while building the new one and because it was already live and on different domains, we didn’t fully know which ppl went to, I had to every day painstakingly back port data from both platforms.
What I initially thought would take a few weeks that was launched in 3 days, spanned across 2 years plus one year refining and cleaning up my mess.1 -
What are the most common used technologies in workplaces around you?
Everywhere here I see an endless sea of .NET with ocassional streams of Java and some islands of php on IIS or Apache on the server, with ASP/JSP or Angular and jQuery on the client side.
Workstations are 100% Windows(10 or 7, with some legacy XP here and there).
Also most servers run Windows or some Unix version. Linux only for web servers and various system appliances.
Node.js, Ruby on rails, Django/Flask, React.js,Vue.js, Mac/Linux endpoints are only rarely used by fringe hipsters like me and my friends.3 -
This comment is why iis is an abomination for allowing multiple languages
/*Didn't know how to do this in php so wrote in asp just call it do do the task*/ -
This one makes me legitimately angry:
https://github.com/fzaninotto/...
This library is used by thousands of devs on a daily base while the code-base is an unchangeable legacy monster.
I could vomit, because I'm so happy!
Jeez! -
PHP features the best of the wicked minds.
In this legacy but still used project just so to save the scourge opening tcp connection (I suppose) some guy wrapped js libs like jQuery, mootools in a script tag.. In individual php files. Then from a main.php include all those libraries. This produces a 2Mb file to send to the client and it's not even compressed. This guy never had any thought about maintenance.
This is one symptom of the problem with PHP that every company developed or have in-house undocumented unmaintained frameworks made by devs without any idea about testing, security and more.
Gosh in a previous work I've seen a PHP cron that used arguments passed to a switch case of 25 cases.
It took 19 years for the language to get a standard, meanwhile leaving the web landscape as a mess of bad coding practices, bad design practices, SQL injections, outdated tutorials and more. PHP is the example that it's not because it's used on almost all the web that it's good, it only means that's it's cheap! Cheap like asking a red neck to build you a car and he tows (deploy) it to your house with his own tow truck he built.
https://blog.codinghorror.com/codin... -
I have a small NUC-like machine in my home with an old external hdd connected to it. I use it to run my local gitlab, nextcloud and to test a few websites I build for the lolz.
If you too have a homelab, whether it's a single raspberry or an entire room full or racks, you know damn well that everything you have running locally as a web service keeps going until it doesn't, for whatever fucking reason. This time, it was the turn of my nextcloud.
The machine has arch linux running, I chose it since I already use it on my coding laptop and being a rolling release means I don't have to manually upgrade to a newer version, risking various fuck-ups and consequent screaming of profanity.
The downside is that arch is a bleeding-edge distro, so, despite being pretty good for what concerns security, as updates are pushed out some packages may still require legacy software to work as intended, since obviously not all developers for all packages can release simultaneously.
The problem was that php reached 8.2.x but nextcloud couldn't use anything beyond 8.1, so the highlighted solution was to download php-legacy, a package with a set of utilities which the cloud could use instead of mainline php.
Pretty easy, right? fuck my life, here we go.
I edited apache-httpd's configurations to link the new libraries, updated every reference in every virtual host that could possibly screw up the web server.
Done.
Then I went on and disabled the php-fpm mainline, creating a new systemd unit that would instead run the legacy executable and afterwards I edited nextcloud's additional configs so they use that instead.
Done, getting a bit dizzy, but I reboot everything and breathe.
At this point the migration should be complete, but wait, the server returns an error saying that the application is still trying to use php 8.2+...wait, what in the sysadmin Christ?
Back to nextcloud config, everything is set, everything else in every other fucking php-legacy and web server is fine, the old fpm service is disabled, I am confused, and why in the FUCKING FUCK is the new php-fpm unit failing to start at boot with "error 78/config - directory not found"? Hello? Am I being trolled by a shitty dual-core amazon fake NUC?
Maybe yes, cause it turns out that the unit was referencing a directory in the external hdd, which gets mounted at boot time after the unit itself starts, so nothing much, just a matter of tinkering with cron jobs, a reboot and at least this one is off my balls.
But why still isn't the server responding correctly? why? WHY?
After slamming my cock on the keyboard here and there scrolling back through all the config files I think to myself, hmmm, my gitlab is working flawlessly, well yeah, I didn't need to install the whole web stack, everything was nice and easy wrapped in a docker container...so why am I even here, why the fuck am I bothering with all this layered web-app bullshit, why don't I just run the up-to-date docker image that someone else has already set up for me, back up all the data and reupload them on the application?
Oh joy, you can't imagine, after 3...almost 4 hours of pure computer-touching the relief I had from seeing the blue web page with the "welcome to nextcloud" title.
Right now it's copying back all the files, and the external hdd is now linked to include the data folder.
Like really, everything was solved in two lines of bash.
I am still fuming, but at least I learned a valuable lesson, if you want a service up for yourself, implement it and deploy it as fucking easy straight-forward as you can, giving MAXIMUM priority to already fully-working options that are out there just waiting to be downloaded and used. I swing my scrotal sack on web-apps elegance as long as it's MY homelab in MY place.
Eat a fat dick php.
sudo pacman -Rns nextcloud
sudo systemctl disable --now php-fpm-legacy
sudo pacman -Rns php-legacy
sudo pacman -Rns $(sudo pacman -Qdtq)2 -
Third-party integrations are the worst. To top it all if the company is working on PHP5 and expects API requests/responses in XML is recipe for disaster.
Old companies running code and standards older than a decade should just die and shut shop.5 -
One of those debugging days where minutes feel like hours, and hours like days.
I had the bad luck of being asked to dive into a legacy project which was unmaintained for months, but of course it's still on prod. And very suddenly the urgent need arrises to change stuff.
Yet: the docker stack won't work. It builds fine but the stack crashes.
Long story short: some internal api URI were renamed and at some point one internal api started to always require an access token. Which we set for the stage, prod env yet somebody forgot to mention that to the devs of legacy-project.
That ain't too bad.
WHAT IS FUCKING BAD IS THAT YOUR SHITTY APP SWALLOWS THE ERROR MESSAGE!
I mean it's bad enough I have to `var_dump && die` your app since you never bothered to setup a xdebug that I could use out of the box, yet egregious fact that your app would catch a valid exception but transforms it into an "internal warning" is borderline insane!
It's ok to throw exceptions. It's ok to let your service die. That's how other will know what and where to fix it. (You may want to restrict the data visible to the outside, but that's a whole different conversation.) -
Or when I'm working on some legacy mess of php code and changing nothing and then reverting even that causes the whole code to act in some nonsensical way with three buttons hooked to the same code doing three completely different things and none of them having any remote connection to what is in the code. Sometimes I get it to get its act somehow together by fucking rebooting my computer (???). What the fuck is wrong with php and wordpress in particular? Could it be any more of a mess?
I literally commented out my whole fucking code, rebooted the server. Is there some cache I'm not aware of involved? It all feels like some fucked up nightmare.6 -
Working on a legacy PHP project that every single query inserts user-provided data without any sanitization, aka SQL injection ahoy! Also no framework.1
-
PHP gurus / masochists.
I've been using Symfony components for new, isolated features in a legacy php application for awhile now. the time has come to integrate using the kernel, and routing for new endpoints while existing endpoints use the existing apache means of loading pages.
It's not my first rodeo doing this, but I'd appreciate any wisdom/resources/patterns you followed for anyone who's had to do the same.
My clients don't have the means to do hire the appropriate ammount of devs to do a proper port, so this is a long path towards modernization by ceasing to bolt on features to existing code and instead, when working on something, updating it to the new design pattern and then extending that, with a spec, documentation and code coverage.3 -
Dont be that guy, ok. Just clean up your shit and don't let shit go through you.
I will git blame you. I will judge you.
#leaveitbetterthanyoufoundit2 -
mod-php is weird and should never have existed.
I hate having to deal with it, even if it's only still in use in years old legacy systems. FPM is so much nicer. -
How do you pick a new language to learn?
I am a C# developer and at work I work on desktop apps and legacy web services etc.
I fancy learning something else so I can have a bit of variety when working on personal projects etc.
I am doing a distance learning degree which has used Java and Python so far, with some PHP and JS etc to come later.
I’m drawn to Ruby as I already have experience there, but I was also thinking about looking at Node as that covers back end and front end all using JS which is definitely useful in general as I look at moving to a more web based role.7 -
I love and hate javascript. I set out to do a fully ajax/state driven form interface that operates with multiple interdependent data objects which all extend a base class.
React/Angular may have been a better call but I just didn't have time so I needed to rapid prototype in jquery /vanilla JS.
I'm in the midst of learning and refactoring all the ajax calls to promises and then to async/await, so it's a huge learning experience...
Meanwhile I've got to build objects to represent the data on the backend which is all legacy OScommerce/PHP
Hell of a ride.