Ihr Partner in Web-Entwicklung

Innovative Ideen für Ihr Unternehmen


Egal ob neue Firmen-Webseite, CRM-System oder Spezial-Software. Wir sind ihr Ansprechpartner in Sachen Web-Entwicklung!

Wir erstellen Webseiten und Web-Applikationen nach ihren Wünschen und Anforderungen. Dabei setzen wir stehts auf die neusten Technologie- und Sicherheits-Standards.

Netzwerk Administration

Planung, Aufbau und Administration ihres kleinen bis mittelständigen Firmen-Netzwerkes.

Wir kümmern uns daraum dass es in ihrer Firma läuft. Wir planen, bauen und administrieren ihr Unternehmens-Netzwerk.

Linux Server Management

Aufbau, Instandhaltung und Wartung ihres Linux-Servers.

Wir bieten ihnen einen umfassenden Service für ihren Linux-Server. Wir sorgen dafür, dass alles auf dem neusten Stand ist und ihre Services verlässlich laufen. Dabei achten wir stehts auf die Sicherheit ihres Netzwerkes und ihrer Kunden.

Wer Sind Wir?

Software ist Analyse und Instrospektion. Um einen Prozess zu verstehen, betrachten wir ihn so lange bis wir ihn verstehen. Gute Software erklärt einen Prozess in einfachen Schritten.

Wir bauen Software aus Micro-Services, kleine Komponenten die eine kleine Aufgabe erledigen. Ein Service alleine ist nahezu nutzlos, aber wenn mehrere zusammenfließen - dann können sie komplexe Prozesse abbilden und verwalten.

Viele unserer Services sind Open-Source, so das sie von der Community geprüft und verbessert werden können. Das erlaubt uns transparente und effiziente Arbeit.

Wir ergänzen diese Services dann mit anderen Services die proprietär sind, und das geistige Eigentum ihrer Firma schützen. [Mehr erfahren?]

Wir möchten das unsere Kunden das Gefühl haben das dass was wir tun ganz einfach ist. Dann wissen wir das wir es richtig machen.



Inhaber & Entwickler





Wir nutzen unseren Blog um uns mit anderen Entwicklern auszutauschen. Die Softwareentwickler Community ist global, und selten Deutsch sprechend. Unsere Artikel sind deshalb alle auf Englisch verfasst. Wir laden sie trotzdem ein sich umzuschauen.

Using to provide images as webp with compatible fallbacks


I’ve been lately working on our backend for compressing images that user’s upload to our servers, and debating how the system should present the data.

Originally, I had a Javascript job that would run over the different formats, check for WEBP support in the browser, check which size should be presented and then select a candidate.

This left me with a rather complex script for such a mundane task, and with a really poor fallback mechanism for spiders, and other non-JS ready devices.

My next idea was to just use the <picture> tag. It allows the browser (or whatever is requesting the website) to select the appropriate image without the need for any JS.

This would allows us to provide an output like this:

  <source srcset="/assets/img.webp" type="image/webp">
  <source srcset="assets/img.jpg" type="image/jpeg">
  <img src="assets/img.jpg">

As you can see, the syntax is really expressive, allows a lot of customization with additional meta tags, and is really well supported when using reactive JS to generate it.

And, as an added bonus, it’s all free of any Javascript.

: 0 : web development, html

Get your local weather-forecast for your website


Today I would like to write about an API by OpenWeatherMap that delivers you a complete weather-forecast for a given location. In the free-subscription-plan you can call the API up to 60 times/minute or 1.000.000 calls/month which should be enough for the most applications.

For example the One-Call-API provides a full set of data like:

- Minute forecast for 1 hour
- Hourly forecast for 48 hours
- Daily forecast for 7 days
- Historical data for 5 previous days
- Government weather alerts

The API delivers the data in the JSON format which makes it pretty easy to use this data in you website/app.

Example of an API call:

https://api.openweathermap.org/data/2.5/onecall?lat=33.441792&lon=-94.037689&exclude=hourly,daily&appid={API key}

