One Year of Windmill: A Behind-the-Scenes Look

David McGavern
Made by Windmill
Published in
7 min readMar 16, 2017

--

One year ago, John Scalo and I took the plunge and started our own small iOS dev shop: Made by Windmill.

Neither of us had done freelance work like this before — we’d historically been full-time employees at large tech companies, complete with the comfortable (ok… super comfortable) salary that comes with it. But we both knew we wanted a change, and we’ve been fortunate to have worked with amazing clients in the past year.

We’re very proud of the apps we’ve worked on so far! And on our first anniversary, I thought it’d be fun to give a behind-the-scenes look at how we developed one of our apps: Nomorobo for iOS.

Behind-the-Scenes of Nomorobo for iOS

When Apple announced iOS 10 and CallKit at WWDC 2016, the team at Telephone Science Corp saw an opportunity to bring their award-winning robocall blocking service to iOS. They asked us to design and build an app with the ambitious goal of being ready for iOS 10’s launch in just a few months. With such limited time, we got to work quickly!

Here’s an iPhone with Nomorobo running in it. Y’know, just in case you don’t know what an iPhone looks like by now.

We started with an engineering feasibility test using iOS 10 beta 1, since nothing else was possible if blocking calls didn’t work. The framework we wanted to use, CallKit, had just been announced at WWDC a few weeks earlier, so it was still super-new and super-undocumented (and… super-buggy!).

Thankfully, John and I have had plenty of experience with new Apple software (having both worked on macOS and iOS at Apple for a long time), and we were able to get the feasibility test done quickly. We identified issues & filed bugs with Apple as needed (sorry, former co-workers, for all the bugs 😜). Once satisfied we got to work making the app.

We started by iterating on Nomorobo’s app design.

The goal of Nomorobo’s iOS app design was to be high quality, but to also be done super quickly so we could release on-time. Thankfully, the core functionality of a robocall blocking app requires little interaction from the user if it’s working correctly, and sounded like a simple design problem… right? After all, it’s just a robocall blocking app. How hard could it be?

Turns out, even though the app itself is relatively simple, there are many different ways its functionality can be expressed. One small example: we tried over twelve iterations on how to select a subscription plan before landing on one we liked (and that was only for its visual styling!).

A small taste of visual iterations we did for one page in Onboarding. This is only one screen!

We did many different design iterations like the above for Onboarding and the main app flows before settling on what ended up shipping, and we’re still iterating today based on learnings from the shipping app.

The app icon was another challenge. Nomorobo’s logo is a simple wordmark set in Roboto, which we weren’t sure would translate well to a mobile app icon. We decided to design a new icon to represent Nomorobo’s app, but wanted to stay true to its simple and functional roots. Icon design is not normally my strongest suit, but we didn’t have time or budget to subcontract to a visual designer, so I got to work!

To start, I whipped out my iPad Pro and spent a few minutes sketching out a handful of different possible icons. Two themes immediately stuck out: a phone with a cross through it, and iterations on the Nomorobo wordmark. I also tried a few strange iterations that clearly weren’t going anywhere, like a super weird cat robot.

Seriously though, what’s up with that super weird remote-control cat robot in the 3rd icon. It was supposed to look like an evil robocalling robot. Whoops 🤣.

With the quick pencil sketches done, I moved into Sketch to do iterations on the most compelling themes.

A small taste of the icon variations we tried for Nomorobo.

It became clear that the phone-with-cross icon was going to be best, as Nomorobo’s wordmark didn’t translate well in an icon. We settled on the last iteration: the one ceremoniously named “120 — iPhone Copy 26”. (I gave up naming my Sketch artboards nicely years ago 😂).

Another area we spent time iterating on design-wise was the Report Number flow. We wanted to make it fun and super simple so users might actually enjoy reporting numbers to us. That meant making the initial screen super easy to use.

Some iterations of the initial screen in the Report Number flow.

Because we wanted to streamline reporting a number as much as possible, we made a custom number keypad that was immediately visible when you switched to the Report tab. Using iOS’s built-in number pad would have covered up the tab bar at the bottom and required some kind of “dismiss keyboard” flow, which is annoying for users. We even had time to include a small fun explosion effect after reporting a number (shown later :).

Once we had designs in hand, we started building the app.

Early on we decided to use Swift exclusively. John and I have had many years of experience with Objective-C, but Swift has won us over with its built-in type safety and awesome features (my personal favorite: guard statements).

Working with Nomorobo’s backend engineers, we started building the core functionality of the app. We quickly ran into a snag: Robocallers are a sneaky bunch of folks, and they frequently (multiple times per day) change which numbers they’re calling from to trick you into answering.

That meant we needed to get Nomorobo constantly updating in the background on iOS, an OS known for terminating apps in the background if you so much as blink at it wrong.

Gulp.

We landed on a 1–2 punch approach of background app refreshing and silent push notifications that has worked well for our users (and have some more changes coming!). It was a challenge getting both working correctly, but the end result means that most users see their robocall blacklists updating multiple times per day. Yay!

We spent more time building out the rest of the functionality within the app, and even did a few super-quick polish effects for 1.0. For example, that explosion I mentioned earlier? We put it in the Report flow:

A look at the final reporting flow, including an explosion! 💥

And once all the major functionality was in place, it was…

Time to ship!

Oh wait, not so fast, says Apple.

Every iOS developer knows the drill: spend months building an app, submit it to Apple, then chew your fingernails for weeks waiting for Apple to decide your fate. Even though we’re ex-Apple employees, we’re not immune to this. Predictably, we hit a snag.

Nomorobo was one of the first apps to take advantage of the new subscription model changes that Apple announced. That meant enduring calls and questions from Apple about its revenue model and value provided by using a subscription model over a one-time charge.

Apple, to its credit, was very willing to listen to new ideas about how subscriptions should be used. Their main goal was to make sure that users weren’t getting screwed, and that’s a goal we’re totally in support of (even if it does sometimes result in some unexpected delays).

After working out the kinks with Apple (including another issue with CallKit) and making more tweaks ourselves, we finally hit the release button and made Nomorobo for iOS live in November, 2016! We’re super proud that Nomorobo has been well received, and are actively working on updates.

Check Nomorobo out on the App Store!

The Next Year of Windmill

I hope you enjoyed that peek into how we built one app.

We’re super excited for the next year of Windmill, and can’t wait to keep working on new apps. Our focus for this next year is to expand, in basically every way! We’ve had requests for more Android apps, so we’re starting to look into that area (side note: if you’re an Android freelancer who would like to work with us, get in touch!). Also look forward to more blog content from us, plus perhaps some open-source frameworks in the near future.

Thanks for reading! Hope you enjoyed this look into Windmill.

Davey

Shameless plug time! If you’re looking to have an iOS app developed, get in touch! We have some availability coming up.

--

--

Co-Founder at Made by Windmill, your one-stop shop for developing iOS apps.