November 10, 2014
by Collin Ruffenach

iOS, Open Source, and Simple

ios-open-source-and-simple

Open source software is a part of our DNA here at Simple. Our product is realized because we stand on the shoulders of giants who came before us. As an organization we believe it’s vital to not just be a consumer of the open source communities’ work, but also to be active contributors to it. In our iOS app we use AFNetworking and were able to help develop the original SSL Pinning Feature. Over the last year we also started using CocoaPods in our build process. It was the perfect mechanism to release some of the reusable components we’ve developed in house.

In the spirit of continuing to give back to the open source community, I want to share four projects that came out of our work on Simple 2.0 for iOS.

CRToast

Simple 2.0 features a brand new interface for notifications. We needed inline notifications that could display images, titles, subtitles, and have a variety of styling options. Ideally, these notifications would be accessible from anywhere within the codebase. From the seed of another open source project came CRToast.

Animated gif of Simple's header

CRToast allows iOS application developers to present timed or persistent notifications in their applications with very little effort. They can be presented with all sorts of animations and timing options, and also can be configured to react to swipe and tap gestures. The project has already been used by lots of people and has had some great contributions on GitHub. We’re really excited to keep on developing it.

MDCalendar

Calendar interfaces for iOS apps are an unsolved problem. Calendar math is hard and UIKit’s default date selector isn’t very stylish, not to mention expensive. We use calendars for several of our features here at Simple and couldn’t find an existing one that fit our needs. As a result, Michael DiStefano, one of our iOS developers, built a date-picker interface that he recently released as MDCalendar.

MDCalendar is the set-it-and-forget-it calendar you have been looking for. It has a host of great features to get that clunky date picker view in your app replaced with something you can customize to fit your style. Folks on GitHub have already started helping us out by adding features to it and we’re thrilled to bring a new solution to this difficult problem.

Screenshot of Simple's calendar

CRLoom

The Simple iOS app uses Apple’s Core Data technology for its database. In the 1.x iterations of the app we interacted with Core Data exclusively on the main thread. As we built Simple 2.0 for iOS we really wanted to develop some technology that would allow us to move these sometimes costly operations off the main thread. This change would allow the interface to remain snappy, even while importing all of your account data.

Out of this desire I created CRLoom. CRLoom is a thin layer on Core Data that provides a template for phrasing your model construction. With this template in place for your models, you can use what is essentially boilerplate code to spin up a threaded NSManagedObjectImportOperation and ingest as much data as you like while keeping your main thread free to keep those pixels moving.

LogoFunhouse

I love our logo here at Simple. That’s why I’m super happy to release one of the first pieces of code I wrote when I started here at Simple in December 2011. During my first week I decided to implement the algorithmic generation of our logo and wrap it up as an iOS UI component. After a lot more tinkering through the years the final product has taken form as LogoFunhouse.

LogoFunhouse comes preset to show the Simple logo, but the shape it presents is a dynamic product of several constants. These constants can be tweaked to create all sorts of shapes. As another enhancement, a custom UIView called SFSimpleLogoAnimationView has been provided with the ability to style the outline of the shape you’ve generated. You can also set some values to move the tail’s start and end around and create the effect of the logo chasing its tail.

As an extra exercise I implemented the project in both Objective-C and Swift. If geometry, drawing, and animations are things you’re into, you should check it out!

Animated gif of the Simple logo

Onward

Simple 2.0 represents a new foundation for the mobile team to build upon here at Simple. We are so excited to keep on delivering a best-in-class mobile banking experience for our customers. As we take on new challenges and build new experiences, we look forward to continuing to be active members in the open source community.