JSCraftCamp 2019
How I experienced JSCraftCamp and my key take-a-aways.

For $24 Podio gives you the names, faces, and contact details of their premium users
Podio discloses extensive user information and claims its users have agreed to it.

It does not run on my machine
In this talk I will take you through the challenge of testing a cloud-native application. I will cover the challenges when developing solutions on top of serverless components which you cannot run on your own machine and how I designed a BDD driven approach to run the integration tests.

How I package TypeScript lambdas for AWS
The latest (and greatest?) way I could come up to publish AWS Lambdas written in TypeScript.

Towards class-less JavaScript
I am getting more and more convinced that classes in JavaScript or TypeScript are an anti-pattern. At least in the way I use them.

About: Call for Proposals
At this year's Global Diversity CFP Day I gave a lightning talk about Call for Proposals.

Have a local folder to put your crap in which won't get accidentally committed
Do you always have temp / scratch files lying around in your Git repo and sometimes accidentally commit them (like I do)? Here is a simple fix!


Backend languages panel at code.talks Hamburg 2018
Extracts of a panel on backend languages at code.talks Hamburg 2018.

Prototyping products for the Internet of Things using JavaScript
This is a recording of my 2018 talk on prototyping products for the Internet of Things using JavaScript

Call for your first conference proposal
My segment on why YOU should propose a talk to a conference NOW! from J On The Beach 2018

JOTB2018 Interview
I was interviewed after my talk about Prototyping products for the Internet of Things using JavaScript

First Principles
How can we share the gut feeling we use when writing software?

ConferenceBuddy at SoCraTes 2018
I was a Conference Buddy at SoCraTes 2018—but nobody needed one.

SoCraTes 2018
After a year of absence, I went back to Soltau for SoCraTes 2018 and discovered that the best conference ever got even better—thanks to fantastic diversity efforts.

Prototyping IoT products with the IoT Tiles Toolkit cards
When building connected products, it will never be only the hardware which makes for a successful product. The IoT Tiles Toolkit cards are a fantastic support tool for generating ideas and even possible solutions.

Moving to Trondheim? Hire expat Mid-Norway!
About my experience relocating to Trondheim, Norway.

Versioning JavaScript libraries with semantic-release
In this post I will explain how you can automate releasing of your JavaScript libraries to npm.

Code Craft
A critique of the book Code Craft by Pete Goodliffe

Value Types
Value Types are are used to enable runtime validation of parameters. This provides a simple and expressive way to ensure their validity and convey their semantic meaning in code at the same time while making this transparent for the caller.

J On The Beach 2018
End of May I had the opportunity to fly to Malaga in Spain and speak at J on the Beach.

NDC { Oslo } 2018
This week I flew to one of the biggest developer conference in Scandinavia: NDC { Oslo }.

JavaScript Dependency Management with Greenkeeper on AWS CodeBuild
You can now run Greenkeeper with lockfile support on AWS CodeBuild.

Become a Certified Software Craftsperson
Follow this one weird trick to become a Certified Software Crafter

European Testing Conference 2018
A retrospective on what I learned during the European Testing Conference 2018 in Amsterdam

Clean Architecture
Despite its excess Uncle Bob Grandeur and idiotic and pointless cartoons I would recommend this book to experienced architects and software developers since it reinforces and clarifies proven concepts, which I am using on a daily basis.

Introduction to TDD in JavaScript
Introducing Beginners to Test-Driven-Development in JavaScript


Your agile practice is a Dementor
Can we have space for people whose energy is drained by all the interaction that is promoted in all agile methods?

Humans are Liars
As Scott Adams put it very well: Humans are liars. How do we create an environment where they don't?

❤️.of(code) // 013
Week 45 of 2017 in review

❤️.of(code) // 012
Week 44 of 2017 in review

Build a professional network
My recommendations on how to build a professional network if you are early in your career.

expect.toBeWithin(number, number)
Use .toBeWithin() when you want to check that a number is within a range.

❤️.of(code) // 011
Week 43 of 2017 in review

Start with React
Some resources to get you started with React.

❤️.of(code) // 010
Week 42 of 2017 in review

❤️.of(code) // 009
Week 41 of 2017 in review

❤️.of(code) // 008
Week 40 of 2017 in review

❤️.of(code) // 007
Week 39 of 2017 in review

❤️.of(code) // 006
Week 39 of 2017 in review

❤️.of(code) // 005
Week 38 of 2017 in review

❤️.of(code) // 004
Week 36 of 2017 in review

