The iOS Huddle #4

Michael Gachet
BPXL Craft
Published in
4 min readDec 29, 2016

--

Thursday, December 29, 2016

The iOS Huddle is our monthly roundup of the best links shared in the Black Pixel iOS team’s Slack channel.

Reactive Programming

Reactive programming seems to be all the rage these days. If you’re curious about reactive programming, we thought this article from Cocoa with Love was a very good introduction to some of the concepts behind it. Matt Gallagher defines reactive programming by the following principle:

Any “getter” for mutable state causes problems. Instead of using getters, any calculated, generated, loaded or received state values should be immediately sent into a channel and any part of the program that wants access to these values must subscribe to the channel.

The article makes some very good points regarding how heavy KVO can be for some simple use cases and outlines some typical issues we’ve all encountered using it. As always, reactive programming may not be the magic cure, but it offers a different way to look at how to design apps.

GitHub

GitHub now allows you to resolve merge conflicts directly from your PR. For the simplest issues, this is a real time saver. For more complex issues, Kaleidoscope is still our favorite.

Meta-Programming

DRY is a good concept that’s not often so easy to implement. Some consider DRYing too soon akin to premature optimization. Others swear by it. However you feel about DRY, one thing we may all agree on is that implementation of boilerplate code can be tedious, repetitive, and error prone. I’m looking at you, JSON serialization and NSCoding! So why not replace some or all of this with some nice meta-programming and automated code generation. That’s what Sourcery can do for you.

Can You Have a Look at This Crash Report?

How many of us have been asked this question and handed over an unsymbolicated stack trace? Not much fun. Fortunately Apple has written a very nice technical note titled, “Understanding and Analyzing Application Crash Reports.”

Fast Playgrounds

Swift Playgrounds can really help with rapid prototyping and testing of ideas. Playgrounds can also be used to isolate some specific issues. PlayAlways allows you to quickly create Xcode playgrounds right from your menu bar.

A Look Behind the Scenes

When Instagram presents how it redesigned its feed, going deep into implementation details, you know you’re likely to learn something. This presentation by Instagram Software Engineer Ryan Nystrom does not disappoint. It’s a must see for anyone curious or eager to perfect their craft.

Try? vs. As?

This is clear and short article by Erica Sadun that outlines how mixing a try? with as? and conditional binding can have unintended consequences.

Where is My Memory?

If, like us, you’re an avid reader of Mike Ash’s in-depth technical blog, you’ll be delighted by his GOTO 2016 conference presentation: an exploration of Swift memory layout.

Make This Text Larger, Please

iOS 7 introduced a completely new visual design paradigm for iOS apps. Dynamic Type was part of that change. This article by Jesse Black at Stable Kernel is a good introduction to Dynamic Type and is a must read for anyone interested in making apps more accessible, even with custom fonts.

Gitignore

Finally, for those among us who like to keep their repos clean we found this nice gem for gitignore templates.

For more insights on design and development, subscribe to BPXL Craft and follow Black Pixel on Twitter.

Black Pixel is a creative digital products agency. Learn more at blackpixel.com.

--

--

Michael Gachet
BPXL Craft

Curious mind, iOS developer, runner. All views are mine...