At, we learned the hard way that it’s critical to understand the inner workings of the distributed masterless database Cassandra if one wants to experience good performance during reads and writes. This post describes some of the details of how Cassandra works under the hood, and shows how understanding these details helps to anticipate which use patterns work well and which don’t.

For one of my current projects, I needed to gain full control over the request-body-to-case-class-object transformation of my Scala Play2 controller action. Here’s the solution I came up with.

I recently played around with graphs and tried to implement Depth-First Search in a functional and recursive way. Here is what I learned.

Passing an array when declaring a defined type automatically evaluates the defined type once for each element of the array, but care must be taken if no array is declared in the Hiera structure for a given target system.

Play 2.4 supports Compile Time Dependency Injection. This post describes how to inject your own Cassandra repository object into a controller at compile time, while also initializing and closing a Cassandra connection session during application startup and shutdown, and how to mock the repository in the non-integration tests.

Das Personalmarketing der GALERIA Kaufhof GmbH hat einen wie ich finde sehr ansprechend gemachten Film zur Arbeitswelt im E-Commerce Bereich des Unternehmens drehen lassen. Mit dabei meine Kollegen Beate Radics, Rico Pfaus, und ich.

Dieser Beitrag erläutert die wichtigsten Eckpfeiler der Software- und System-Architektur der Online Plattform, und zeigt das Verhältnis der Architektur zu Vorgehensmodell und Aufbauorganisation auf.

This post describes how to migrate the default test cases that ship with Play 2.4 from specs2 to ScalaTest.

Already working on an sbt-based Scala project with two sub-projects, I wanted to create a third sub-project, a Play2 application. This post describes what worked for me.

Symfony 3.0 has been released recently, and I wanted to upgrade my side project JourneyMonitor, which was still based on Symfony 2.6, as quickly as possible. This post explains how I approached the upgrade, and shows which parts of the project structure and code had to be changed in order to get the project working again.

Ich möchte dieses Projekt aus der realen Welt heranziehen um den Leser durch all jene Details des Produktentwicklungsprozesses zu führen, die eine relevante Rolle spielen im Zusammenhang mit dem Schreiben und Betreiben von Anwendungen auf Basis von Symfony2 – hierbei gehe ich ein auf Aspekte wie Projektsetup, Testing, Datenbankmigrationen, Continuous Delivery, Sicherheit, und vieles mehr.

This post describes how to set up a new Scala 2.11.7 project with ScalaTest 2.2.4 support using sbt 0.13.9 on Mac OS X 10.11 “El Capitan” with Java 1.8.

If set up as describes below, you can manage your project via sbt, and you will be able to run your test cases via sbt test. Also, after setting things up this way, the project can be opened and used in IntelliJ IDEA 14 as an sbt project.

I’m currently tinkering with Spark for my side project JourneyMonitor. The goal is to extract useful metrics from the Selenium runs executed by the platform.

To do so, I’m currently in the process of creating a new Analyze component. I want to build the Spark setup and the jobs using Scala 2.11. Therefore, I had to compile my own version of Spark 1.5.1, put it onto the systems, and run a cluster from that. This post describes what worked for me.

In Ausgabe #23 der ShopTechTalks unterhält sich Roman Zenner mit Michael Wegener (talentformation GmbH) und mir über die selbst entwickelte E-Commerce-Plattform von GALERIA Kaufhof. Wir berichten unter anderem über die nötigen Schritte von einer monolithischen Shop-Lösung, die primär von einem externen Dienstleister weiterentwickelt und gepflegt wurde hin zu einem verteilten System, an dem interne Teams arbeiten.

In diesem Tutorial möchte ich auf die Verarbeitung des JSON Body eines eingehenden POST Requests innerhalb eines Play2 Controllers eingehen, insbesondere in Hinblick auf die fachliche Validierung der JSON Struktur und ihrer Überführung in Models in der Applikation.

Please do not read this, this, this, this, and this.

This is a from-the-trenches tutorial about some of the first things I have managed to understand about and build with Scala. My goal is to provide a detailed step-by-step tutorial which shows how to set up a new Scala project with two sub-modules (one being plain old Scala, one being based on Play2) using sbt. I’ll also describe how to enable both modules to speak with an Apache Cassandra database, and how to add automatically applied database migrations (in order to allow using the project in a Continuous Delivery setup like the one we use at Galeria Kaufhof).

Please do not read this, this, this, this, and this.

This is a short tutorial which explains how to forward outside access to ports on a Cisco router on to ports on internal systems while limiting this access to selected outside IPs.

This article describes in great detail what I learned about setting up AngularJS applications in terms of project structure, tools, dependency management, test automation and code distribution. The result is a seed project that is easily extendable, clearly structured, self-documenting, and comfortable to work with.