❤️.of(code) // 003
Week 35 of 2017 in review

❤️.of(code) // 002
Week 34 of 2017 in review

❤️.of(code) // 001
Week 33 of 2017 in review

Juniors in remote teams?
Having juniors in a remote team is a challenge, but you still can make it work.

Why I love BarCamps
I was interviewed during the DeveloperCamp 2017 about BarCamps.

Setting up a product management process
In this post I will explain the way I design the process that supports one key operation in every startup: improving the technology which delivers value to customers—or should, if you are working towards signing your first customer.

Define a communication policy so Slack doesn't kill you
Not matter which tool you use to communicate, one of the most important actions to tackle communication chaos is defining a communication policy.

MVPs in Production
In this post series I'll reflect on the technical principles that I've employed in the last 5 years working as a CTO to achieve something that would have been seen as futile and insane a decade ago, but is the norm today: running software in production that is neither complete nor well-designed and needs to evolve every day.

Office design by an office hater
I hate offices. But how many interior designers have I heard of, that are coders, too? Let me take you through my dream office!

Bring your inexperience to a conference
As a newbie you have something to contribute to a conference as well!

The full stack developer trap
I realized that there is a full-stack developer trap: your work is evaluated based on your best skill, which unfulfillable expectations.

Lean Mindset
Lean Mindset by Mary and Tom Poppendieck is a concise handbook for building then next generation of software company; which must be product company.

TopConf Linz 2017 Notes
These are the notes I took for my company Slack during TopConf Linz 2017.

codefreeze brings the magic of SoCraTes to Lapland
About codefreeze, the software craft and testing conference in the arctic circle


Why I threw up in my mouth when reading Accelerate (XLR8) by John Kotter
Asking your employees to think different for a better goal and simultaneously forcing them to follow the old, left-side methods, which the right-side is trying to get rid of, is nothing but insanity.

I make €101,750 in non-monetary compensation a year
Salary is probably one of the most dreadful topics, especially because it is a hygiene factor: earning not enough money will affect your satisfaction greatly, but earning more than you need won't improve your performance equally strong.

Turn Your Ship Around!
The workbook to implement intent-based leadership in your organization is as concrete as it gets for books that promise changing your organization for the better.

The Seven-Day Weekend
Ricardo Semler debunks an illusion: the idea that you can plan for the future.

Agile as a starter for organizational transformation?
Impressions from the Agile Cologne XXL 2016

An Everyone Culture
Book review of An Everyone Culture by Robert Kegan and Lisa Laskow Lahey

Code of Conducts
I recently proposed to establish a Code of Conduct for the BarCamp RheinMain. Here is my rationale why.

Intro to the Frankfurt Tech scene
This post tries to provide an entry point for newcomers to Frankfurt

Success through humanness: The autobiography by dm founder Götz W. Werner
Book review of Womit ich nie gerechnet habe by Götz W. Werner. I recommend this book to everyone who is facing problems like high turnover rates, inefficiency due to bureaucracy and incompetence or is, like me, interested in alternative operating-systems for organizations.

The Hard Things About Hard Things
Book review of The Hard Things About Hard Things by Ben Horowitz

Unboss: A compendium for future organizations
Book review of Unboss by Lars Kolind and Jacob Bøtter

Rotate screen in Linux
Sometimes it can be useful to rotate a screen, e.g. to have one display in portrait. This command will rotate your screen:

Autoload environment variables
When developing stateless microservices it can be tedious to set up the correct environment variables. You can teach your bash/zsh to load them on a per directory basis.

Daring Greatly: Talking about shame is inevitable if we want to change
Book review of Daring Greatly by Brené Brown

TopConf Linz 2016
Impressions from my first tech conference as a speaker.

Celebrate successes
This is not so easy as it sounds: because we are pushing out updates to our products every day, a natural date to celebrate does no longer manifest itself. As a manager we have to take care of this, too.

Quality together-time
The second most important challenge is ensure that the few occasions you will spend face-to-face with your colleagues is quality time. Here is how to achieve this.

Fix the missing watercooler
The most important challenge when working in distributed teams is the missing watercooler. Here is how to fix it.

The three most important challenges
This post series is a summary of my talk about the challenges working in remote teams and how I dealt with them.

(developer) happiness questionnaire
I use the (developer) happiness questionnaire to collect honest feedback about the happiness of my colleagues

Six months into my job as the CTO at Fintura I quit
Half a year full of lessons.

On Motivation of Software Engineers
Tobias Zander has written a blog post about Motivation of software engineers. These are my motivations.

