Of races and mutexes: synchronizing async operations in JavaScript

While JavaScript is a strictly single-threaded language, the asynchronous nature of its execution model can easily lead to situations in which two or more async operations run at the same time and compete with the program flow depending on which operation succeeds first. The result is a specimen of the dreaded species of race conditions.

Issues of this type can be arbitrarily hard to reproduce, debug and fix, and I guess that every seasoned JavaScript developer can relate one or two horror stories where they literally spent days before finally fixing such an issue for good.

Race conditions are a well-known problem from any language that supports for concurrency, and often a mutex is used as a tool to synchronize such operations. This article shows how to apply the concept of mutexes to JavaScript in order to avoid race conditions.

Weiterlesen

10 Dinge, die Entwickler an (JIRA-)Tickets schätzen

Im letzten Monat habe ich auf dem PO-Camp darüber gesprochen, welche Bestandteile und Prinzipien aus Entwickler-Sicht für gute (JIRA-)Tickets erforderlich sind. Die gesammelten Anforderungen basieren auf der einen Seite auf kurzen Interviews mit Entwickler-Kollegen, die ich im Rahmen unserer Slacktime durchgeführt habe („Was machen für Dich gute JIRA-Tickets aus?“). Zum anderen fließen aber auch meine persönliche Erfahrung als Entwickler und Team-Mitglied, das relativ viel mit dem Kunden kommuniziert, mit ein.

Herausgekommen sind 10 Punkte, die sich auf das Format, den Inhalt und die Rahmenbedingungen, unter denen das Team mit den Tickets arbeitet, beziehen. Weiterlesen

TypeScript für Java-Entwickler

Java-Entwickler die einen Job als Webentwickler annehmen, werden früher oder später mit der Programmiersprache JavaScript konfrontiert. Obwohl die Namen der beiden Sprachen sehr ähnlich klingen und auch deren Syntax recht ähnlich ist, handelt es sich dabei um zwei grundverschiedene Programmiersprachen.

TypeScript für Java-Entwickler

Für Webentwickler mit Java-Hintergrund stellt TypeScript eine attraktive Alternative für die Entwicklung von JavaScript-Anwendungen dar. Mit dieser Transpilersprache lässt sich JavaScript-Quellcode sehr gut strukturieren und effektiv verwalten.

Weiterlesen

TypeScript-Tooling mit npm und Webpack

In diesem Beitrag beschäftige ich mich mit dem TypeScript-Tooling. Ich werde zeigen, wie einfach und komfortabel man ein Webprojekt mit TypeScript als Compiler und Webpack als Bundler unter Verwendung des Node Package Managers npm installieren und betreiben kann.

Darüber hinaus zeige ich an einem praktischen Beispiel, wie sich externe JavaScript-Bibliotheken mit den dazugehörigen TypeScript-Definitionsdateien via npm importieren und typisiert einsetzen lassen.

Weiterlesen

Vom Symfony CMF und Open Source im Allgemeinen

Unser Max ist Core Contributor beim Symfony CMF. Das Content Management Framework bietet Entwicklern die Möglichkeit, sich einzelne Bestandteile eines CMS herauszupicken, ohne ein komplettes Content-Management-System installieren zu müssen.

In dieser einfachen Aussage stecken gleich zwei spannende Themen. Zum einen natürlich das CMF selbst, zum anderen die Frage nach dem Einsatz von Open Source in kommerziellen Projekten einzelner Unternehmen.

Weiterlesen

Ansible Tower im Meetup-Schnellcheck

Was hat ein Meetup zu Ansible Tower mit dem Weltuntergang zu tun? Nun, stellen wir uns folgende Situation vor: Berlin, wir schreiben den 29. Juni 2017. Es schüttet wie aus Eimern, seit Stunden. Berlin steht unter Wasser, die Feuerwehr ruft den Notstand aus.

Doch eine Handvoll verwegener Coder schlagen sich zum Meetup Ansible mit Ansible Tower in unserem Berliner Mayflower-Büro durch. Wir empfangen sie der Witterung entsprechend mit Glühwein.

Damit hätten wir die Ausgangssituation geklärt. Es folgt ein kurzer Bericht vom Main Act des Abends.

Weiterlesen

Refactoring – wenn sich Anforderungen konstant ändern

Refactoring gehört für die meisten softwareentwickelnden Menschen zum täglichen Handwerk – um so erstaunlicher ist es, dass dieser so wichtige Bereich in der Lehre gar nicht vorkommt.

Refactoring & die Frage der Perspektive

Viele Entwickler versteifen sich bei der Entwicklung eines Features darauf, bereits von Beginn an eine möglichst perfekte Lösung abzuliefern. Ob das jedoch der richtige Weg ist, darf bezweifelt werden.

Das zumindest ist die Ansicht von Tobias Schlitt und Kore Nordmann von Qafoo, mit denen wir vor Kurzem über dieses Thema reden konnten. Herausgekommen ist ein Interview mit ein paar spannenden Einsichten – unter anderem der Aufforderung, im ersten Schritt der Implementierung eines neues Features nicht gleich nach der perfekten Lösung zu suchen.

Weiterlesen

Modernisierung von Altanwendungen – die Dos & Don’ts

Ende Mai / Anfang Juni fand die International PHP Conference in Berlin statt, auf der zwei unserer Kollegen als Speaker mit spannenden Themen vor Ort waren. Die gut besuchte Konferenz bot ein breites Spektrum an Besuchern und Unternehmen – und jeden trieben andere Gründe an, vor Ort zu sein.
w
Unser Björn hat die Gelegenheit genutzt und sich unters Volk gemischt. Seine Intention war es, herauszufinden, was die größten Problemfelder sind, denen sich Entwickler und Unternehmen aktuell stellen müssen. Das Ergebnis ist wenig überraschend …

Weiterlesen

TypeScript-Workshop

Im ersten Teil dieser Serie habe ich mich mit der JavaScript-Alternative TypeScript im Allgemeinen beschäftigt. Im zweiten Teil, dem TypeScript-Workshop, möchte ich Euch einen praktischen Einstieg in die Programmiersprache bieten.

Hierfür erstellen wir zusammen eine HTML5-Webseite und zeigen verschiedene Rechtecke animiert auf einem Canvas-Element an.

Was ist TypeScript?

TypeScript Logo

TypeScript ist eine Programmiersprache von Microsoft, deren Compiler nach JavaScript kompiliert. Diese Sonderform eines Compilers bezeichnet man auch als Transpiler.

Die Sprache bietet Sprachkonstrukte, die in allen modernen Programmiersprachen zu finden sind und die über den Standard der Sprache JavaScript hinausgehen, wie beispielsweise Klassen, Interfaces, Vererbung, Module, anonyme Funktionen, Generics und eine statische Typisierung.

Mehr über die Vorteile der Sprache TypeScript könnt Ihr in meinem vorhergehenden Blog-Artikel „TypeScript als JavaScript-Alternative“ nachlesen.

Weiterlesen

PHP Track auf der FrOSCon – CfP is Open

Nach elf Jahren werden Kore Nordman und Sebastian Schaum in Vertretung für die PHP UG Dortmund in diesem Jahr die Orga des PHP-Tracks der FrOSCon an uns abgeben. Uns? Das sind TomUte und ich (ElectricMaxxx).

FrOSCon 2017 – PHP-Track

Hiermit eröffnen wir den Call for Papers für den PHP-Raum der FrOSCon. Deadline ist der 25.06.2017, 23:59:59 Uhr. Die Konferenz findet in diesem Jahr am 19. und 20. August statt, und der Eintritt ist – wie üblich – kostenlos.

Weiterlesen