Archive

2021

Migrating to AWS SDK v3 for JavaScript

Notes on migrating Bifravst to the completely rewritten AWS SDK for JavaScript/TypeScript

2020

README for APC students

I am mentoring students and I gave them a README for my weekly office hour.

Advent of Code 2020

I am participating in AOC again

CodeDoor and Asia Pacific College

I am mentoring 4 teams from the Philippines

Cloud connectivity and protocols for the Internet of Things

This is a webinar for everyone who wants to get an introduction to protocols to consider when developing a cellular IoT product.

COVID-19 guide for Aid Workers built with GatsbyJS from a Google Drive folder

resources.distributeaid.org provides a browser-friendly UI for a Google Drive folder.

Local Schedule: Create a shareable schedule with times in your local timezone

Great for remote conferences!

Stay connected

It's now even more important to keep in touch in these times of crisis and uncertainties.

European Testing Conference 2020

What happens at European Testing Conference must not stay at European Testing Conference.

2019

I wore a T-Shirt demanding Inclusivity at a Tech Conference and this is what happened

A subtle way to hack your community.

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 2019'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!

2018

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

2017

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

2016

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 hallofrankfurt.de.

Joy, Inc.

Book review of Joy, Inc. by Richard Sheridan

2015

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.

2014

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.

2013

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.

speckyboy.com: 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

Unter usergroups.rheinmainrocks.de habe ich ein Projekt gestartet, dessen Ziel es ist, einen umfangreichen Überblick über das Angebot der Technologie-Usergroups im Rhein-Main-Gebiet zu geben. Der konkrete Mehrwert besteht darin, dass die Daten zu den Usergroups von jedem selber gepflegt werden können. Es wird lediglich ein GitHub-Account benötigt.

PHPUGFFM als animiertes GIF

2012

Templates für Jenkins in PHP Projekten

Ähnlich wie die Ant Build Commons von qafoo, liefert Sebastian Bergmann unter jenkins-php.org 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

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.

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

Eine Einführung in JSON-LD

Relations in Linked Data

An introduction to JSON-LD

Auslastung Januar 2012 Update

2011

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:

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:

2010

Eclipse: -clean -refresh

Manchmal, also eigentlich regelmäßig, hängt Eclipse.

Unicode Cheat Sheet

Meine .subversion/config

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 dead.com: 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.