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 - "pear"
-
Every day.
I am a PHP developer.
Yeah, "another PHP is awful" rant... no, not really.
It's just unsuitable for some ambitious projects, just like Ruby and Python are.
First of all, DO NOT EVER use Laravel for large enterprise applications. The same goes for RoR, Django, and other ActiveRecord MVCs.
They are all neat frameworks for writing a todo app, as a better-than-wordpress flexible blogging solution, even as a custom webshop.
Beyond 50k daily users, Active Record becomes hell due to it's lazy fat querying habits. At more than a million users... *depressed sigh*.
PHP is also completely unsuitable for projects beyond 5M lines of code in my opinion. At more than 25M lines... *another depressed sigh*.
You can let your devs read Clean Code and books about architecture patterns, you can teach them about SOLID & DRY, you can write thousands of tests... it doesn't matter.
PHP is scaffolding, it's made of bamboo and rope. It's not brick or concrete. You can build quickly, but it only scales up to a certain point before it breaks in multiple places.
Eventually you run into patterns where even 100% test coverage still doesn't guarantee shit, because the real-life edge cases are just too complex and numerous.
When you're working on a multi-party invoicing system with adapters for various tax codes, or an availability/planning system working across timezones, or systems which implement geographical routefinding coupled to traffic, event & weather prediction...
PHP, Python, Ruby, etc are just missing types.
Every day I run into bugs which could have been prevented if you could use ADTs in a generic way in PHP. PHP7 has pretty good typehints, and they prevent a lot of messy behavior, but they aren't composable. There is no way to tell PHP "this method accepts a Collection of Users", or "this methods returns maybe either an Apple or a Pear, and I want to force the caller to handle both Apple/Pear and null".
Well, you could do that, but it requires a lot of custom classes and trickery, and you have to rewrite the same logic if you want to typehint a "Collection of Departments" instead of "Collection of Users" -- i.e., it's not composable.
Probably the biggest issue is that languages with a (mostly) structural type system (Haskell, Rust, even C#/JVM languages to some degree, etc) are much slower to develop in for the "startup" era of a project, so you grab a weak, quick prototyping language to get started.
Then, when you reach a more grown up phase, you wish you had a better type system at your disposal...28 -
>be me.
>never understood jokes about linux users fucking shit up
>starts using linux
>day 3 manages to fuck shit up
>ooooohhh12 -
An overflow in C, the program was writing 16 Bytes in an array of length 10 due to some mistake.
The problem was this ended up overwriting another place in the memory that was used by another algorithm to perform calculations... So we thought that the algorithm was buggy all along.2 -
You want to call a function? STOP!!!
Nowadays it is so amateur and old fashioned! Instead you must:
- Make a soap request
- Write a router to handle soup requests
- Write an XML to define which controller responds to this request
- Write an XML parser on top of another XML parser
- Write a controller to trigger an event in response to the request
- Write an XML which defines the event
- Write an XML that defines the event observer
- Write a plugin which calls event observers
- Write a router which delegates the task of calling event observers to that plugin
- Write an event observer which calls another plugin
- Write a plugin that "Calls a function".
It's better because... it's more Object Oriented!21 -
#FuckPHPInTheAss
>Start working on PHP after ages.
>Found that mail() is deprecated through server support
>they suggest to use PEAR Mail
>Suggest to use deprecated PEAR code
>Fix deprecated code and magically runs on localhost
>ohmygodyess.php
>try to run on server
>fuckMyLife.exe
>Try using PHPMailer
>WTF is this How the fuck this works?
>Spends hours to understand with example code
>WorksFinOnLocal.exe
>NopeIWon'tRunOnServe.lulz
>about to use YiiMailer.
#Sleepless24 -
On the -2nd day of Christmas, my true love gave to me
offfffline servers,
NO notifications,
one, lousy fucking dayyyyyy
(... on the first day back to workkkkkkk..innnggg...)
Database corrup-ted,
users' fucking pissed....
and a partridge in a pear tree!
$merryXmas[-1]2 -
Coworker: I did not progress much but at least I managed to get rid of all compiler warnings.
Me: That's okay. What were they about?
Coworker: No idea.
Me: How did you get rid of them then??
Coworker: I removed the "Wall" option when I use gcc. -
I spent 4 hours trying to rectify a client's website.
Just to find out it was missing a '}' in one of the CSS line. Can you not?
*facepalm*2 -
With the recent attacks by governments and corporations on our freedom, I feel like this is more relevant than ever.
"Those who would give up essential Liberty, to purchase a little temporary Safety, deserve neither Liberty nor Safety." (Benjamin Franklin)3 -
Medieval torture devices got nothin' on Angular.
The Rack? Ha, good times!
Brazen Bull? Happily!
Iron Maiden? Yes, please!
Pear of Anguish? Funny name, I'll take it!
But Angular?!
PLEASE GOD, NO! HAVE MERCY ON MY SOUL!4 -
People should have mandatory lessons in vector processing.
In canteen, after lunch, there were 4 places you could place your trays. But only small, one-way corridor, for one person at a time to get there.
Every person picked the first place and while they were placing the tray, people behind them had to wait. Huge line started to form. If they, instead, always picked the last empty place, all tray places would be occupied for longer and the processing speed could increase almost 4 times.
Textbook vector processing example.2 -
You can keep making your opensource platform slower, buggier and dirtier. Version after version. You can be proud of it. Tons of forks around the web. But only you are the most famous one. The heavier it is, the prouder you are. Millions of lines of code. Hundreds of millions of them. Until some day, people finally come to their minds, and you see them leaving your platform forever. The revolution comes...1
-
A software had been developed over a decade ago. With critical design problems, it grew slower and buggier over time.
As a simple change in any area could create new bugs in other parts, gradually the developers team decided not to change the software any more, instead for fixing bugs or adding features, every time a new software should be developed which monitors the main software, and tries to change its output from outside! For example, look into the outputs and inputs, and whenever there's this number in the output considering this sequence of inputs, change the output to this instead.
As all the patchwork is done from outside, auxiliary software are very huge. They have to have parts to save and monitor inputs and outputs and algorithms to communicate with the main software and its clients.
As this architecture becomes more and more complex, company negotiates with users to convince them to change their habits a bit. Like instead of receiving an email with latest notifications, download a csv every day from a url which gives them their notifications! Because it is then easier for developers to build.
As the project grows, company hires more and more developers to work on this gigantic project. Suddenly, some day, there comes a young talented developer who realizes if the company develops the software from scratch, it could become 100 times smaller as there will be no patchwork, no monitoring of the outputs and inputs and no reverse engineering to figure out why the system behaves like this to change its behavior and finally, no arrangement with users to download weird csv files as there will be a fresh new code base using latest design patterns and a modern UI.
Managers but, are unaware of technical jargon and have no time to listen to a curious kid! They look into the list of payrolls and say, replacing something we spent millions of man hours to build, is IMPOSSIBLE! Get back to your work or find another job!
Most people decide to remain silence and therefore the madness continues with no resistance. That's why when you buy a ticket from a public transport system you see long delays and various unexpected behavior. That's why when you are waiting to receive an SMS from your bank you might end up requesting a letter by post instead!
Yet there are some rebel developers who stand and fight! They finally get expelled from the famous powerful system down to the streets. They are free to open their startups and develop their dream system. They do. But government (as the only client most of the time), would look into the budget spending and says: How can we replace an annually billion dollar project without a toy built by a bunch of kids? And the madness continues.... Boeings crash, space programs stagnate and banks take forever to process risks and react. This is our world.3 -
One of those mysterious bugs that only happens on production. Want to solve it on your laptop, it's not reproducible. Staging server? Nope. Production?
HOW DARE YOU TOUCH THE LIVE SYSTEM?!?1 -
Hi Everybody,
Here by I introduce you the new Java Script framework and package manager that is going to change your life forever. We have considered all the problems developers are facing during their everyday career. We use latest techniques used in configuration files (xml, yaml, json, etc.), package managers (npm, gulp, yawn, etc) and other frameworks (require-js, vuejs, reactjs, etc) into consideration to bring you a framework that has them all together in ONE BIG PACKAGE! HAHAHAHAAHAAA!
Nope. I'm just kidding :-D1 -
Hello everyone :)
I left a job a while ago (8 month maybe a little more), before me alot of the team left, and the lasts ones left after me.
They hired back an ex teammate from years ago (he actually started the POC), but he doesn't do php so much and don't know symfony and he's alone. I'm not either (i don't like php), i was doing python and admin sys for them, but i saw the project going/evolving for two years, so i can help them.
They contacted me a week ago, asking me some help. I said yes, (because i believed in the company and i'm too nice i guess), so i spend two days making a new script to setup the environment and serveur and also had to do some package update on the project (late shit with pear php apparently).
I don't have any way to make a bill, i don't own any company. So I'm not sure what i should ask for money, and if i should keep helping them.
(it has been my first serious real job, and i put some money in the company that i took back).
Should i keep helping for nothing even if it's only few hours the month or should i change this situation fast?! (already worked 20h for them, and the boss a nice guy)
Thanks devRant3 -
Guy told me Java Swing is more stable and has more effective look than JavaFx. Okay mate, I'm sure. 😒
-
Details of the bug report sent by our customer:
"Sometimes some errors happens on website".
Me:
"Be patient man... I feel you!". -
Witch one you prefer?
MacBook Air i5 8gb ram
Or
Surface Pro 4 m3 4gb ram with pen and type cover
For student23 -
Best software is the least famous. Worst software is the most. Because the more an organization spends on development of the software, the less it can spend on marketing it.3
-
Magento Debugging Horror!
Changing lots of things in magento with no problem. Continuing development for quite sometime. Suddenly decide to clear cache to see affect of a change on a template in frontent. Suddenly magento crashes! There's no error message. No exception log. No log in any file anywhere on the disk. All that happens is that magento suddenly returns you to the home page!
Reverting all the changes to the template. Clear the cache. Nope! Still the same! Why? Because the problem has happened somewhere in your code. Magento just didn't face it, because it was using an older version of your code. How? Because magento 2 even caches code! Not the php opcache. Don't get me wrong. It has it's own cache for code, in a folder called generated. Now that you cleared all the caches including this folder, you just realized that, somewhere something is wrong. But there is no way for you to know where as there is absolutely no exception logged anywhere!
So you debug the code, from index.php, down to the deepest levels of hell. In a normal php code, once the exception happens, you should see the control jumps to an exception handler, there, you can see the exception object and its call stack in your debugger. But that's not the case with magento.
Your debugger suddenly jumps to a function named:
write_close();
That's all. No exception object. No call stack. No way to figure out why it failed. So you decide to debug into each and every step to figure out where it crashes. The way magento renders response to each request is that, it calls a plugin, which calls a plugin loop, which calls another plugin, which calls a list of plugins, which calls a plugin loop, which calls another plugin.....
And if in each step, just by accident, instead of step through, you use the step over command of your debugger, the crash happens suddenly and you end up with the same freaking write_close() function with no idea what went wrong and where the error happened! You spend a whole day, to figure out, that this is actually a bug in core of magento, they simply introduced after your recent update of magento core to the latest STABLE version!!! It was not your mistake. They ruined their own code for the thousandth of time. You just didn't notice it, because as I said, you didn't clear the `generated` folder, therefore using an older version of everything!
Now that after spending 7 hours figuring out what has failed with absolutely no standard way of debugging and within a spaghetti of GOTO commands (Magento calls them plugin), why not report it to github? So you report it with a pull request. This also takes 1 hour of your time. Just to next day get informed that your pull request is rejected because another person already fixed the bug and made the same pull request. It was just not on the latest stable version yet!
So you decide to avoid updating magento as much as possible. Because you know that the next Stable version will make your life and career unstable. But then the customer complains that the Admin Panel is warning him of using old Magento version which might pose SECURITY THREATS! -
Critical bug in production? Sorry, can't fix it right now: We've got a build running with 1 hour of build time left, 8 hours of automatic tests, 3 days of manual testing, and a partridge in a pear tree. Your fix can be in the next release.
-
Everything was good. We were a very sophisticated agile team. We knew our work very well and we were proud of it. Every new feature was implemented in matters of hours. Everyone happy. Me, other developers, managers, customers. Until the other team felt a bit bored and decided to build a New Deploy System!
-
- One of the reasons for test driven development is that human makes errors. Both in developing the software and in testing it. So it's cheaper and safer to let computers do the test.
- So... who's going to develop the tester software itself?
- Human!1 -
why does every other culture get a horrific holiday entity that strikes fear in the hearts of children? all we have in america is a fat guy invented by corporations.
it’s not fair :(5 -
There's a type of shopaholism in big open source projects, in that decision making developers tend to search google and just add any javascript framework they find interesting, to the code base!
-
I think the notification about downloading pictures from devRant is useless. It isn't something amazing at 2017.2
-
For those of you who DO use PHP, regardless of whether you like it or not, have you ever used something like PEAR? And what are your thoughts?
I'm writing a fairly basic internal web app for our PMs and I'm looking for something similar to npm to save me some time/effort. I should also mention that my supervisor insists it be in PHP...6 -
Foreveralone developers, sit relaxed. With all the events cancelled and people locked in their homes, at least now you can be certain that there is absolutely nothing left you can do to find a partner. Enjoy working from home. Everyone does!
Those who enjoy company of a romantic partner, enjoy! You got it. Those who are lonely, will remain. -
Is this a justified code review comment or a bully?
Code reviews are weakness of this industry which has the potential to attract bullies. Abuse of the comment box in a pull request and bombarding the employee with hundreds of comments can cause stress, frustration, burnout and finally resignation and costs of fulfillment for the organization. While companies should find and stop bullying in the work place, what kind of code review comment is considered a bully and why? Any of below traits can mean you are dealing with a bully:
1. Claims the code needs to be changed but doesn't say how. So no matter how many times you change your code, he can repeat the same comment: "Your code is still bad due to blah blah and it needs to be changed".
2. Provides how the code should be changed, but the change doesn't add up to quality, security, performance, readability, etc. i.e. "Why did you use a for loop here? Use a while loop instead". Or "Why did you write it using three classes A, B and C? Instead write it using 4 classes D, E, F and G which does blah blah". In the later case, not following the review comment, you won't get approval. Following the comment means you need to rewrite your whole code. After which, you might again receive more comments to change other parts of your code!
3. Claims the requested change is due to standards but claimed standard does exist anywhere. Internet, company wiki, university course books, anywhere. In more severe cases of psychopathy, the bullying person refers you to a link which hours later turned out to be written by himself! Have fun describing what has happened to your manager or team leader... .
4. Asks the code to be changed in a way that supposedly is closer to standard or of better quality, security, performance, etc. But the proposed way will not work and is the main reason you didn't do that in the first place. So you start arguing forever in the comment box over why his method won't work!
If you cannot see any of the above traits, then keep calm, take a breath, fix your code. Otherwise you might be victim of a bully.3