supporting PHP versions

 Fri, 10 Nov 2017 23:45:25 +0100 
There are libraries that drop PHP <= 7.0 support in a minor release. ;-) But pretend to still "follow" semver in conjunction with composer. This makes it even more problematic shipping just one release source for all supported PHP versions or include vendor folder.

On the one hand I can understand their point. The libraries API is still semver and the platform requirements are transparently handled through composer. But PHP5.6 and PHP7.0 have officially EOL in end of 2018, so still over a year.


 Bonn, GermanyThu, 21 Sep 2017 00:05:20 +0200 
Unsere Mission ist es, jeder Schülerin und jedem Schüler in Deutschland ab der 3. Klasse einen spielerischen Zugang zur digitalen Welt mit Hilfe der Calliope mini zu ermöglichen.

Our mission is to give pupils from year 3 onwards a playful approach to the digital world.

With Calliope mini you have countless creative options right at your fingertip. You want to build a robot or transmit messages? With just a few clicks you can create a program for the microprocessor and make things move.

Besides 25 red plus one RGB LED and two programmable buttons the board contains a combined position sensor with motion sensor and compass as well as a bluetooth module that allows the Calliope mini to communicate with other devices. The board can't only be programmed with your computer: you can use an app to transfer apps you created yourself to your mini computer.

Monotree, not Monorepo

 Wed, 09 Aug 2017 17:29:03 +0200 
Interesting blog post.

#^Why Github can't host the Linux Kernel Community
A while back at the awesome maintainerati I chatted with a few great fellow maintainers about how to scale really big open source projects, and how github forces projects into a certain way of scaling. The linux kernel has an entirely different model, which maintainers hosting their projects on github don’t understand, and I think it’s worth explaining why and how it works, and how it’s different.


 Wed, 28 Jun 2017 21:44:56 +0200 
Finally!!! Really looking forward to the included #PHPUnit support.

#^Eclipse Oxygen
Eclipse is probably best known as a Java IDE, but it is more: it is an IDE framework, a tools framework, an open source project, a community, an eco-system, and a foundation.


 Mon, 17 Apr 2017 23:40:29 +0200 
#^Composition over inheritance - Wikipedia

Composition over inheritance (or composite reuse principle) in object-oriented programming is the principle that classes should achieve polymorphic behavior and code reuse by their composition (by containing instances of other classes that implement the desired functionality) rather than inheritance from a base or parent class.[2] This is an often-stated principle of OOP, such as in the influential book Design Patterns.

Thou Shalt Not Depend on Me

 Mon, 13 Mar 2017 13:12:14 +0100 
#^Thou Shalt Not Depend on Me: Analysing the Use of Outdated JavaScript Libraries on the Web
Web developers routinely rely on third-party JavaScript libraries such as jQuery to enhance the functionality of their sites. However, if not  properly maintained, such dependencies can create attack vectors allowing a site to be compromised.

In this paper, we conduct the first comprehensive study of client-side JavaScript library usage and the resulting security implications across the Web. Using data from over 133k websites, we show  that 37% of them include at least one library with a known vulnerability; the time lag behind the newest release of a library is measured in the order of years. In order to better understand why websites use so many vulnerable or outdated libraries, we track causal inclusion relationships and quantify different scenarios. We observe sites including libraries in ad hoc and often transitive ways, which can lead to different versions of the same library being loaded into the same document at the same time. Furthermore, we find that libraries included transitively, or via ad and tracking code, are more likely to be vulnerable. This demonstrates that not only website administrators, but also the dynamic architecture and developers of third-party services are to blame for the Web’s poor state of library management.

The results of our work underline the need for more thorough approaches to dependency management, code maintenance and third-party code inclusion on the Web.


 Wed, 08 Mar 2017 22:57:30 +0100 
From the DICs I have looked at so far I like Dice the most. Especially it's documentation is one that you understand what to use it for and how. This feeling I didn't have with most of the other documentations I have read from other DICs.

#^Dice - PHP Dependency Injection Container
Dice is a minimal, lightning fast PHP Dependency Injection Container with a focus on being easy to use.

Dice allows developers to move object creation logic out of their application logic. This has many advantages when it comes to OOP theory, but also makes the developers life easier. It tries to be as minimal and unobtrusive as possible. Everything is done to minimise and simplify application code, making the application developers job easier and making the learning curve as shallow as possible.

Maybe should take a look at the PSR-11 wrapper for Dice.


 Mon, 02 Jan 2017 12:20:50 +0100 
This looks good.

#^Ende des Supports für PHP 5 | heise online

Support-Schema für PHP

Use content element relations in TYPO3 extensions

 Mon, 05 Dec 2016 16:15:15 +0100 
Use content element relations in TYPO3 extensions
Wouldn’t it be cool to enable editors to use standard or custom content elements in your extensions? The consequence is that you do not have to develop each and every functionality again. In this post I will show you, how you can use all available content elements of your installation.

PHP 7.1.0 Release Announcement

 Sat, 03 Dec 2016 14:46:16 +0100 
#^PHP: PHP 7.1.0 Release Announcement
The #PHP development team announces the immediate availability of PHP 7.1.0. This release is the first point release in the 7.x series.
PHP 7.1.0 comes with numerous improvements and new features such as
  * Nullable types
  * Void return type
  * Iterable pseudo-type
  * Class constant visiblity modifiers
  * Square bracket syntax for list() and the ability to specify keys in list()
  * Catching multiple exceptions types

