Klaus

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
Klaus

What’s a change log?

 Thu, 10 Nov 2016 10:02:19 +0100 
#^Keep a CHANGELOG
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.
Klaus

PWA

 Mon, 17 Oct 2016 20:11:17 +0200 
#^Chris Wilson - Progressive Web Apps is the new Ajax.
Image/photo
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.
Klaus

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
Klaus
 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.
Klaus

Asterisk

 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
o_O
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
:headdesk
Klaus

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
Klaus

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) { /* ... */ });
Klaus

Promise

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

Klaus

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.
Klaus

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
Image/photo

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

Understanding Doxygen

 Mon, 23 Mar 2015 00:47:38 +0100 last edited: Mon, 23 Mar 2015 00:48:06 +0100  
Spent the whole evening with the Doxygen source code. There is a small bug in the PHP namespace export for tagfiles. The HTML export is correct, but the tagfiles export uses a wrong format so links to external library documentations don't work.
But unfortunately I still have no idea how this monster works. :dazed

#^doxygen/doxygen
Image/photo
Official doxygen git repository
Klaus

gem of death

 Thu, 12 Mar 2015 19:48:41 +0100 
How can people work with #ruby actually? Or am I the only one who is fucked every time using some ruby gems? :-!
This morning I did a vagrant destroy; vagrant up which provisions among other things a ruby tool (mailcatcher) and everything worked.
I did a vagrant destroy; vagrant up this afternoon and suddenly the ruby program don't want to install anymore because some gems are not compatible anymore with the rest. WTF?!? :facepalm
:headbang :headbang :headbang
Klaus

EyeDrops

 Sun, 11 Jan 2015 11:35:09 +0100 
Already often saw these camel and beer bottles Perl scripts, this is how they get created.

#^Acme::EyeDrops - search.cpan.org
Acme::EyeDrops - Visual Programming in Perl Acme::EyeDrops converts a Perl program into an equivalent one, but without all those unsightly letters and numbers. In a Visual Programming breakthrough, EyeDrops allows you to pour the generated program into various shapes, such as UML diagrams, enabling you to instantly understand how the program works ...
Klaus

Ur/Web

 Sun, 04 Jan 2015 22:45:48 +0100 
#^The Ur Programming Language Family
Ur is a programming language in the tradition of ML and Haskell, but featuring a significantly richer type system. Ur is functional, pure, statically typed, and strict. Ur supports a powerful kind of metaprogramming based on row types.

Ur/Web is Ur plus a special standard library and associated rules for parsing and optimization. Ur/Web supports construction of dynamic web applications backed by SQL databases. The signature of the standard library is such that well-typed Ur/Web programs "don't go wrong" in a very broad sense. Not only do they not crash during particular page generations, but they also may not:
* Suffer from any kinds of code-injection attacks
* Return invalid HTML
* Contain dead intra-application links
* Have mismatches between HTML forms and the fields expected by their handlers
* Include client-side code that makes incorrect assumptions about the "AJAX"-style services that the remote web server provides
* Attempt invalid SQL queries
* Use improper marshaling or unmarshaling in communication with SQL databases or between browsers and web servers

This type safety is just the foundation of the Ur/Web methodology. It is also possible to use metaprogramming to build significant application pieces by analysis of type structure. For instance, the demo includes an ML-style functor for building an admin interface for an arbitrary SQL table. The type system guarantees that the admin interface sub-application that comes out will always be free of the above-listed bugs, no matter which well-typed table description is given as input.
Klaus

TYPO3 CMS 7 will require PHP 5.5

 Mon, 17 Nov 2014 10:56:46 +0100 
Somehow it is quite irritating the huge difference between which #PHP version is still used and which PHP versions are still officially supported.

#^PHP minimum requirements for TYPO3 CMS 7
The next major version of TYPO3 CMS will be called 7 and will have PHP version 5.5 as its minimum PHP version. We consider this step vitally important to our new release strategy for several reasons.
Klaus

How to make a computer

 Thu, 09 Oct 2014 23:10:56 +0200 
My daughter turns 6 next month. I think I found the perfect present for her (and me) :-D

#^Kano - How to make a computer
Kano creates simple, fun computer kits that anyone can make – perfect for kids of all ages.

www.kano.me

#^HOW TO MAKE A COMPUTER – Kano
by TeamKano on YouTube
Klaus

Feel welcome to Ruby

 Tue, 07 Oct 2014 16:28:10 +0200 
I should feel pity for everyone who has to work with #Ruby and rubygems. What a fucking dependency and incompatibility hell.

I used to install mailcatcher through gem install in my Vagrant provisioning scripts for a long time. Suddenly a dependency requires a newer Ruby version than what is available on CentOS6. On CentOS7 it still works, but installs another dependent package in a version that causes Encoding::CompatibilityErrors. Installing an older version of the package and everything is fine. And yet another runtime dependency is not installed by gem and needs to be installed manually. Oh and in CentOS6 gem installs it to /usr/bin in CentOS7 suddenly to /usr/local/bin #WTF?!?

At least I can handle all this in a Puppet module and reuse it, but why must these scripts get so fucked up? :-!
Klaus

Why you should use document.readyState

 Tue, 30 Sep 2014 17:56:53 +0200 
#^Onload in Onload | High Performance Web Sites
I asked several web devs what happens if an onload handler adds another onload handler. Does the second onload handler execute? The onload event has already fired, so it might be too late for the second onload to get triggered. On the other hand, the onload phase isn’t over (we’re between loadEventStart and loadEventEnd in Navigation Timing ter...
Klaus

Luna

 Wed, 25 Jun 2014 20:58:57 +0200 
#^http://www.eclipse.org/luna/
Eclipse Luna includes official support for Java 8 in the Java development tools, Plug-in Development Tools, Object Teams, Eclipse Communication Framework, Maven integration, Xtext, Xtend, Web Tools Platform, and Memory Analyzer.