Fintech — Appsolute Bankfurt
I've written an article about the fintech scene in Frankfurt which you can find at

Joy, Inc.
Book review of Joy, Inc. by Richard Sheridan


There is no working time flexibility during vacation
If not for yourself, you owe it to your peers to be a good example by not executing your working time flexibility during your vacation.

I want to tear down the developer firewall
I create developer firewalls for a living. And it is so wrong.

Your team needs a vision and common values to succeed
Having a vision and a set of values will empower your team and remove a lot of potential for misunderstandings from your day to day interaction within your team. This helps them to focus on their work instead of arguing about it and build momentum because it removes uncertainties about what should be done.

The magic of Socrates Conference
Get rich by visiting this conference: rich in ideas, options and connections

Learn about asynchronous communication: why phone is bad and chat is good
This post tries to explain the rationale behind one of my recent tweets: Phone is bad, Chat is good.

Improving the Startup Weekend Experience
In my opinion the default shedule for the weekend is not educating the teams enough to focus on what matters in those 54 hours: validate their assumptions about the business idea and prepare a presentation. For this year I've created a new shedule which includes more concrete deliverables and divides the weekend into distinct slots.

How to write a job post for development positions [Updated]
An important role in your search for developers is your job page. Don't miss the chance to impress a curious developer because every candidate will browse your website to look up your job postings.

Build this, OpenData Hackers and Datanauts [Updated]
OpenData projects must be useful not just interesting, so here is my idea

One month into my new job as the CTO at Fintura
I joined a #fintech startup which aims to change the way SME finance their investments and it also changed the way I look at managers

#RheinMainRocks sticker
You can now stick #RheinMainRocks where you like!

Office hours discontinued–feel free to ask your question anyway
I started mentoring and I will not offer any more office hours on a fixed schedule.

#futureofwork in the wild
On April 2nd 2015 I'll be giving a lightning talk to show some examples of organizations that have already arrived at the future of work.

Speed up your meetings with pre-written meeting minutes
How to make your meetings fun again, productive and produce a well-made protocol afterwards.

Backup your business: Advice for non-technical co-founders
How to make sure you never lose the source code of your business.

Leaving dotHIV and looking for a new team
From April 1st 2015 I'm available to join a new team where I can craft software, my leadership skills to the organization and my wit to the daily stand-up.

WEMO♥F turns 10
On the next Monday, February 23rd 2015, I'll be at a run-down place that used to be a super market and hosting the 10th Webmontag Offenbach.

How to find a CTO
A fews weeks ago I announced that I am holding free bi-monthly CTO office hours and the first one I did revolved around the question “How to find a CTO?”. In this post I aim to summarize the advice I gave.

Encrypt Login Links
Encrypt login links with the users public PGP key to add a simple but effective layer of security with only a small usability impact.

Office hours
I'll offer free bimonthly office hours starting January 2015.


Give your dots to dotHIV
December 1st is World AIDS Day and we have prepared something for your homepage which will support our cause in an unobtrusive and witty way: turn the fullstops of your page into pink dots.

Productivity Tips for a Startup Weekend
So, you are attending a startup weekend? You will be crammed in a room with strangers to collaborate on an idea-maybe even yours? I have some advice for you to improve your output during this 54 hours.


Symfony2 with Assetic: Automatically update assets_version on deploy
If you're using assetic to manage your assets in your Symfony2 project you have probably already wondered if there is a way to update the assets_version parameter automatically with every deploy. Responsive Design is Not About Screen Sizes Any More
Sehr guter Artikel darüber, das die Entwicklung einer guten mobilen Website nicht nur mit CSS-Media-Queries erreicht werden kann.

Tincr – Edit and save files from Chrome Developer tools. Live reload for Chrome.
Tincr ist eine sehr nützliche Extension für Chrome, die Änderungen an lokalen Dateien überwacht und die Änderungen im Browser anwenden. Änderungen an CSS-Dateien können dabei sogar ohne Neu-Laden der Seiten angewendet werden.

Just edit it!
We need tools not protocols for editing content on the web. In my first article I barely scratched the surface of what is missing to encourage collaboration on public available data. In this article I’d like to share my view of what is missing.

I cannot edit that
When dealing with structured data there are no tools for collaboration

Usergroups RheinMain

PHPUGFFM als animiertes GIF


Templates für Jenkins in PHP Projekten
Ähnlich wie die Ant Build Commons von qafoo, liefert Sebastian Bergmann unter Vorlagen für Integration von PHP-Projekten in Jenkins.