Example of an API result:

  "lat": 40.12,
  "lon": -96.66,
  "timezone": "America/Chicago",
  "timezone_offset": -18000,
  "current": {
    "dt": 1595243443,
    "sunrise": 1595243663,
    "sunset": 1595296278,
    "temp": 293.28,
    "feels_like": 293.82,
    "pressure": 1016,
    "humidity": 100,
    "dew_point": 293.28,
    "uvi": 10.64,
    "clouds": 90,
    "visibility": 10000,
    "wind_speed": 4.6,
    "wind_deg": 310,
    "weather": [
        "id": 501,
        "main": "Rain",
        "description": "moderate rain",
        "icon": "10n"
        "id": 201,
        "main": "Thunderstorm",
        "description": "thunderstorm with rain",
        "icon": "11n"
    "rain": {
      "1h": 2.93

You can then use this API with a simple PHP-script:

$apiResponse    = file_get_contents('https://api.openweathermap.org/data/2.5/onecall?lat=33.441792&lon=-94.037689&exclude=hourly,daily&appid={API key}');

$currentWeather = json_decode($apiResponse);
Now you can simply display the data with:
echo $currentWeather→current→temp;

: 0 : web development, htmlprogramming, weather, api, php

Changing the last-modified date of a file.


Every file on the file system has three timestamps attached to them, they’re called atime, ctime and mtime. They represent the time of last:

  • Access
  • Modification
  • Change

Sometimes, specially when transferring over the network or converting, metadata for files gets lost in the process and all three timestamps are defaulted to the current timestamp.

When converting a markdown file to HTML, for example, the creation, modification and change dates for the generated file will be set to the current time. This is often wrong, because the time of the last access and the last modification were not now (at least we assume that the content was not modified past the format).

In many cases we don’t want that. We want our markdown file that was last edited by a human three years ago to properly report that it was edited three years ago.

But it we run stat my.md it will contain something like this

  File: my.md
  Size: 12          Blocks: 8          IO Block: 4096   regular file
Device: 10302h/66306d   Inode: 57660       Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/   user)   Gid: ( 1000/   user)
Access: 2020-10-09 14:06:45.078247343 +0200
Modify: 2020-10-09 14:06:45.078247343 +0200
Change: 2020-10-09 14:06:45.078247343 +0200
 Birth: -

But, if we run touch, we can change the date and make it fit with the fact that my.md contains a piece of text that was not modified since three years ago. For this we run touch my.md -m -t 201706051234.56

Now, our same stat command will return this:

  File: my.md
  Size: 12          Blocks: 8          IO Block: 4096   regular file
Device: 10302h/66306d   Inode: 57660       Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/   user)   Gid: ( 1000/   user)
Access: 2020-10-09 14:06:45.078247343 +0200
Modify: 2017-06-05 12:34:56.000000000 +0200
Change: 2020-10-09 14:11:41.455602782 +0200
 Birth: -

Which would imply that our file has not been modified for the last three years.

: 0 : web development, htmlprogramming, weather, api, phplinux, cli

What MySQL error 1215 means


This is one of the more unnerving errors in MySQL and MariaDB.

When adding a foreign key constraint you get an error saying Error #1215 cannot add foreign key constraint and the database will obviously not add the foreign key.

The issue with this is that most threads give you a laundry list of things that could be wrong with your query that just send you on a detour checking the health of your database.

The issues that Error 1215 could stand for:

  • A syntax error in your query that causes MySQL to not find the table you’re looking for
  • A reference to a table that doesn’t exist
  • A reference to a field that doesn’t exist
  • Incompatible field types between the source and the target schema
  • Incomptaible collations between the table and the referenced one
  • One of your tables is not innoDB

And probably a few more that I cannot think of off the top of my head. But there’s a way to get an extended error message that really often helps finding the source of the problem.


This is mostly information that does not at all relate to the issue, but there’s a section called LATEST FOREIGN KEY ERROR that contains information on why your query happened to fail.

I hope this saves somebody a few hours of running in circles looking for a typo in the query like I did.

: 0 : web development, htmlprogramming, weather, api, phplinux, climysql, web development

SIOCGIFHWADDR on eth0 failed: Bad file descriptor


This is the kind of error etherwake returns whenever it’s not running in privileged mode. Running it as sudo will do the trick.

: 0 : web development, htmlprogramming, weather, api, phplinux, climysql, web developmentlinux, etherwake


Wir haben Ihr Interesse geweckt oder Sie möchten uns einfach eine Frage stellen?
Gerne können Sie uns eine E-Mail verfassen oder sich telefonisch bei uns melden.

Wir freuen uns auf Ihre Anfrage!

Pelkovenstr. 148
80992 München