What’s a change log?

 Thu, 10 Nov 2016 10:02:19 +0100 
Don’t let your friends dump git logs into CHANGELOGs™

What makes a good change log?
I’m glad you asked.

A good change log sticks to these principles:
    It’s made for humans, not machines, so legibility is crucial.
    Easy to link to any section (hence Markdown over plain text).
    One sub-section per version.
    List releases in reverse-chronological order (newest on top).
    Write all dates in YYYY-MM-DD format. (Example: 2012-06-02 for June 2nd, 2012.) It’s international, sensible, and language-independent.
    Explicitly mention whether the project follows Semantic Versioning.
    Each version should:
        List its release date in the above format.
        Group changes to describe their impact on the project, as follows:
        Added for new features.
        Changed for changes in existing functionality.
        Deprecated for once-stable features removed in upcoming releases.
        Removed for deprecated features removed in this release.
        Fixed for any bug fixes.
        Security to invite users to upgrade in case of vulnerabilities.


 Mon, 17 Oct 2016 20:11:17 +0200 
#^Chris Wilson - Progressive Web Apps is the new Ajax.
This is a transformative moment for the web. The revolution that is happening now is no less revolutionary than what happened a decade ago with Ajax - we can finally build reliable, fast and engaging apps on web technologies. In this talk, I'll dive into the what, why and how of Progressive Web Apps - describe what a "Progressive Web App" really is, show the opportunities in building them, and point you on your way to becoming a Progressive Web App developer.

Need a Dependency Injection?

 Sat, 15 Oct 2016 11:28:25 +0200 
Any experiences with dependency injection containers like PHP-DI, Pimple, Dice, Aura.Di, Orno/Di?

#Service Container #Dependency Injection #Lacy Loading #DI
 Fri, 14 Oct 2016 19:28:44 +0200 
The more I read about "best practices" for testable code the more I believe they don't exist, or are just a pita.


 Fri, 26 Aug 2016 14:07:27 +0200 
Don't expect a .gitattributes in your root folder to have any effect. I had an entry to treat .sqlite files as binary:
*.sqlite binary
But what I got was:
$ git ls-files --eol docroot\sites\default\files\.ht.sqlite
i/-text w/-text attr/text eol=lf    docroot/sites/default/files/.ht.sqlite
File content identification used by #Git in index and working tree are binary/no normalization (i/-text w/-text). But when checking out or committing there is normalization (attr/text eol=lf). But therefore I have a .gitattributes, are you kidding me?

Took quite a long time to find out the problem. Further down in the tree was another .gitattributes. Actually no problem, as long as you don't use something like:
*    text=auto eol=lf

What’s wrong with pagination?

 Fri, 19 Aug 2016 17:00:46 +0200 
Why Most Programmers Get Pagination Wrong
Pagination is one of those things that almost everyone gets wrong for two reasons:
User experience
Database performance

Here’s why...

TL;DR: OFFSET pagination bad. Keyset pagination good.

This is always amusing:
Due to Oracle license restrictions, we cannot publish benchmark results here, comparing Oracle with PostgreSQL

Permissions API

 Wed, 29 Jun 2016 23:10:38 +0200 last edited: Wed, 29 Jun 2016 23:11:58 +0200  
Permissions API
Many of the functionalities that we're translated from mobile to the web require permission from the user.  Think about geolocation, audio/video access (think getUserMedia for camera access), and likewise APIs.  We can probably all agree that requiring permission for access to these APIs is a good thing, but I see a problem:  there's sometimes no way to access each APIs permission level without triggering a request to the user to get that information.  Obtrusive to say the least!

// Get the geolocation status (starts out as "prompt")
// ... meaning the user will be shown an access request if we want it
navigator.permissions.query({ name: 'geolocation' }).then(function(result) {
    /* result.status = "prompt" */

// Request geolocation access if we really want it
navigator.geolocation.getCurrentPosition(function(result) { /* ... */  })

// Assuming the user requested access, the permission is now "granted"
navigator.permissions.query({ name: 'geolocation' }).then(function(result) {
    /* result.status = "granted" */

// Push notifications require options:
navigator.permissions.query({ name: 'push', userVisibleOnly:true }).then(function(result) { /* ... */ });


 Tue, 16 Feb 2016 17:30:32 +0100 


Fear-Driven Versioning

 Fri, 05 Feb 2016 18:46:37 +0100 
#^jonathanong/ferver - fe(a)rver - versioning for those of us who only care about breaking changes
Fe(a)rVer - a versioning scheme for those of us who only care about breaking changes. This is similar to semver and uses the same operators like ~ and ^, but has slightly different as well as stricter semantics.

The primary differences are:
* No patch version bumps are allowed for any changes that have a possibility of being a breaking change.
* "minor" breaking changes are allowed in minor version bumps.

Fluent In 60-Year-Old Code

 Sun, 01 Nov 2015 20:34:34 +0100 
#^Why NASA Needs a Programmer Fluent In 60-Year-Old Code

To keep the Voyager 1 and 2 crafts going, NASA's new hire has to know FORTRAN and assembly languages.