Archive
2024
Software Quality made this talk happen: push-to-deploy as the means to deal with uncertaintyThis talk is an encouragement for developers to trust their skills and tools, but also invest in mastering them.
Serverless Development on AWSGreat book for devs & managers: serverless intro & potential!
How to develop a cellular IoT projectA small lecture I gave on how to approach designing the software architecture for a cellular IoT project.
2023
How i use @internetofshit as a reminder to build safe and usable IoT productsan ad-hoc tech talk about an inspirational Twitter account
Introducing teamstatus.spaceUse teamstatus.space to collect project status updates asynchronously and distributed to speed up your sync meetings
Exploring better ways to write testsMy approach to testing embedded firmware using real hardware.
On Code of ConductsYour event’s Code of Conduct extends beyond the event and it’s digital spaces
BoosterConf 2023A review of BoosterConf 2023 in Bergen
I've joined CreaTech Motives Afrika's Advisory BoardI support the leadership of CreaTech Motives Afrika as a technical advisor as part of their advisory board.
I've left DistributeAidAfter three years volunteering for DistributeAid I felt it no longer was a good way to spend my time
2022
Øredev 2022A look back at this years Øredev in Malmö; one of the best for-profit tech conferences I have attended so far
Clone all repositories of a GitHub teamThis is a small snipped that clones all repositories of a GitHub team
I am leaving Twitter for MastodonElon Musk is now in full control of a powerful network, that I am part of; but that is not the biggest issue.
SoCraTes 2022The unconference, re-invented for inclusiveness.
Type-safe stack outputs in AWS CDKIn order to ensure that the outputs of your CloudFormation Stacks are typed properly, you can use this technique.
Guidelines to ensure a safe experienceThis document provides a code of conduct for these account Takeovers in order to enable the employee, the social media team, and the followers to have meaningful and positive interactions.
REST in Practice - a reading guideWhile the book was published in 2010 and some of its contents have not aged well, it still provides a lot of things to learn. In this post I will give my recommendations on which sections are a must read, and which ones can be skipped in case you are-like me-not very fond of Java and XML.
Firmware test automation using real embedded devicesMy approach to testing embedded firmware using real hardware.
Nordic Testing Days 2022I had the opportunity to attend the Nordic Testing Days in Tallinn for three days and I had a blast.
The 20 percent trick to continuously keep learningIn this video I am explaining the one thing that I have been doing basically my entire career to keep up to date with the IT industry.
Interview with MergifyI was interviewed by Mergify about my use of their service.
Why I contribute to DistributeAidIn this post I introduce myself for a DistributeAid contributor spotlight and talk about the work I do for the non-profit.
Serverless Architecture for IoT on AWSAn NTNU guest lecture on serverless and IoT and why they are a great match.
5 whysThe 5 whys method is so powerful because of its simplicity ... but be careful not to come across as annoying when applying it. Showing persistence in uncovering fundamental truths about a thing takes practice, but always delivers.
Push to deployThe way to move quickly is to focus on adding value, not packaging it.
PrivilegeA reflection on my principles is not possible without acknowledging my privileges.
42 first principlesIn 2022 I am turning 42 and therefore I am writing down my 42 first principles.
2021
I am coder; help me learn to collaborate!You may prioritize improving your technical skills, but why is improving your communication skills just as important?
The BDD Books: FormulationAn indepth guide for software teams to engage all stakeholders in creating up-to-date documentation that drives tests
TestCraftCamp 2021 Virtual EditionVirtual conferences do not get any better than this one.
Handling NPM v7's unnecessary inclusion of peer dependencies with AWS SDK v3When using NPM v7 to package lambdas using AWS SKD v3 it leads to unnecessary large deployment pacakges.
Migrating to AWS SDK v3 for JavaScriptNotes on migrating Bifravst to the completely rewritten AWS SDK for JavaScript/TypeScript
2020
README for APC studentsI am mentoring students and I gave them a README for my weekly office hour.
Advent of Code 2020I am participating in AOC again
CodeDoor and Asia Pacific CollegeI am mentoring 4 teams from the Philippines
Cloud connectivity and protocols for the Internet of ThingsThis 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 folderresources.distributeaid.org provides a browser-friendly UI for a Google Drive folder.
Local Schedule: Create a shareable schedule with times in your local timezoneGreat for remote conferences!
Stay connectedIt's now even more important to keep in touch in these times of crisis and uncertainties.
European Testing Conference 2020What 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 happenedA subtle way to hack your community.
JSCraftCamp 2019How I experienced JSCraftCamp and my key take-a-aways.
For $24 Podio gives you the names, faces, and contact details of their premium usersPodio discloses extensive user information and claims its users have agreed to it.
It does not run on my machineIn 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 AWSThe latest (and greatest?) way I could come up to publish AWS Lambdas written in TypeScript.
Towards class-less JavaScriptI 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 ProposalsAt 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 committedDo 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 2018Extracts of a panel on backend languages at code.talks Hamburg 2018.
Prototyping products for the Internet of Things using JavaScriptThis is a recording of my 2018 talk on prototyping products for the Internet of Things using JavaScript
Call for your first conference proposalMy segment on why YOU should propose a talk to a conference NOW! from J On The Beach 2018
JOTB2018 InterviewI was interviewed after my talk about Prototyping products for the Internet of Things using JavaScript
First PrinciplesHow can we share the gut feeling we use when writing software?
ConferenceBuddy at SoCraTes 2018I was a Conference Buddy at SoCraTes 2018—but nobody needed one.
SoCraTes 2018After 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 cardsWhen 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-releaseIn this post I will explain how you can automate releasing of your JavaScript libraries to npm.
Code CraftA critique of the book Code Craft by Pete Goodliffe
Value TypesValue 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 2018End of May I had the opportunity to fly to Malaga in Spain and speak at J on the Beach.
NDC { Oslo } 2018This week I flew to one of the biggest developer conference in Scandinavia: NDC { Oslo }.
JavaScript Dependency Management with Greenkeeper on AWS CodeBuildYou can now run Greenkeeper with lockfile support on AWS CodeBuild.
Become a Certified Software CraftspersonFollow this one weird trick to become a Certified Software Crafter
European Testing Conference 2018A retrospective on what I learned during the European Testing Conference 2018 in Amsterdam
Clean ArchitectureDespite 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 JavaScriptIntroducing Beginners to Test-Driven-Development in JavaScript
2017
Your agile practice is a DementorCan we have space for people whose energy is drained by all the interaction that is promoted in all agile methods?
Humans are LiarsAs Scott Adams put it very well: Humans are liars. How do we create an environment where they don't?
❤️.of(code) // 013Week 45 of 2017 in review
❤️.of(code) // 012Week 44 of 2017 in review
Build a professional networkMy 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) // 011Week 43 of 2017 in review
Start with ReactSome resources to get you started with React.
❤️.of(code) // 010Week 42 of 2017 in review
❤️.of(code) // 009Week 41 of 2017 in review
❤️.of(code) // 008Week 40 of 2017 in review
❤️.of(code) // 007Week 39 of 2017 in review
❤️.of(code) // 006Week 39 of 2017 in review
❤️.of(code) // 005Week 38 of 2017 in review
❤️.of(code) // 004Week 36 of 2017 in review
❤️.of(code) // 003Week 35 of 2017 in review
❤️.of(code) // 002Week 34 of 2017 in review
❤️.of(code) // 001Week 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 BarCampsI was interviewed during the DeveloperCamp 2017 about BarCamps.
Setting up a product management processIn 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 youNot matter which tool you use to communicate, one of the most important actions to tackle communication chaos is defining a communication policy.
MVPs in ProductionIn 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 haterI 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 conferenceAs a newbie you have something to contribute to a conference as well!
The full stack developer trapI realized that there is a full-stack developer trap: your work is evaluated based on your best skill, which unfulfillable expectations.
Lean MindsetLean 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 NotesThese are the notes I took for my company Slack during TopConf Linz 2017.
codefreeze brings the magic of SoCraTes to LaplandAbout 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 KotterAsking 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 yearSalary 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 WeekendRicardo 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 CultureBook review of An Everyone Culture by Robert Kegan and Lisa Laskow Lahey
Code of ConductsI recently proposed to establish a Code of Conduct for the BarCamp RheinMain. Here is my rationale why.
Intro to the Frankfurt Tech sceneThis post tries to provide an entry point for newcomers to Frankfurt
Success through humanness: The autobiography by dm founder Götz W. WernerBook 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 ThingsBook review of The Hard Things About Hard Things by Ben Horowitz
Unboss: A compendium for future organizationsBook review of Unboss by Lars Kolind and Jacob Bøtter
Rotate screen in LinuxSometimes it can be useful to rotate a screen, e.g. to have one display in portrait. This command will rotate your screen:
Autoload environment variablesWhen 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 changeBook review of Daring Greatly by Brené Brown
TopConf Linz 2016Impressions from my first tech conference as a speaker.
Celebrate successesThis 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-timeThe 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 watercoolerThe most important challenge when working in distributed teams is the missing watercooler. Here is how to fix it.
The three most important challengesThis post series is a summary of my talk about the challenges working in remote teams and how I dealt with them.
(developer) happiness questionnaireI 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 quitHalf a year full of lessons.
On Motivation of Software EngineersTobias Zander has written a blog post about Motivation of software engineers. These are my motivations.
Fintech — Appsolute BankfurtI'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 vacationIf 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 firewallI create developer firewalls for a living. And it is so wrong.
Your team needs a vision and common values to succeedHaving 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 ConferenceGet rich by visiting this conference: rich in ideas, options and connections
Learn about asynchronous communication: why phone is bad and chat is goodThis post tries to explain the rationale behind one of my recent tweets: Phone is bad, Chat is good.
Improving the Startup Weekend ExperienceIn 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 FinturaI 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 stickerYou can now stick #RheinMainRocks where you like!
Office hours discontinued–feel free to ask your question anywayI started mentoring and I will not offer any more office hours on a fixed schedule.
#futureofwork in the wildOn 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 minutesHow to make your meetings fun again, productive and produce a well-made protocol afterwards.
Backup your business: Advice for non-technical co-foundersHow to make sure you never lose the source code of your business.
Leaving dotHIV and looking for a new teamFrom 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 10On 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 CTOA 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 LinksEncrypt login links with the users public PGP key to add a simple but effective layer of security with only a small usability impact.
Office hoursI'll offer free bimonthly office hours starting January 2015.
2014
Give your dots to dotHIVDecember 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 WeekendSo, 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 deployIf 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 MoreSehr 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 thatWhen dealing with structured data there are no tools for collaboration
Usergroups RheinMainUnter 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 GIF2012
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 qafooDie 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 MegawattSo schreibt es Hetzner gerade in einer E-Mail an seine Kunden.
Darstellung von git diff verbessernHier sind ein paar Einstellungen die die Darstellung der Ausgabe von git diff und weiteren git-Kommandos lesbarer machen:
Startup Weekend RheinMain 2012Softwerkskammer RheinMainThe Great Web Framework Shootout: Bottle vs. SilexFrameworks 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 testenMit 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 DataEine Einführung in JSON-LD
Relations in Linked DataAn introduction to JSON-LD
Auslastung Januar 2012 Update2011
WordPress-Quellcode als Store-DekorationLogrotate-Config für VHosts automatisch erstellenMit diesem Script erzeuge ich für alle Virtuellen-Hosts eines Apache2-Webservers eine Konfiguration für Logrotate.
Entwickler und ProjektmanagerDiese 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ätsklauselWenn 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 erhaltenBeim 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 seinOft 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 erzeugenDer 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 LinuxDiese sind, zumindest unter Arch Linux, standardmäßig nur mittels FN+F zum auslösen zu bewegen.
Firefox 4 und X.509-ZertifikateIm 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-DateienJa, 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 -refreshManchmal, also eigentlich regelmäßig, hängt Eclipse.
Unicode Cheat SheetMeine .subversion/configBash: Bestimmte Dateien oder Verzeichnisse beim Auto-Vervollständigen ignorierenDie 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 auslesenOft ruft man Bash-Scripte ja mit relativen Pfaden auf:
JAXP DOM: Whitespace aus XML entfernenIn 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 ändernDer Standard-Werte für den @author-Tag in JavaDoc ist der Username des Accounts, der Eclipse gestartet hat.
PECL crack unter Ubuntu installierenAuch 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 installierenDa 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 merkenUm sich die wiederkehrende Passwort-Abfragen für SSH-Keys auf der Konsole zu sparen, führt man folgende Kommandos aus:
Timezone in Ubuntu setzenZum Einstellen der Zeitzone in Ubuntu führt man dieses Kommando aus und folgt den Anweisungen.
Alle ISO-Dateien in einem Verzeichnis nach UTF-8 konvertierenDieses 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 warnenDieses 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 outWie könnte es auch anders sein?!
Zugriffe nach Host sortiert aus Apache`s Access Log auslesenDieses 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 behebenZum 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.