PHPNews

What’s Wrong With Global Variables?

Only lazy people haven't written already about how global variables are evil. It started in 1973 when W. Wulf et al. claimed that "the non-local variable is a major contributing factor in programs which are difficult to understand." Since then, many other reasons where suggested to convince programmers to stop …

Continue reading »

Written by Yegor Bugayenko - - Aggregated on Tuesday July 3, 2018


Are You an Architect?

Over twenty five years ago, in 1992, at an OOPSLA workshop in Vancouver, Kent Beck, in answer to the question "What is an architect?" said, according to Philippe Kruchten , that it is "a new pompous title that programmers demand to have on their business cards to justify their sumptuous emoluments." Not much has …

Continue reading »

Written by Yegor Bugayenko - - Aggregated on Tuesday June 26, 2018


Simplified GitHub Login for a Ruby Web App

You know what OAuth login is, right? It's when your users click "login" and get redirected to Facebook, Twitter, Google, or some other website which then identifies them. Then they go back to your website and you know who they are. It's very convenient for them. It's convenient for you too, since you don't need to …

Continue reading »

Written by Yegor Bugayenko - - Aggregated on Tuesday June 19, 2018


Object Validation: to Defer or Not?

I said earlier that constructors must be code-free and do nothing aside from attribute initialization. Since then, the most frequently asked question is: What about validation of arguments? If they are "broken," what is the point of creating an object in an "invalid" state? Such an object will fail later, at an …

Continue reading »

Written by Yegor Bugayenko - - Aggregated on Tuesday May 29, 2018


One More Recipe Against NULL

You know what NULL is, right? It's evil . In OOP, your method can return NULL, it can accept NULL as an argument, your object can encapsulate it as an attribute, or you can assign it to a variable. All four scenarios are bad for the maintainability of your code—there are no doubts about that. The question is what to …

Continue reading »

Written by Yegor Bugayenko - - Aggregated on Tuesday May 22, 2018


The Right Way to Report a Bug

You know, at Zerocracy , either you are a programmer or a tester, and we pay for each bug you find and report. Well, not quite. We pay for each bug report a project architect considers good enough to pay for. The architect's decision is totally subjective and non-disputable, according to §29 of the Policy . Some …

Continue reading »

Written by Yegor Bugayenko - - Aggregated on Tuesday April 24, 2018


The Right Way to Report a Bug

You know, at Zerocracy , either you are a programmer or a tester, and we pay for each bug you find and report. Well, not quite. We pay for each bug report a project architect considers good enough to pay for. The architect's decision is totally subjective and non-disputable, according to §29 of the Policy . Some …

Continue reading »

Written by Yegor Bugayenko - - Aggregated on Tuesday April 24, 2018


How to Be Lazy and Stay Calm

What frustrates me most in my profession of software development is the regular necessity to understand large problem scopes before fixing small bugs, especially if the code is legacy and not mine. Actually, it's even more frustrating when the code is mine. The "deep thinking," as they call it , which is always …

Continue reading »

Written by Yegor Bugayenko - - Aggregated on Tuesday April 17, 2018


How to Be Lazy and Stay Calm

What frustrates me most in my profession of software development is the regular necessity to understand large problem scopes before fixing small bugs, especially if the code is legacy and not mine. Actually, it's even more frustrating when the code is mine. The "deep thinking," as they call it , which is always …

Continue reading »

Written by Yegor Bugayenko - - Aggregated on Tuesday April 17, 2018


Nine Steps of Learning by Refactoring

I was asked on Twitter recently how is it possible to refactor if one doesn't understand how the code works. I replied that it is "learning by refactoring." Then I tried to Google it and found nothing . I was surprised. To me refactoring seems to be the most effective and obvious way to study the source code. …

Continue reading »

Written by Yegor Bugayenko - - Aggregated on Tuesday April 10, 2018


Nine Steps of Learning by Refactoring

I was asked on Twitter recently how is it possible to refactor if one doesn't understand how the code works. I replied that it is "learning by refactoring." Then I tried to Google it and found nothing . I was surprised. To me refactoring seems to be the most effective and obvious way to study the source code. …

Continue reading »

Written by Yegor Bugayenko - - Aggregated on Tuesday April 10, 2018


Fully Transparent Donations via Zerocracy

Open source is free, as in beer: you write code, nobody pays you. Of course, there are many ways to monetize your efforts, but there will be no direct cash payments from your users, usually. There are ways to collect money, which include an obvious "tip jar" button on your GitHub project page. The chances anyone …

Continue reading »

Written by Yegor Bugayenko - - Aggregated on Tuesday April 3, 2018


Fully Transparent Donations via Zerocracy

Open source is free, as in beer: you write code, nobody pays you. Of course, there are many ways to monetize your efforts, but there will be no direct cash payments from your users, usually. There are ways to collect money, which include an obvious "tip jar" button on your GitHub project page. The chances anyone …

Continue reading »

Written by Yegor Bugayenko - - Aggregated on Tuesday April 3, 2018


How I Test My Java Classes for Thread-Safety

I touched on this problem in one of my recent webinars , now it's time to explain it in writing. Thread-safety is an important quality of classes in languages/platforms like Java, where we frequently share objects between threads. The issues caused by lack of thread-safety are very difficult to debug, since they are …

Continue reading »

Written by Yegor Bugayenko - - Aggregated on Tuesday March 27, 2018


How I Test My Java Classes for Thread-Safety

I touched on this problem in one of my recent webinars , now it's time to explain it in writing. Thread-safety is an important quality of classes in languages/platforms like Java, where we frequently share objects between threads. The issues caused by lack of thread-safety are very difficult to debug, since they are …

Continue reading »

Written by Yegor Bugayenko - - Aggregated on Tuesday March 27, 2018


Don’t Aim for Quality, Aim for Speed

I decided to write this blog post after reviewing this pull request . What happened there? The author of the PR wasn't able to figure out the "right" way to implement it, and the code reviewer was waiting and waiting. Eventually, the reviewer came to me, since I was an architect, and complained that it was taking …

Continue reading »

Written by Yegor Bugayenko - - Aggregated on Tuesday March 6, 2018


Don’t Parse, Use Parsing Objects

The traditional way of integrating object-oriented back-end with an external system is through data transfer objects , which are serialized into JSON before going out and deserialized when coming back. This way is as much popular as it is wrong. The serialization part should be replaced by printers , which I …

Continue reading »

Written by Yegor Bugayenko - - Aggregated on Tuesday February 27, 2018