Ant Build Commons von qafoo
Die qafoo GmbH aus Gelsenkirchen, ein Zusammenschluss von vier deutschen PHP-Experten liefert mit den Ant Build Commons einen Standard-Satz an Build-Task für Ant, die alle wichtigen Aufgaben zum Prüfen, Testen und Veröffentlichen in PHP-basierten Projekten abdecken.

Leap second: Stromverbrauch bei Hetzner steigt um ein Megawatt
So schreibt es Hetzner gerade in einer E-Mail an seine Kunden.

Darstellung von git diff verbessern
Hier sind ein paar Einstellungen die die Darstellung der Ausgabe von git diff und weiteren git-Kommandos lesbarer machen:

Startup Weekend RheinMain 2012

Desktop-Hintergrund Mai 2012
Auch im Mai wird deinen Desktop ein Foto aus Holland zieren, wenn du dieses Wallpaper verwendest: einen sehr schönen Sonnenuntergang, aufgenommen in Woerden.

Desktop-Hintergrund April 2012
Der April fängt schon deutlich schöner an, als der März, deswegen gibt es diesen Monat ein Foto von saftigen Wiesen mit einem paar Schafe, dass ich in Holland aufgenommen habe.

Desktop-Hintergrund März 2012
Passend zum grauen ersten März gibt es für diesen Monat ein Foto, dass ich in Hamburg an der Außen-Alster aufgenommen habe.

Softwerkskammer RheinMain

The Great Web Framework Shootout: Bottle vs. Silex
Frameworks zu vergleichen ist immer eine schlechte Idee, zu viele Faktoren spielen bei der Wahl eines Frameworks eine Rolle, als dass man sich rein auf quantitative Aussagen wie Anfragen pro Sekunde, Zeilen Quellcode oder die geschlossenen Bugs pro Monat verlassen darf.

Desktop-Hintergrund Februar 2012
Jetzt wird es Zeit den alten Desktop-Hintegrund gegen diesen neuen auszutauschen — passend zum Wetter habe ich ein Foto einer Schneeverwehung auf dem Feldberg ausgewählt, das ich im Februar 2009 aufgenommen habe, und das ebenfalls bei so strahlend schönem Wetter wie heute.

Intents auf Android testen
Mit der adb shell ist es einfach möglich das Handling von Intents zu testen … sehr praktisch, wenn man z.B. in der App normalerweise einen QR-Code-Scanner verwendet, um eine URL zu erhalten.

Relationen in Linked Data
An englisch translation of this article can be found here.

Relations in Linked Data
This is the translation of this german blog entry.

Auslastung Januar 2012 Update♥) wünscht einen entspannten Januar
Meinen Freunden, Kunden und Kollegen wünsche ich viel Erfolg im Jahr 2012!


WordPress-Quellcode als Store-Dekoration

Logrotate-Config für VHosts automatisch erstellen
Mit diesem Script erzeuge ich für alle Virtuellen-Hosts eines Apache2-Webservers eine Konfiguration für Logrotate.

Entwickler und Projektmanager
Diese zwei Kollegen stehen immer auf meinem Schreibtisch bei meinem aktuellen Arbeitgeber. Vor ein paar Monaten standen sie bei Scholz&Volkmer und als ich mit einem Kollegen darüber sprach, ist ein interessantes Bildnis entstanden.

Die Browserkompatibilitätsklausel
Wenn man in der glücklichen Situation ist, ein Angebot zu schreiben, ist dessen Basis in der Regel auch eine möglichst genaue Beschreibung über den Umfang des Auftrags, im Allgemeinen Pflichtenheft genannt.

Auszeichnung zum Top Coder erhalten
Beim Top Coder Gewinnspiel der Mayflower GmbH habe ich mit meiner Einreichung den ersten Preis gewonnen: ein iPad 2.

Default-Werte für Methoden-Argumente sollten null sein
Oft genug sieht man Methodendefinitionen mit Standardwerten für Argumente, da viele Programmiersprachen das Überladen von Methoden, wie z.B. in Java, nicht unterstützen.

Hübsche Dummy-Bilder erzeugen
Der Dummy-Image-Generator erzeugt auf Wunsch die passenden Bilder. Wenn man aber auch mal lokal ein paar Dateien braucht, um z.B. einen Uploader oder eine Galerie zu testen, kann man sich mit ein paar Zeilen Python schnell ein paar Testbilder erzeugen:

PyDev und PIL
PyDev meckert standardmäßig über ein

