Universal Link Quirks

We recently implemented Universal Links. This means that if you encounter a link to a house on funda.nl on your mobile device and you have our app installed, that house will now be shown in the app instead of on the website. Giving you the best experience possible. Here are some weird things we found out during the development of this feature. No distinction between page and anchors The relationship between your app and your website is defined in an apple-app-site-association file.
Read more

First steps into Rx

When we started building a new app 2 years ago we thought we were pretty cool and hip. We started from scratch with a swift-only codebase and used libraries that had proven to be stable and well-supported. There is one practise we did not adopt: Reactive Programming. At the time it felt a bit new and scary and honestly we just couldn't find a good reason to use it in our app.
Read more

How To Communicate Hidden Gestures in Mobile Apps

Nick Babich wrote a nice article about different ways of teaching gestures to the users of your Apps. Communicating non-obvious usage of an application is always difficult and many times results in long, tutorial-style launchscreens in apps. Nick makes a good case for ditching these kinds of methods and instead educating your users on-the-fly with inline hints. If you have to give your app an instruction manual, then you’re not doing a good job of communicating with your users because users cannot be expected to read a manual before using your app.
Read more

Tadaa! a design test library

“Tadaa” is a tiny library I built that allows you to quickly overlay a design over a UIViewController in an app. This allows you to check margins, colors and other UI aspects against the original design of the screen. Check it out on my GitHub page

Non-nested appending of optionals to an Array

I like to prevent nested code as much as possible. In some cases though, it might not be very easy to do this. Consider the following code that adds a String to an Array: var stringItems = [String]() var optionalString: String? //...someothercode if let unwrappedString = optionalString { stringItems.append(unwrappedString) } this simple unwrapping of an optional seems trivial but wouldn'‘t a non-nested version look even nicer? That's why I wrote a tiny Array extension that allow you to write it like this:
Read more

Our flavour of the MVVM design pattern

When starting the process of rebuilding our apps, we were confronted with a problem that most old, big apps have. The logic in our apps responsible for transforming raw data to something on the screen was completely contained in our ViewControllers and Views. This means that these classes were huge, hard to read and even harder to understand. This is a common issue with iOS apps that results mostly from the Model View Controller design pattern that is often used.
Read more

Simplified UI Testing with the Page Object Model

In Xcode 7 Apple gave developers the opportunity to easily write UI tests. These are tests that automatically run through the interface of your app to test specific screens. More importantly, it can test the transitions between theses screens by performing the same actions your users will. Although the tools Apple gave us to write these tests were very easy to use, they weren’t leading to nicely structured and easily readable tests.
Read more

Using AsyncDisplayKit for a smooth UI

So we're building this awesome new app but after spending time revamping our result list we found out it just wasn'‘t performing well enough. We were using a UICollectionView but calculating the position of all the elements in each item in the collection was just too slow. We found out about AsyncDisplayKit (ASDK). ASDK offers an abstraction over UIView and CALayer that allows you to perform the calculation of frames to background threads instead of the main thread.
Read more

Blog, The Origin Story

Hi there. You might know me and I might now know you. But there'‘s a chance that if you'‘ve reached this page you are somewhat interested in iOS development, Swift development or both. Let me introduce myself first. I'm Roel, a 30-something iOS developer from The Netherlands. I work at funda, the largest real estate website in our country. Together with about a 100 colleagues (half of those are developers) we develop and maintain a website containing most of the for-sale and for-rent properties in The Netherlands.
Read more