Hallo! Ich bin Roger Pfaff.

Ich bin selbstständiger Drupal-Entwickler mit einem großen Interesse an selbstorganisierenden Systemen und Methoden, wie SCRUM und Holacracy. Ich setze mich für Open Source Software ein und nutze sie wann immer möglich.

Ach ja, man kann mich buchen. Ich biete meine Expertise in Beratung und in konkreter Arbeit an. Einfach kontaktieren!

Cisco Anyconnect kommt einem ja immer mal unter die Füße (besser gesagt in den Weg) und installiert einen Satz Filter und Proxies, damit das VPN laufen kann. Ausschalten über die UI klappt da nicht wirklich zuverlässig und was die Software mit den eigenen Daten macht ist auch unersichtlich. 

All minibrots are actually surrounded by a history of the zoom. From about the 1/2 way point of the video you actually see a replay of the entire 1st half but with 2-way symmetry, but using 1/2 the space. This is followed by a replay at 4-way symmetry using 1/4 of the space. Near the mini-brot the symmetry gets so high, and the spacing so dense that it looks like circles. Eventually this process collapses towards infinite symmetry, and a minibrot is found.

Das habe ich von dem Creator dieses Mandelbrot-Zooms gelernt.

Cookie Banner nerven, schon immer. Aber wie diese Banner derzeit genutzt werden ist mehr als nervig, sondern macht mich jedes einzelne Mal wütend. Ich habe mir die Top 20 Seiten in Deutschland angesehen und festgestellt, dass die meisten Seiten voll auf der dunklen Seite stehen.

Manchmal kommen wir bei Migrationen an Daten, die keine ein-eindeutige Id haben. Vielleicht ist das Glück aber wohlgesonnen und es gibt zwei oder mehr Felder, die eine Eindeutigkeit herstellen. Das kann mit der Migrate API genutzt werden. Hier am Beispiel einer CSV Datei.:

source:
  plugin: csv
  path: 'public://file-location.csv'
  delimiter: '|'
  header_row_count: 1
  ids: [id1,id2,id3]

Die ids(1,2,3) können verschiedene Typen haben und werden als String kombiniert ohne dass man sich darum sorgen müsste.

Im Web gilt ja grundsätzlich das Einmal klicken Gesetz, was aber von vielen Benutzern gerne ignoriert wird und es wird mindestens doppelt, wenn nicht manisch auf den Submit Button geklickt, was bei vielen Anwendungen zu unerwünschten Folgen führt.

Drupal bietet im Core schon eine JS basierte Funktionalität, die das verhindert und die kann in jedes Frontend über die libraries.yml eingebunden werden.

Vor einigermaßen langer Zeit wurde von der Band Magic Juhnke ein Song rausgebracht, der da lautete: "The aim of design is to define spaces". Ewig hab ich nicht mehr an das Lied gedacht, aber in meiner Facilitator-Rolle und der Beschäftigung mit New Work ist mir aufgefallen, dass dieser Satz neu geschrieben werden kann.

The aim of facilitation is to create spaces."

Um die Abhängigkeiten in Drupal abbilden zu können benutzen wir Composer. Das ist auch klasse, wenn jedes Modul ein Release hat, das einfach so installiert werden kann. Doch oft genug kommt es vor, dass man doch auf ein dev Release zurückgreifen muss und wenn man dann einfach ein

Dieses Jahr ist ein Jahr in dem ich immer öfter empfohlen habe nicht agil zu arbeiten. Obwohl ich absoluter Fan von agilen Arbeitsweisen bin.

Bei einem Auftrag hatte ich mit Commerce Produkten zu tun, die von einer Drupalseite zur anderen migriert werden mussten. Die Produkttypen waren nur in Details unterschiedlich und die Quelle bestand aus einer Liste mit einem Mix der Typen. Anfangs dachte ich noch, dass ich hier verschiedene Migrationen oder auch ein eigenes Plugin schreiben müsste. Zum Glück aber macht die Migrate API ein "loose coupling" und ignoriert fehlende Felder im Ziel einfach. So konnte ich eine Migration für alle Typen schreiben, die trotzdem funktionierte. Danke, Migrate API!

Um bei einer Route wie /node/6/edit oder /user/2/edit die Entity ID zu bekommen musst du nicht mit arg() arbeiten oder so. Stattdessen rufst du einfach die Funktion routeMatch() auf und bekommst gleich noch das ganze Objekt zurück.

$node = \Drupal::routeMatch()->getParameter('node');

$user = \Drupal::routeMatch()->getParameter('user');