Subscribe: Paul M. Jones
Preview: Paul M. Jones

Paul M. Jones

There are no solutions, only tradeoffs.

Last Build Date: Tue, 05 Dec 2017 13:00:15 +0000


Avoid Dependency Injection

Tue, 05 Dec 2017 13:00:15 +0000

At least, avoid it when building DDD Aggregates: Dependency injection of a Repository or a Domain Service into an Aggregate should generally be viewed as harmful. The motivation may be to look up a dependent object instance from inside the Aggregate. The dependent object could be another Aggregate, or a number of them. … Preferably, … Continue reading Avoid Dependency Injection

Choose Dependency Injection — If You Can

Tue, 17 Oct 2017 14:00:18 +0000

Some people say, “You don’t need to use dependency injection for everything. Sometimes dependency injection is not the best choice.” It occurs to me that the people who say this are the ones who can’t use it for everything. They say “choose what’s best for your situation”, but their situation precludes the use of dependency … Continue reading Choose Dependency Injection — If You Can

Atlas.Orm 2.0 Is Now Stable

Tue, 17 Oct 2017 13:43:53 +0000

I am very happy to announce that Atlas, a data-mapper for your persistence layer in PHP, is now stable for production use! There are no changes, other than documentation updates, since the beta release two weeks ago. You can get Atlas from Packagist via Composer by adding … "require": { "atlas/orm": "~2.0" } … to … Continue reading Atlas.Orm 2.0 Is Now Stable

A Few Right Ways, But Infinitely More Wrong Ways

Tue, 10 Oct 2017 15:25:45 +0000

A response to the saying: “There’s no one ‘right’ way to do things. There are different ways of doing something that are ‘right’. So stop criticizing my chosen way of doing things — you cannot prove that it is wrong.” For any question, there is a certain number of right answers, but an infinite number … Continue reading A Few Right Ways, But Infinitely More Wrong Ways

Atlas.Orm 2.0.0-beta1 Released

Tue, 03 Oct 2017 14:56:28 +0000

I am very happy to announce that I have just released 2.0.0-beta1 of Atlas, a data mapper for your SQL persistence model. You can get it via Composer as atlas/orm. This new major version requires PHP 7.1 and uses typehints, but best of all, it is backwards compatible with existing 1.x generated Atlas classes! I. … Continue reading Atlas.Orm 2.0.0-beta1 Released

Quality: Program vs Product

Tue, 26 Sep 2017 12:00:02 +0000

I. Why it is that programmers and their employers have different attitudes toward the quality of a project? Thinking of myself as a programmer, I have sometimes formulated it like this: The programmers who do the work are usually the ones who care more about “quality.” Why? They have a reputation to maintain. Low quality … Continue reading Quality: Program vs Product

“Before” (not “Beyond”) Design Patterns

Tue, 19 Sep 2017 12:00:51 +0000

(N.b.: This has been languishing at the bottom of my blog heap for years; time to get it into the sun.) The 2013 article Beyond Design Patterns takes the approach of reducing all design patterns to a single pattern: “Abstracting Communication Between ‘Components’.” The author concludes, in part: Instead of focusing on design patterns, I … Continue reading “Before” (not “Beyond”) Design Patterns

A “Systems” Addendum To Semantic Versioning

Tue, 12 Sep 2017 12:00:05 +0000

tl;dr: When using semantic versioning, consider not only changes to the public API, but also changes to system requirements. Semantic Versioning concentrates on the public API signature as the determiner of when to change version numbers. If the public API changes in a backwards-incompatible way, then you have bump the major version number. When I … Continue reading A “Systems” Addendum To Semantic Versioning

Hacking, Refactoring, Rewriting, and Technical Debt

Tue, 05 Sep 2017 12:00:59 +0000

(Not so much “lessons” here, as “observations and recollections.”) I. From ESR, How To Learn Hacking: Hacking is done on open source. Today, hacking skills are the individual micro-level of what is called “open source development” at the social macro-level. [2] A programmer working in the hacking style expects and readily uses peer review of … Continue reading Hacking, Refactoring, Rewriting, and Technical Debt

How Terrible Code Gets Written By Perfectly Sane People

Tue, 29 Aug 2017 12:00:39 +0000

From Christian Maioli Mackeprang, the following: Legacy code can be nasty, but I’ve been programming for 15 years and only a couple of times had I seen something like this. The authors had created their own framework, and it was a perfect storm of anti-patterns. … And yet, it was not the code’s dismal quality … Continue reading How Terrible Code Gets Written By Perfectly Sane People