The PHP library Mockery allows to use a simulated version of certain objects within unit tests, usable where objects are passed into methods as dependencies. This form of simulation is called mocking. The following example shows how mocking enables us to test methods that depend on a database without the need for a real database when running our tests.

With this series I would like to provide a comprehensive hands-on tutorial that explains step-by-step how to build an automated and centrally managed Linux server infrastructure using Puppet. Part 1 of the series explains in great detail how to set up a virtual machine infrastructure which allows to create a realistic Puppet server-client setup.

The second part of my Puppet series explains how to use the infrastructure that was set up in part 1 in order to automatically and centrally manage the configuration of a Puppet client system.

Part 3 of the series shows how to extend the first simple manifest developed in the previous part into a more complex one, and how to structure it into a generic and reusable module.

The fourth part of this series shows how an infrastructure-wide users, rights and SSH key management can be realized through Puppet and demonstrates the use of macros in order to streamline the creation of manifests with similar content.

Let’s assume you have a physical machine running a Linux system, and you would like to convert this system into a virtual KVM/QEMU machine, keeping everything as close to the original as possible. What follows is my approach.

I would like to contribute to Uncle Bob’s concept of The Clean Architecture by demonstrating how its principles could be applied to an actual Go application.

Some days ago, my son asked me how computer games are made. The result is a simple yet fully-functional 2D space shooter, available on Facebook. Here’s how it’s done.

Every now and then, a manager at your company might say something like “We need to work longer” or “Our people need to work longer”.
Here’s why I don’t think it is a good idea to say this.

Writing JavaScript modules that can be seamlessly included in client-side as well as server-side applications, and providing Jasmine test suites which allow to test these modules in a browser environment as well as a Node.js environment is possible without any dirty workarounds.

Am 14. März 2012 fand das erste Treffen der Symfony User Group Berlin statt. Ich habe dort einen kurzen Talk mit dem Titel PHP 5.4 – die wichtigsten Neuerungen im Überblick gehalten. Folien und Videomitschnitt des Talks nach dem Klick.

Let’s talk about object-orientation and inheritance in JavaScript.

The good news is that it’s actually quite simple, but the bad news is that it works completely different than object-orientation in languages like C++, Java, Ruby, Python or PHP, making it not-quite-so simple to understand.

But fear not, we are going to take it step by step.

Some days ago my son asked me how computer games are made. I couldn’t really explain it very well in terms he understood (he’s 5 years old), but I wanted to show it to him. Thus I started working with him on a 2D space shooter written in JavaScript, using the canvas element of HTML5.

Some weeks ago I started working on a new open source software, called bivouac.

bivouac provides an open source software package which allows to easily setup and run web-based group chats with dead-simple file-sharing (drag a file into the chat, and it’s immediately available as a download for all chat members).

Besides these “feature goals”, my secondary [...]

Peter Armstrong from Leanpub, where I publish my eBooks, did an interview with me on the experience of releasing The Node Beginner Book on their platform, how bundling books work out, pricing, on learning from each other in the Internet age, and much more.

Some weeks ago I wrote about deploying Symfony2 Applications to Amazon AWS with Scalarium. It turned out that the described methodology can be refined in several ways. Here’s how.

If you set up an OutlineView in Interface Builder and connect your Controller as its dataSource and delegate (and provide the methods there accordingly), you will notice that

- (id)outlineView:(NSOutlineView *)outlineView
objectValueForTableColumn:(NSTableColumn *)tableColumn

never get’s called. The reason might very simple: in Interface Builder, in the attributes inspector for your OutlineView, you can define [...]

This here is just me, bragging about myself. You have been warned.

This guy with the psychopathic look standing in a room full of rubbish in front of something that vaguely looks like computers is me standing in front of the first MyHammer server cluster, only days before the whole system went into production.

It was 2005, [...]

This article describes how to use the cloud-based cluster-management platform Scalarium in order to automatically mass-deploy Symfony2 applications with a MySQL database backend onto clusters of Amazon EC2 virtual machines by creating a special Symfony2 environment, using a custom Chef recipe, and making use of Doctrine migrations.

I’m about 3.5 hours into node.js development, I guess that qualifies me to give advice on it on this Internet thing.

Being the BDD fanatic that I am, I wanted to start off behaviour-driven right from the beginning, and Vows looked like a good choice.

However, I quickly came to the point where I needed to stub [...]

It just dawned on me that this is really the only job application form that makes sense…

The following roots in something I heard from Jon Jagger at QCon London 2011 after his fantastic talk about Deliberate Practice. It was related to Test Driven Development. He asked “Why do cars have brakes?”. It made us think “To stop!”, but he said “No – to go faster”.

