•  ➔ Pattern Matching in Swift

    A great breakdown of the use-cases for pattern matching in Swift. Also see part 2 on ranges and intervals and part 3 with more examples.

  •  ➔ Mechanics of good pairing

    A great post on how to set up pair programming environments effectively.

  •  ➔ If a Tree Falls

    If an idea comes to you and you don’t tell anyone, it’s not that we doubt you had that thought, it’s that that thought doesn’t get a chance to breathe and grow and be improved.

    An idea gets better when you give it away. It improves when you tell it to someone. It improves when they push back on it.

  •  ➔ Automatically resolving git merge conflicts in Xcode’s project.pbxproj file

    Instead of faithfully merging your Xcode Project files by hand, tell Git what to do with them.

  •  ➔ Synx

    A command-line tool that reorganizes your Xcode project folder to match your Xcode groups.

  •  ➔ Design Explosions: Mapping on iOS

    Jon Bell and William Van Hecke have started a blog in which they review UX designs in the wild with the purpose of learning from them. Their first episode takes apart Apple Maps and Google Maps on iOS, highlighting the differences and trying to understand the choices.

    In their own words:

    But this is a different kind of post. There’s no winner this time, just a bunch of design lessons inspired from studying two similar products. It’s fun to compare and contrast the approaches of two highly skilled teams working on a pretty unique design challenge.

    Every decision has a tradeoff. Every thing you make easier can make another thing harder. There is no such thing as “the right design”. But we can learn a lot from seeing how experts in their field weighed the pros and cons of different approaches.

  •  ➔ The Design of Types

    Wouter Swierstra, on how to let the compiler work for you:

    This blog post aims to explain the way I think about enumerations (and a few other Swift types), which may differ from the intuitions developers coming from Objective-C have.

    Years of Haskell programming have warped my brain in interesting ways. One important lesson I’ve learned is that designing the right types for your problem is a great way to help the compiler debug your program.

  •  ➔ Anatomy of a feature: Push Notifications

    I love this quote by Soroush Khanlou:

    At each layer of abstraction, we push down the complexity into another abstraction until the thing is so simple that it can be understood by glancing at it.

    I believe it’s what all programmers should strive for. Everything else will follow naturally.