Bonn, GermanyMon, 07 Sep 2020 20:05:46 +0200 
#^Codequalität lehren und lernen: Erfahrungen aus 6 Jahren Programmierausbildung | heise online

Wir empfehlen Maßnahmen, um vor dem Berufseinstieg für eine bessere Ausbildung zu sorgen und eine sinnvolle Weiterbildung zu etablieren.


 Sun, 30 Aug 2020 15:57:42 +0200 
#^Entwicklung: Warum Rust die Antwort auf miese Software und Programmierfehler ist | heise online

Rust bringt so viele schlaue Ideen mit, dass die Programmiersprache viele Experten sofort überzeugt hat. Und hoffentlich einer rosigen Zukunft entgegensieht.


 Bonn, GermanyFri, 07 Aug 2020 00:23:45 +0200 
#^FuzzCon Europe 2020
FuzzCon Europe is the event for everyone who wants to learn more about the latest developments, technologies, and trends in application security testing.


 Wed, 01 Apr 2020 00:12:58 +0200 
#^Theia 1.0 - Finally a Good Browser IDE
We are excited to announce Version 1.0 of Eclipse Theia, the vendor-neutral open-source IDE platform that runs in browsers and on desktops.

My experience was that it was a bit of luck if VS Code extensions did really work. Tried to debug one extension in Theia, but after 4 evenings getting lost in endless loops in the debugger I gave up. Should give it a try again.

Reminds me I still need to update Eclipse Che.

msodbcsql17 Buster

 Fri, 21 Feb 2020 19:26:12 +0100 
After a recent php:7.3-apache Docker image rebuild we were not able to connect to the M$SQL server anymore from our PHP application inside the docker container. Seems to be related with the Debian 9 (Stretch) --> Debian 10 (Buster) update of the official PHP base image.

The error message with the new container was:
[Microsoft][ODBC Driver 17 for SQL Server]TCP Provider: Error code 0x2746
[Microsoft][ODBC Driver 17 for SQL Server]Client unable to establish connection

Too lazy to find a proper solution right now, but a quick fix is to add following code to our Dockerfile:
RUN sed -i 's/SECLEVEL=2/SECLEVEL=1/g' /etc/ssl/openssl.cnf
Another lessons learned is to use the right base image tag e.g.: php:7.3-apache-stretch


 Bonn, GermanySun, 08 Sep 2019 23:45:50 +0200 
At the last WebTech meeting in #Bonn was a very interesting talk about ReactPHP with many fascinating examples for Streams, Redis, SSE, Websocket, etc. Pushing the limits of #PHP

#^Pushing the limits of PHP (WebEngAc19)
by Christian Lück on Speaker Deck


 Tue, 02 Apr 2019 23:04:08 +0200 
Good article about #PHP development in general.

#^Help! My tests stopped working.

Sebastian Bergmann provides guidance on how to avoid frustration when upgrading to a new major version of PHPUnit.


 Thu, 20 Dec 2018 22:37:51 +0100 
#^Martin Fowler: "Refactoring ist heute relevanter als vor zwanzig Jahren"

Martin Fowler hat als Autor das Thema Refactoring einer breiten Öffentlichkeit vermittelt. Im Gespräch mit heise Developer erklärt er, warum er für die frisch erschienene Neuauflage seines Buchs zum Thema auf JavaScript statt Java setzt.

The Birthday Paradox mit Python erklärt

 Mon, 03 Dec 2018 17:32:31 +0100 
#^Gemeinsame Geburtstage unter Partygästen
Dass auf einer Geburtstagsparty mit 23 Gästen in mehr als 50 Prozent der Fälle zwei Gäste mit dem gleichen Geburtstag weilen sollen, hört sich für Mathe-Laien abenteuerlich an. Mit statistischen Bordmitteln macht sich Partylöwe Mike Schilli daran, die Behauptung zu beweisen.
Bei dem Problem kommt es auf die genaue Formulierung an. Niemand kann erwarten, auf eine Party mit 23 Leuten zu gehen und dort mit 50 Prozent Wahrscheinlichkeit jemanden mit dem gleichen Geburtsdatum zu treffen.

Trunk based development

 Fri, 22 Jun 2018 16:37:23 +0200 
Quite interesting reading this overview

#^Trunk Based Development - Game Changers
Since the early 80’s a number of things have pushed best practices towards Trunk-Based Development, or away from it.

The language in use to describe such things has changed over time. Software Configuration Management (SCM) is used less today than Version Control Systems (VCS) is. A simpler still term - “Source Control” - seems to be used more recently, too.

Similarly, ‘trunk’ and ‘branch’, have not always been used as terms for controlled code lines that have a common ancestor, and are eminently (and repeatably) mergeable.


 Fri, 19 Jan 2018 00:13:59 +0100 
- $dsn = $this->driver_dbtype . ':host=' . $server . (intval($port) ? '' : ';port=' . $port);
+ $dsn = $this->driver_dbtype . ':host=' . $server . (intval($port) ? ';port=' . $port : '');

It took me three evenings to find out why some database unit tests just did not want to work. :facepalm

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.