I’m really into visualizations. More often than not I can only really “get” something (a complex system, an abstract idea, a process etc.) when I see it visualized. You could call this the transformation of gut feelings into images.

So, I had this (rather obvious) gut feeling that working iterative in software projects makes a lot [...]

Das Blog von O’Reilly Deutschland hat in seiner Reihe “Karriere(n) in der IT” ein kurzes Interview mit mir geführt.

Ich werde oft gefragt, wie ich so ein hervorragender Manager geworden bin. Haha, quatsch, kein Mensch fragt mich das. Ich stelle mir nur manchmal vor, dass es so wäre. Dann weine ich mich langsam in den Schlaf… Wo war ich? Ach ja.

Also, ich wurde nach Literatur zum Thema Management bzw. Mitarbeiterführung gefragt. Spontan fiel mir [...]

Platform Health Viewer (kurz PHV) ist mein aktuelles Ruby on Rails Hobbyprojekt.

Sobald es einen stabilen Zustand erreicht, wird dieses Tool das Sammeln und Visualisieren verschiedener statistischer Daten, wie sie typischerweise von Internetplattformen erzeugt werden, schnell und leichtgewichtig ermöglichen. Beispiele für diese Daten sind Dinge wie die CPU Last einzelner Systeme, Benutzerlogins, Anzahl der Seitenaufrufe usw.

Die [...]

Platform Health Viewer is my current Ruby on Rails pet project.

Once stable, it will allow users to easily collect and visualize different types of statistical data which is typically produced by internet platforms, like CPU performance, user logins, HTTP requests etc.

The main application is build on Rails, the server used for data collection is written [...]

Ich hatte tatsächlich einmal eine ganz eigene Idee. Und sie war gut, auch nachdem ich sie mehrmals durchgekaut und von allen Seiten beleuchtet hatte.

Wieso eigentlich sollte man die Prinzipien und Methodiken von testgetriebener Softwareentwicklung nicht auch auf den Bereich der IT-Systemadministration übertragen? Also in aller Kürze: Ich definiere Tests, die das vom noch zu implementierenden [...]

<angular/> bringt JavaScript-Logik und das dazugehörige HTML Dokument deutlich näher zueinander als bestehende Frameworks wie beispielsweise jQuery. Es entfernt gleich mehrere Ebenen an Abstraktion, die ein Stück JavaScript-Code und das DOM-Element, auf welchem der Code operieren möchte, voneinander trennen.

Testgetriebene Entwicklung (test driven development) ist eine Arbeitsmethodik, die Softwareentwickler dabei unterstützt, wichtige Qualitätsprinzipien bei der Erstellung von Code zu erreichen. Dieses Tutorial beschreibt Schritt für Schritt die Motivation, einem testgetriebenen Ansatz zu folgen, und stellt die notwendigen Werkzeuge und Techniken vor.

Phil Ford war Immobilienmakler und hat aus einem Hobby heraus angefangen, diese Sauce zu entwickeln.

Die Konditorei “Der Kuchenladen” ist sogar die nervige Parkplatzsuche auf der Kantstraße wert. Handgemachte Torten, Kuchen und Tarts, die klasse aussehen und einfach gut schmecken.


…provides a RESTful JSON webservice API to access information in your Subversion repository,
…provides tools to cache your Subversion repository in order to make it searchable through the webservice in a fast and simple manner,
…is a library of PHP classes [...]

Meine alte Homepage (2000-2005) ist wiederauferstanden und unter erreichbar.

Ein Kollege von mir, Max Winde, hat in den vergangenen Wochen ein Tool geschrieben welches sich innerhalb kürzester Zeit zu einem Renner in den verschiedensten Abteilungen entwickelt hat, und schon jetzt aus dem Arbeitsalltag kaum noch wegzudenken ist.

Dieses Dokument beschreibt Werkzeuge und Prozesse, um Datenbankänderungen innerhalb von großen Softwareprojekten einfach, fehlerfrei und nachvollziehbar durchzuführen und zu managen.

Der My-Hammer Auftragsradar, der unsere Auftragnehmer auf Wunsch regelmässig per E-Mail über neu eingestellte Auktionen anhand einstellbarer Filterkriterien informiert, baut bei jedem Durchlauf eine eigene Suchtabelle auf. Diese wird gefüllt mit einer Untermenge der Daten unserer Haupt-Auktionstabelle, nämlich nur den derzeit laufenden Auktionen.

Die Verwendung von INSERT INTO … SELECT ist hier naheliegend, zum Beispiel so:

INSERT [...]

Vor mittlerweile auch schon wieder einer halben Ewigkeit hatte ich mal eine kurze Artikelserie zum Thema Serverlast-Problemlösungen bei MyHammer online, die ich nun wieder ausgegraben habe.

Imprint / Impressum / Datenschutz / Haftung