20 Dec 2016

About half a year ago we started adopting the Flux architecture in the PlanGrid iOS app. This post will discuss our motivation for transitioning from traditional MVC to Flux and will share the experience we have gathered so far. I’m attempting to describe large parts of our Flux implementation by discussing code that is in production today. If you’re only interested in the high level ...

30 Jun 2016

Cleanse - Swift Dependency Injection    Cleanse is a dependency injection framework for Swift. It is designed from the ground-up with developer experience in mind. It takes inspiration from both Dagger and Guice. Cleanse is currently in beta phase. This means its API is subject to change (but for the better). Getting Started This is a quick guide on how to get started using ...

30 Jun 2016

Swinject       Swinject is a lightweight dependency injection framework for Swift. Dependency injection (DI) is a software design pattern that implements Inversion of Control (IoC) for resolving dependencies. In the pattern, Swinject helps your app split into loosely-coupled components, which can be developed, tested and maintained more easily. Swinject is powered by the Swift gen...

04 May 2016

This project is part of a benchmark between MVVM+FRP and MVC architectures in iOS app development. This project serves as the MVVM with FRP benchmark project. You can read more about it in Medium. MVVM MVVM denotes the Model-View-ViewModel arquitectural pattern, where Model data is encapsulated in ViewModel objects and the View does a (sometimes two-way) binding with the View...

08 Apr 2016

  UPD: Slides which I presented at NSLondon available here. Feeling weird while doing MVC in iOS? Have doubts about switching to MVVM? Heard about VIPER, but not sure if it worth it? Keep reading, and you will find answers to questions above, if you don’t — feel free to complain in comments. You are about to structure your knowledge about architectural patterns...

31 Mar 2016

It’s well known in the field of architecture that we shape our buildings, and afterward our buildings shape us. As all programmers eventually learn, this applies just as well to building software. It’s important to design our code so that each piece is easily identifiable, has a specific and obvious purpose, and fits together with other pieces in a logical fashion. This is what we cal...

31 Mar 2016

At Mutual Mobile we believe that testing is part of building great software. However, testing has not always been a key part of building iOS apps. As we embarked on a quest to improve testing across many of the apps that we build, we found that writing tests for iOS apps was difficult. We decided that if we were going to improve the way we test our software that we would need to first co...