Latest Blogposts

  • One day project: Bookmarks

    Bookmarks is a very simple iOS application to save bookmarks. The basic idea is to archive the websites and make them searchable. It should be able to answer questions such as “what was the website, where I read something about XYZ”.

    continue reading
  • Five years

    August 2013, I was still a student, TBO INTERACTIVE was located in the Auguststraße and the team was only six bright minds. Today it’s the Torstraße and 16 minds. Friday was my last day at work and I want to say thanks for five terrific years.

    continue reading
  • Continuous Integration with Jenkins

    In september 2016 a blogpost on jenkins.io announced Blue Ocean and with it declarative pipelines and with that the build and deployment process can be managed from within the repository. In the meantim the plugins are well hung and additional plugins have been developed.

    continue reading
  • Swift Struct vs. Class Performance

    In the game that Michael and I are developing for our project derbe.cool we frequently use immutable structs that are copied and mutated multiple times for every user activity. That’s when I started to wonder what the performance difference is between copying a struct vs. a class.

    continue reading
  • Flag of Germany TBODeveloperOverlay - Dinge, die jeder braucht

    Mit wachsender Komplexität eines jeden Softwareprojektes wächst auch die Komplexität beim Debuggen von Fehlern und Verstehen von Supportanfragen. Dabei gibt es einige Aspekte, die es einfacher machen die Situation zu verstehen. Ein gut gepflegtes Log kann sehr hilfreich sein. Genauso ist es wichtig zu verstehen auf welcher Version und mit welchen Parametern das Problem auftritt.

    continue reading
  • Swift Bitmasks - Things nobody needs

    Whoever wrote an iOS App in Objective-C knows bitmasks very well. Even just configuring a simple UIButton one is confronted with a UIControlState and things like UIControlStateHighlighted|UIControlStateDisabled. Before autolayout one had to fight with UIViewAutoresizing. But bitmasks aren’t a common concept in Swift and creating them isn’t trivial.

    continue reading
  • Flag of Germany Plan B - Was ich für mein Backup nutze

    Geht eine Nerdin zum Prophylaxe. Nach dem üblichen säbel, feil und putz kommt die unausweichliche Frage: Nutzen sie regelmäßig Zahnseide? Je nach Grad der persönlichen Zahnpflege ist das Eigentlich schon! mehr oder weniger ehrlich. Bei der Zahnseide verhält es sich wie beim Backup. Jeder weiß, dass es wichtig ist. Jeder nimmt sich vor es regelmäßig zu machen. Aber irgendwie macht man es dann doch nicht, oder nicht so oft wie es gut wäre. Als gute Zahnärztin wird natürlich nach jedem Essen Sortimennt der verschiedenen Zahnseiden herausgeholt und die passende gründlich ausgesucht. Genauso ist der Backup-Plan einer guten Nerdin selbstverständlich vielschichtig.

    continue reading
  • Flag of Germany Brew Bundler - Das Gemfile für dein Homebrew Cask

    Reboot tut gut. So zumindest der alte Spruch der Windows Benutzer. Auf dem Mac wird jeder passionierte Steve Jünger behaupten ist das anders, aber ein Clean install ist nach ein paar Jahren doch ganz erholsam. Man muss nicht mühsam ausmisten, sondern installiert sich nach und nach die Software die man braucht und kümmert sich mit akribischer Sorgfalt um die Konfiguration und das Setup.

    continue reading
  • Flag of Germany BRORM - SQLite Object Relational Mapping

    In vielen Projekten verwenden wir FMDB als SQLite Wrapper. FMDB ist sehr leichtgewichtig und trägt kaum auf. Eigentlich ist es nur ein Objective-C wrapper auf das C-Interface. Der Vorteil: Man kann alles machen, was man mit SQLite so machen will. Der Nachteil: Was auch immer man machen will, man muss SQLite Queries schreiben. An dieser Stelle setzt BROrm an. BROrm ist ein Object-Relational-Mapping, dass die einfachen Queries die man im täglichen Leben so braucht in schöne kleine Objekte mappt und dabei ein paar performance Optimierungen durchführt (lazysave, transactional save, …). zum Projekt auf GitHub

    continue reading