Detecting Whisky brands with Core ML and IBM Watson services

Everyone who knows me, also knows that I’m a huge whisky fan. In this post, I will blend two of my favourite things – whisky and programming, into an app that will detect the type of whisky, just by taking a picture of it. This might be useful if you have a whisky club that collects different types of whisky and you are not sure if you have that particular whisky in your collection.


For this, I will be using Apple’s machine learning framework Core ML and IBM Watson services, which recently have teamed up together, in order to make machine learning a more accessible asset to iOS developers.

Continue reading “Detecting Whisky brands with Core ML and IBM Watson services”

Swift code types navigator

Software visualization gives an overview of the current state of your codebase. With it, you can onboard new team members faster, but also refresh your knowledge on an older code. There are tools that generate diagrams, graphs and other types of visualizations for most programming languages.

For Swift, we have this great tool for creating class diagrams. The same dream team that created that tool has now gathered to create a new tool, that will give a different view to your code.

Introducing Swift code types navigator, which with a simple command, creates an html file that visualizes your Swift code.

Continue reading “Swift code types navigator”

Pragmatic iOS app architecture

Lately, I’ve been reading a lot of articles on app architectures. There are many such articles, with many different opinions and solutions. It’s great that developers are sharing their experiences, the pros and cons that might help us decide which road to take in our future projects.

I agree that there are many nice architectures, cleverly designed, with nice separation of concerns, that address the pitfalls of the other approaches. However, I also think that there is no app architecture that fits all projects.

How do we measure whether an architecture is good for a project? Well, there are several parameters that I think are relevant in this evaluation.

Continue reading “Pragmatic iOS app architecture”

Flexible table views with descriptor arrays


Frequently, in our work as iOS developers, we have to present some kind of data in a table view or in a collection view. There are many ways to customise the standard Apple components by implementing the their datasource and delegate methods. Most of the time, our task comes down to implementing the required methods for how many rows the table/collection view has and how should each row in that view look like. As a datasource, we usually have an array of model objects. The length of that array determines the first requirement (number of rows) and the data in each entry determines what will be presented in each row.

However, sometimes we have to implement more advanced table views, where some combination of cells might be hidden in one state and displayed in others. In this post, we will see how we can implement this in a more elegant manner, with a very simple, but powerful trick.

Continue reading “Flexible table views with descriptor arrays”

Forward pipe operator in Swift

One of the most debatable Swift features is the possibility to create your own (or overload the existing) operators. This feature has both pros and cons – on one hand you can make your code more readable, by getting rid of some verbose stuff. However, on the other hand, you might not implement the operator properly and make a complete mess. Also, others looking at your code might be confused about this new unknown operator. So, creating operators in Swift should be done with caution and only when needed.

One operator that I find really useful in projects is the Forward Pipe operator. First defined in F#, this operator helps us avoid multiple nested function calls. Let’s see how we can do this and see some examples.

Continue reading “Forward pipe operator in Swift”

iOSCon 2018

Conferences are a great opportunity to exchange knowledge and experiences with the fellow developers. The iOS community is pretty cool – there are a lot of fantastic people who are building apps and tools, but also share knowledge with everyone who wants to work as an iOS engineer.

I’m very excited to attend iOSCon 2018, where I will be speaking about Understanding language on iOS. In the talk, we will see approaches that can help us in tackling one of the most challenging tasks in computer science – understanding what the users are trying to say. The talk will cover technologies ranging from SiriKit, Dialogflow, and CoreML, up to doing it everything by yourself, using Apple’s NSLinguisticTagger. If these technologies are interesting for you and want to learn more about them, come and see my talk on 23rd March @ CodeNode in London. For even more details, you can also check my new book Developing Conversational Interfaces for iOS, published by Apress.

Continue reading “iOSCon 2018”