Swift Class Diagrams Remastered

A picture is worth a thousand words. An architecture drawing – countless explanations. Sometimes, visualising concepts and implementations can bring much better understanding of the bigger picture. We can learn much about the design of a system, the dependencies between the components, how they communicate between them, by looking at different types of diagrams. Such […]

Dependency Injection in iOS using Girders for Swift

Introduction Dependency Injection is a technique in software development where the dependencies of an object are set from the outside. There are many benefits of using this technique, such as loose coupling between the objects, which enables us to easily replace an implementation in the future. With dependency injection, we can also make unit testing […]

Hand tracking with Turi Create and Core ML

Introduction The task of realtime hand tracking on a mobile device is both very interesting and challenging. The hand is one of the more difficult parts of the body to detect and track. The reason for this is that the hands can look very different, whether that’s with the form (although this holds for other […]

Building voice responsive AR apps

Introduction Augmented Reality and Conversational Interfaces are two of the hottest technologies at the moment. They both bring a broad range of opportunities to make cool and innovative apps. The question is, what happens if we combine these two emerging technologies? The answer – we get one really smart pony.

Driving cars with ARKit

Introduction With augmented reality, you can drive any car you want. In this post, we will drive Audi Q7, using horizontal plane detection. This will give more natural effect of driving the car on the floor, instead of floating it around. For simplicity, the car will have only one speed, one meter for one second.

Setting up CI with Travis-CI and Fastlane on iOS project

Introduction Continuous integration (CI) is a great software engineering practice. It requires developers to commit frequently and after each commit. With this, tests are run automatically, coverage is computed, static code analysis are performed etc, to make sure that every commit doesn’t break the building process and doesn’t introduce side effects. If a commit breaks […]