MacBook Funktionstasten unter Linux
Diese sind, zumindest unter Arch Linux, standardmäßig nur mittels FN+F zum auslösen zu bewegen.

Firefox 4 und X.509-Zertifikate
Im neuesten Firefox funktionieren einige Zertifikate nicht mehr, mit denen z.B. Zugänge zu Content-Management-Systemen oder Banking-Webseiten gesichert werden.

Schneller Syntax-Check für modifizierte PHP-Dateien
Ja, manchmal muss man halt via SSH auf Maschinen rumhacken, auf denen es kein vernünftiges Error-Reporting gibt. Und wenn dann die Seite weiß bleibt, hilft dieses Kommando, um heraus zur finden, welche der Dateien man zerschossen hat:


Eclipse: -clean -refresh
Manchmal, also eigentlich regelmäßig, hängt Eclipse.

Unicode Cheat Sheet

Meine .subversion/config
[helpers] diff-cmd = colordiff diff-args = --ignore-all-space --ignore-blank-lines [miscellany] enable-auto-props = yes [auto-props] = svn:keywords=Id Rev [auth] Verhindert die Verwendung von Keychain / Keyring password-stores =

Bash: Bestimmte Dateien oder Verzeichnisse beim Auto-Vervollständigen ignorieren
Die Bash hat eine tolle Funktion: Mittels der Tab-Taste erhält man eine Liste mit Dateien und Verzeichnissem im aktuell eingegeben Pfad-Abschnitt.

Bash: Absoluten Pfad des aktuellen Scripts auslesen
Oft ruft man Bash-Scripte ja mit relativen Pfaden auf:

JAXP DOM: Whitespace aus XML entfernen
In Java 1.6 gibt es einen Bug im Dom-XML-Parser, der Whitespaces trotz aktiviertem Hinweis nicht entfernt.

Eclipse: Standard-Wert für @author in JavaDoc ändern
Der Standard-Werte für den @author-Tag in JavaDoc ist der Username des Accounts, der Eclipse gestartet hat.

PECL crack unter Ubuntu installieren
Auch die PECL Erweiterung crack muss erst überredet werden, sich auf Ubuntu zur Verfügung zu stellen, da beim Installieren folgender Fehler auftritt:

PECL OAuth 0.99.9 unter Gentoo installieren
Da einige der Maschinen, mit denen ich arbeite noch (aktuelle) Gentoo-System sind, gibt es immer wieder Probleme, die Gentoo-spezifisch sind, und damit oft auch nervig.

Passwörter für SSH-Keys in der Konsole merken
Um sich die wiederkehrende Passwort-Abfragen für SSH-Keys auf der Konsole zu sparen, führt man folgende Kommandos aus:

Timezone in Ubuntu setzen
Zum Einstellen der Zeitzone in Ubuntu führt man dieses Kommando aus und folgt den Anweisungen.

Alle ISO-Dateien in einem Verzeichnis nach UTF-8 konvertieren
Dieses Bash-Script konvertiert alle Nicht-UTF-8-Dateien in einem Verzeichnis und in allen Unterverzeichnissen nach UTF-8.

Niedrigen Speicherplatz mit Bash überprüfen und per Mail warnen
Dieses kleine Bash-Script, versendet als Cronjob eingetragen, E-Mails an den root-User, wenn der Plattenplatz auf allen gemounteten /dev/hd*-Platten weniger als 1 GB beträgt.

connect to Connection timed out
Oct 21 10:08:07 jayla postfix/error[24545]: B13623382E: to=<>, relay=none, delay=36297, delays=36267/30/0/0.01, dsn=4.4.1, status=deferred (delivery temporarily suspended: connect to[]:25: Connection timed out) Wie könnte es auch anders sein?!

Zugriffe nach Host sortiert aus Apache’s Access Log auslesen
Dieses kleine Bash-Kommando listet die Zugriffe in einer bestimmten Zeit (20/Oct/2008:21 = am 20. Oktober 2008 zwischen 21:00:00 und 21:56:59) und sortiert diese nach Häufigkeit.

duplicity Fehler “IOError: GnuPG exited non-zero, with code 2″ unter Ubuntu beheben
Zum Sichern von Daten auf FTP-Server bietet sich duplicity. Es bietet, ähnlich wie rdiff-backup, die Möglichkeit, volle und inkrementelle Backups zu erzeugen, aber im Gegensatz zu rdiff-Backup eben auf FTP-Server und noch dazu verschlüsselt.