Build Phase: Recent Episodes

thoughtbot

Build Phase is a weekly technical podcast discussing iOS development and design.

View Details

Jack & Nick discuss what's new in iOS 11 for Developers, Xcode 9, refactoring in Swift 4, being lazy about watching WWDC videos, and ARKit experimentation.

  • Swift Archival & Serialization
  • What's New in iOS 11 for Developers
  • AppCode
  • Nick on Giant Robots
  • Drag & Drop
  • AR Ruler
  • Apple Acquires SensoMotoric Instruments
  • Tobii
  • STING

View Details

Nick Charlton joins Jack as the new co-host of Build Phase to discuss client expectations, hypermedia APIs, Reactive Swift, and the continued existence of FTP.

  • Why Founders Should Know How to Code
  • Roy Fielding complains about so-called REST
  • Designing the Public Artsy API
  • ReactiveCocoa and friends
  • Argo
  • Swift archival & serialization proposal
  • Ole Begemann has produced a nice playground for use with Xcode 8.3 and a Swift 4 toolchain to let you try out this and other new features of Swift 4: What's new in Swift 4 playground
  • Nick on Twitter

View Details

In this episode, Jack is joined by David Ventura to talk about hackintosh build servers, the hopelessness of the Xcode project file, and Unity3D.

  • Allihoopa
  • TonyMacX86
  • Unity post-build processing
  • Ultima: Shroud of the Avatar

View Details

In this episode, Jack stuns Gordon with a true story about a bizarre Swedish Christmas ritual, Gordon talks about his adventures creating a simple web app using Swift, and finally Jack reveals his true feelings about the new MacBook Pro.

  • Sweden's bizarre Disney Christmas tradition
  • A recording of the Swedish Disney Christmas show from years ago
  • IBM's Kitura web framework
  • The Vapor web framework

View Details

Mark & Jack discuss beards, politics, Swift 2.3 deprecation, and day to day Swit 3.0 development.

  • The PyThong
  • Advanced NSOperations
  • Podcast Swag Bundles

View Details

Big week! Jack and Gordon sit down to talk about the new Macbook Pros and explain why it's totally OK for you not to buy one, as well as a possible solution to the missing escape key. They then move on into discussing CoreData, Swift bugs, and missing features in Swift Package Manager. They wrap up by discussing performance issues in Argo and the problems with benchmarks.

  • BNR Core Data Stack
  • Fix your own escape key with the international keyboard
  • PR demonstrating a Swift bug in Argo
  • bwhiteley/JSONShootout
  • Argo #422: "Worst performing JSON mapping framework"

View Details

This week, Gordon and Mark sit down to talk about a wide array of topics such as Ride Sharing services in Austin, Venmo's new architecture for managing URL and user activity routing alongside authentication, the pain caused by forced Swift updates, and spooky spiders! It's like a Halloween special just in time for Thanksgiving!

  • MetroGnome's iPhone ringtone remix
  • Eero
  • Google WiFi
  • Google Fiber announcement
  • Pinboard's tweet about Google Fiber announcement
  • Fasten
  • Ride Austin
  • PR fixing swift segfaults on Argo
  • Build Phase episode 112: Embarrassment Factor (With guest Chris Eidhof)
  • Swift Talk episode about Loading ViewControllers

View Details

In this episode, Jack and Mark are visited by Chris Eidhof, and together they talk about book publishing, Apple's frameworks, the Swift language, and how to be a good team player.

  • Chris Eidhof
  • Chris' book Advanced Swift
  • Swift Talk video series
  • Latest edition of Jack's Beginning iPhone Development
  • David Rönnqvist's 3D Graphics with Scene Kit book
  • Orta Therox's Danger
  • thoughtbot's Hound
  • Apple's Cloud Kit documentation and quick start
  • Apple's TVMLKit and TVMLKit JS
  • WWDC: Developing tvOS Apps Using TVMLKit: Part 1
  • WWDC: Developing tvOS Apps Using TVMLKit: Part 2
  • Brandon Williams' talk from Functional Swift 2016

View Details

This week, Mark and Gordon talk politics! Or at least fake political websites. They go on to chat about using a mono-repo for large applications and Gordon proposes a potential CoreData wrapper lib that he'd very much like someone to make for him (he will not do it himself).

  • Podcast Patreon Survey
  • Donald Trump Dog Poop Bags
  • Trump Debate Facts

View Details

In this episode, Gordon and Jack commiserate about doing unpaid tech support, and then talked about Cloud Kit and Apple Watch development issues. Some of Jack's guesswork about Cloud Kit is right, and some of it is wrong. That's why they pay him the big bucks.

  • A t-shirt for programmers who don't want to do tech support for the people around them
  • Cloud Kit Overview

View Details

Jack and Mark start off talking about startups, safety nets, free universities, and apartment rentals. Eventually they remember that this is a tech podcast, and discuss implications of updating a project to Swift 3, the nature of Foundation, how TVMLKit works, and the "new mac smell".

  • Developing tvOS Apps Using TVMLKit: Part 1
  • Developing tvOS Apps Using TVMLKit: Part 2
  • New Mac Smell

View Details

This week, Mark and Gordon discuss the physics behind jumping into a pool from the fourth floor of an apartment complex. They also talk about working with xcconfig files and other nerdy stuff, but we know everyone is really here to know more about this pool situation.

  • Listener Survey
  • jspahrsummers/xcconfigs
  • mrackwitz/xcconfigs (Config files for universal frameworks)
  • Keith Smiley's vim syntax files for xcconfig files
  • The Unofficial Guide to xcconfig files
  • Migrating Code Signing Configurations to Xcode 8
  • PR adding universal framework support to Curry
  • Gordon's super professional alias for killing processes

View Details

This week, Mark and Gordon discuss the recent spate of App Store rejections for use of "private" API (spoiler: it's not private API), Gordon's new obsession with project templating, and the decline of Skype.

  • Homer's Car
  • liftoff
  • cookiecutter
  • thoughtbot/ios-template
  • thoughtbot/django-template
  • thoughtbot/android-template
  • Podcast Patreon Survey

View Details

Gordon got a new mic for the office! It only kinda helped. Sorry, we're working on it. Disappointed emoji don't spell disappointed emoji just use the emoji.

After chatting about unique facial hair choices and Swift on the server, Gordon and Jack get dangerously close to being Yet Another Tech Podcast as they discuss missing headphone jacks, being angry about missing headphone jacks, AirPods, and being angry about AirPods.

  • IBM Swift Sandbox
  • Swift Austin meetup
  • Air Bud

View Details

This week Mark and Gordon chat about their respective git workflows, Swift operator precedence groups, and a general uneasiness around the tooling in the iOS ecosystem (but what else is new?).

  • GitFlow
  • PR adding precedence groups to Runes
  • PR adding precedence groups to Argo
  • PR for using the project generated by swift package manger in Curry

View Details

This week, Mark and Jack talk about job hunting and what to look for when pursuing new opportunities. They also discuss the pros and cons to sticking with Apple dependencies (of course talking about CoreData) and Swift 3 adoption.

  • iOS 10's NSPersistentContainer

View Details

This week, Mark and Gordon complete their transition to Salty Old Developers™ live on air after a discussion on the state of dependency management with Xcode betas. Come for the talk about operators in Swift 3 and the exciting possibility of higher-kinded types in Swift 4 but stay for the analysis of a tumbleweed's nasty knuckle-curve.

  • Creating a RAM Disk on macOS
  • SE-0091 - Improving Operator Requirements in Protocols
  • Looking back on Swift 3 and ahead to Swift 4

View Details

This week, Jack and Mark talk about everything going wrong in the world of technology. From Swedish cable boxes to XVim and Xcode 8. Come for that, stay for the discussion about the pitfalls of developing iOS extensions and the impending Swift 3 migration.

  • XVim/Xcode 8 incompatibility Github issue
  • Endgame for Swift 3
  • Looking back on Swift 3 and forward to Swift 4

View Details

Gordon and Jack (or is it Reda?) sit down to chat about "good" and "bad" architecture decisions and how early adoption with Swift has framed interactions with the language and tools today.

  • The Pragmatic Programmer

View Details

On their 100th episode, which they definitely did not forget about while recording, Mark and Gordon hold their first ever live call in giveaway! Unfortunately nobody participated, so they move on to talk about Gordon's Xcode plugin for Vim and how he works in Vim for day to day iOS development. Gordon's audio still sucks and he's incredibly sorry about that.

  • Topo-Chico
  • The Princess' Sparkling Secret Sweepstakes
  • Git Push && Git Paid Shirt
  • The Laila & Brenda Show
  • The Ringer MLB Show
  • xcode.vim
  • vim-tmux-navigator
  • Argo's .vimrc with xcode.vim config
  • autocomplete-swift
  • SourceKitten
  • SourceKittenDaemon
  • XVim
  • CocoaPods/Xcodeproj
  • 0xced/xcproj

View Details

This week Mark is joined by special guest and host of Tentative, Reda Lemeden. Having a designer-slash-developer on the show allows Mark to not shut up about UIKit, best practices for bridging Swift and Objective-C frameworks, and fancy new features in iOS 10.

  • Tentative

View Details

After claiming (incorrectly) to have fixed the audio issues in the Austin office (sorry, working on it), Jack lures Gordon into ranting about UIPageViewController. We're almost certain we recorded this episode before, but it's still horrible, so here we are. They then take a quick detour into discussing how their bodies are falling apart as they get older before chatting about Jack's journeys into game development and improvements in watchOS 3.

  • Tentative
  • UIPageViewController
  • Rampage

View Details

After establishing that Gordon lacks an internal monologue, Mark and Gordon discuss obscure CoreAnimation APIs, their favorite sessions from WWDC 2016 and some best practices for crafting code that walks the line between being a mess and needlessly abstract.

  • Yahoo! News Digest
  • CAReplicatorLayer
  • CAEmitterLayer
  • Protocol and Value Oriented Programming in UIKit Apps
  • SuperDelegate

View Details

In this episode, Gordon and Jack discuss pipe dreams about enhancements to the Cocoa frameworks, commiserate about fear of public speaking, and lament the fickle nature of space-time which prevents them from knowing the future.

  • Elm

View Details

After taking a quick audio tour of Gordon's closet, he and Mark chat about Gordon's general imposter syndrome around UIKit, his feelings of burnout around iOS, and how he's exploring Elixir as a way to add depth to his skill set. Then they make horribly inaccurate speculations on what will happen at WWDC.

  • Elixir
  • WWDC 2016 Sessions

View Details

Jack and Mark talk about the old days, the dynamic nature of Objective-C and whether that matters, and how to transition from one thing to the next. Shout-out to all the jugglers and mimes.

  • Mike Ash on how KVO works
  • Patterns for implementing Undo/Redo
  • Comparison between the Carbon -> Cocoa transition and Objective-C -> Swift
  • Jack's angry old rant about C++, the Visitor pattern, and compile-time binding

View Details

On this episode of Build Phase, it becomes clear that waiting too long to release version 1.0 of your open source library will not win you very much admiration from either Gordon or Jack. The two of them also discuss difficulties that arise while debugging monadic pipelines and hypothesize about threading and performance.

  • Swish
  • Swish PR trying to fix queueing latency
  • Marcus Zara's talk on MVC-N
  • Conversation around bumping version numbers in Argo
  • CocoaPods finally hits 1.0
  • Elm
  • Rules for semver in elm-package
  • Idris
  • Dependent Type (Wikipedia)
  • 2016 WWDC Breakfast

View Details

After what seems like a very long week away, Gordon, Mark and Jack uncover the hairy details involved in working with Argo and Swish, and discuss the differences between using Result type and using Swift error handling syntax.

  • Swish
  • The Bike Shed
  • Monomorphism
  • Argo
  • Result
  • Haskell do notation
  • Pull request simplifying Swish error handling

View Details

Mark and Gordon spend what's likely way too long chatting about baseball. But hey, it's September. Once they do get into some technical discussion (they do, we promise), they chat about running into issues with CocoaPods generated frameworks during deployment, universal frameworks, and abusing CocoaPods' knowledge of Git to be able to do wacky shit with internal dependencies.

  • Current MLB Standings
  • PR removing Runes as an external dependency
  • PR to move Runes test suite to SwiftCheck

View Details

This week we had a topic planned and everything. Y'all had been asking for it and we were finally gonna do it! MVVM in practice. No bullshit. But then a heinous crime was committed that broke the monadic laws that keep our society civil and just. Tune in to hear Swift's public defender (played by Mark Adams) attempt to justify a new implementation of flatMap to Judge Dredd (played by Golden Fontenot).

  • New implementation of flatMap() in Swift 2.0
  • Antitypical/Result

View Details

Mark can't figure out how to get out of New York City, so this week Gordon is joined by fellow thoughtbotter Avi Gilligan to talk about learning Swift, Objective-C, and iOS.

  • Follow Avi on Twitter
  • Tropos
  • Treehouse
  • Human Interface Guidelines
  • Beginning iOS Development with Swift
  • Ingress
  • Nullability auditing in Objective-C
  • Realm
  • NSHipster article on Back Row
  • Upcase
  • New York iOS Women's Meetup

View Details

At the end of a whirlwind week in Boston, Mark and Gordon talk about, like, every possible topic for 50 minutes. Even Thom up and left half way through. Topics include new open source projects (like Static, Tropos, and Curry), localization, and the world's oldest Red Sox fan.

  • Game recap for Houston vs Boston on July 3
  • Static
  • PR bringing the settings in-app for Tropos
  • PR adding Polish localization to Tropos
  • Mysterious Trousers
  • tapbots/calcbot-localization
  • PR bringing Haskell's precedence to Runes
  • PR to make Result's flatMap operator work with the version from Runes
  • PR making it easier to use Runes as a lightweight internal dependency
  • RFC PR to use Runes as a lightweight internal dependency
  • PR removing Runes as an external dependency for Argo
  • PR to use throws instead of Decoded in Argo
  • Curry.framework
  • Source file for GHC.Tuple
  • JSON:API
  • Example of using partial application to solve JSON side loading with immutable value objects

View Details

Mark's visiting the beast coast this week so the guys get to sit in the OG thoughtbot studio together, drink beer, and wax poetic about network testing and Tropos. Mark has literally never sounded better; Boston recording setup on fleek.

  • DVR
  • VCR
  • Issue on Tropos about MVVM
  • Tropos open source repo

View Details

This week Mark welcomes Tony to discuss Swift 2, Haskell development with Docker, and where the hell Gordon went. No seriously, where is he? I hope he comes back soon!

  • Docker
  • Heroku & Docker
  • thoughtbot's docker files
  • Halcyon
  • Argo on throws
  • Case statement matching
  • Swift Standard Library Reference
  • Swift Standard Library Playground

View Details

Live from the Frisky Dingo, Mark and Gordon sit down to talk about the implications of new features and improvements added to Swift 2. If we're being honest, a large portion of the show is Mark pouring new-swift-error-handling fuel into the rage engine known as Gordon Fontenot. Gordon has also managed to segfault the new version of the compiler, so that's fun. Everything's fun.

  • PR adding dematerialize to Result
  • PR adding materialize to Result
  • Radek Pietruszewski's tweet about transforming throwing functions to Results (So so so so so sorry about murdering your name)
  • Gist showing compiler segfaults when combining multi-payload Enums, type constraints, and generics (Filed, don't dupe: rdar://21341337)

View Details

This week, Gordon and Mark discuss organizing a BBQ in a puritan state on short notice, Gordon's upcoming road trip and move to Austin, and the pain of Swift/Objective-C interop. Also we're on the cusp of 90 second brew-at-home-in-your-microwave beer, people. What a time to be alive!

  • No real notes this week, here's a pretty good gif instead

View Details

After chatting for entirely too long about hats, Mark and Gordon discuss some WWDC events that they are putting together, unearthing obscure design patterns in Apple's internal APIs, and working with push notifications. Also, Gordon turns the show into therapy with a great story about shitty neighbors.

  • GORUCK Mesh TAC hat
  • WWDC Breakfast
  • Build Phase at the Ballpark
  • Visitor Pattern
  • iOS console
  • APNS Pusher

View Details

This week the guys attempt to demystify Swift with a little Q and A where Mark has the Qs and Gordon has the As (obviously). There's also just a little too much excitement about a MLB.tv Mac app. The transition to baseball podcast is nearly complete.

  • Tropos
  • MLB.tv Beta for Mac
  • Screenshot of MLB.tv's menu bar component
  • Gist of different property syntaxes

View Details

This week, Mark and Gordon discuss the inevitable rise of the Astros as the MLB leaders for striking out, a weird bug in Xcode that is causing it to build the wrong kind of archive, errors trying to build the Segment.io library using CocoaPods, really just a whole bunch of errors going on today.

  • Segment.io
  • iOS 8.3 Release Notes
  • Example from ResearchKit of hoop-jumping with Auto Layout views and UITableView
  • NYTPhotoViewer
  • Slides from Gordon's NSNorth talk

View Details

This week Gordon and Mark sit down to chat about video games, hairless bears, and using UIPresentationController to create custom alerts.

  • Borderlands 2
  • Far Cry 4
  • Hairless Bear
  • 2014 WWDC session 228: A Look Inside Presentation Controller (ASCIIwwdc)

View Details

Mark is out this week, so Gordon is joined by Tony DiPasquale. They discuss Poppins, an internal app that they are working on to view and share animated gifs, Micro frameworks in Swift, and talk through refactoring a method from using Result to deal with multiple return values to returning a polymorphic protocol type.

  • so-done.gif
  • PR removing flatMap guards from Runes
  • PR removing flatMap implementations from Runes
  • Chris Eidhof's example project with functional view controllers
  • Scenery (Not Scenic, sorry Chris)
  • Using the Dropbox API in Swift
  • Rob Rix's implementation of Result
  • Either
  • Deferred

View Details

In what might end up being the guys' laziest episode to date, they start off by talking about a possible bug in UIScreenEdgePanGestureRecognizer and then talk about Mark's current project dealing with a particularly bad legacy codebase. They then meander into a half-hearted conversation about weightlifting before calling it a show.

  • UIScreenEdgePanGestureRecognizer.edges documentation
  • Swift Summit

View Details

This week, the guys discuss Argo's inexorable march towards 1.0-hood and somehow find themselves in a rant about semantic versioning (or the lack thereof).

  • Argo PR for Parser/Decoded (This is the last week we'll talk about this. Promise. Maybe.)
  • Announcement for CocoaPods 0.36
  • Announcement for Rake 10.0
  • ReactiveCocoa 3.0 Alpha

View Details

This week Mark and Gordon take a break from the recent series of episodes about Swift and instead turn to discussing the pain points of developing on Apple's platform and how it's getting more and more difficult to be an apologist. From there the fellas discuss Gordon's impostor syndrome flare-ups that occur when it's time to write UI code.

  • NSNorth (Sponsor)
  • MagicalRecord

View Details

This week, Gordon and Mark continue their accidental Swift-and-frameworks-that-use-functionalish-concepts series by talking about the new Parser type in Argo and niceties that are emerging in ReactiveCocoa's Swift development branch.

  • Buff
  • iOS Coaching from thoughtbot
  • PR to add a Parser type to Argo
  • NSNorth (Sponsor)
  • Maybe Haskell (50% off for our listeners!)
  • ReactiveCocoa swift-development branch

View Details

Baseball is back! After getting over that excitement, Mark and Gordon chat about upcoming changes to Argo, and get into some places where limitations in Swift's type system prevent them from being as expressive as they would like to be.

  • PR Renaming Argo's internal enum to remove JSON prefix
  • Global function in Argo needed because of limitations in Swift's type system (Would ideally be an extension on Array)
  • Examples of what we would need to do to remove the above workaround
  • Equality defined for LlamaKit's Result type
  • Introduction to Function Currying in Swift
  • Ole Begemann's post on how instance methods in Swift are curried functions
  • Haskell's amazing implementation for Tuples of various lengths

View Details

This week, Mark and Gordon continue discussing integrating ReactiveCocoa into projects and the impact the newly-minted Swift 1.2 will have on future development.

  • ReactiveCocoa
  • Argo
  • Runes
  • Functional refactor removing multiple return values
  • Swift 1.2 release notes

View Details

Ok let's just get this out of the way now: The first minute of audio is really weird. We don't know why and we didn't have time to re-record it. Plus it's actually kind of funny to sound like we're in the witness protection program. This week, Keith and Mark continue to talk about the Mac, ReactiveCocoa, and speculate wildly on the existence of UXKit.

  • Mark's open source location manager
  • UXKit
  • Storyboards and Controllers on OS X
  • Building Interruptible and Responsive Interactions

View Details

While Gordon lounges at home in his native Tejas, Mark is joined by Keith Smiley to talk about some pitfalls of Mac app development and using ReactiveCocoa with Core Data.

  • StartAtLoginController
  • ServiceManagement.h
  • SMLoginItems
  • ReactiveCocoa
  • EasyMapping
  • ReactiveCoreData

View Details

We're just 4 short weeks away from the start of spring training so Mark and Gordon get some baseball talk out of their systems. Deal with it sunglasses llama dot gif. The topic then turns to Nimble matchers for Fox tests and Mark's continuing journey being homeless on the streets of RAC city.

  • ReactiveCocoa
  • RXCollections
  • QuickCheck
  • Nimble
  • Fox
  • NimbleFox (Nimble matchers for Fox)
  • Runes test suite using NimbleFox

View Details

This week, we learn about the dangers of Pre-Workout, oddities in the Swift compiler and go on a rant about TestFlight and iTunes Connect. Could your family be at risk of getting too jacked on Pre-Workout to read on the bus? Find out tonight at 11.

  • Top 25 Pre-workout supplements
  • BroScienceLife: Should I take pre-workout?
  • im-a-bus.gif
  • ReactiveCocoa
  • ReactiveCocoa and MVVM, an Introduction
  • flattenMap vs map + switchToLatest
  • Argo issue about segfaults under Release schemes
  • Runes type signatures

View Details

Listen! This week, Mark and Gordon take a fairly deep dive into the Legend of Zelda franchise. There's also some Swift and bindings and stuff. Remember when this used to be a technical show?

  • Professor Layton and the Curious Village
  • The Legend of Zelda Collectors Edition
  • The Legend of Zelda: Ocarina of Time
  • The Legend of Zelda: Majora's Mask
  • The Legend of Zelda: A Link to the Past
  • The Legend of Zelds: Link's Awakening
  • NSArrayController
  • Runes
  • Argo
  • Andy Matuschak - Functioning as a Functionalist
  • NSNorth 2015 (Gordon is speaking)

View Details

This week, Gordon and our producer, Thom, host a very special episode in which we present a collection of our best-of moments and bloopers.

Okay who are we kidding, it's all bloopers. Sit back and enjoy this gift from us to you.

View Details

This week, Mark talks about using Swift to connect to a GoPro camera, Gordon learns that Selfie Sticks are a thing, and Mark finally fixes LLDB on his machine. From there, they chat about Apple's newfound openness and we finally get to the bottom of Gordon's feelings on Frozen.

  • tick-tock.gif
  • Gordon reviews Frozen
  • Bill Bumgarner on Unit Testing at Apple
  • Rob Rix: Many Types Makes Light Work (Your homework for next week's episode)

View Details

Mark and Gordon catch up before the Thanksgiving break (oh, by the way, we're taking a break last week. Plan retroactively accordingly) and discuss dependency management with Carthage and how it relates to CocoaPods.

  • Carthage
  • CocoaPods
  • Commandant - Functional Swift CLI extracted from Carthage

View Details

This week, Mark and Gordon spend a solid 10 minutes discussing the absurdity of the DC Comics Universe. From there, Gordon proudly explains the solution he developed to the network operation retry queue that was discussed last week. That solution is pretty great. So come for that and stay for the Batman discussion.

  • Functional Swift Conference (Already sold out!)

View Details

Mark and Gordon chat about replaying cached network requests and all of the edge cases that pop up around that. Then they take a short detour into talking about a weird issue around new iOS 8 push notification APIs and provisioning (they think).

View Details

Mark and Gordon chat about another win for their Application View Controller, then commiserate over code signing, application submission and AppleID and iTunes Connect woes.

  • The Bike Shed
  • We're hiring iOS Developers in New York and San Francisco

View Details

With Mark on vacation in sunny SoCal (I have no idea if SoCal is sunny in October, but lets say it is), Gordon sits down with fellow thoughtbot dev and Haskell enthusiast Pat Brisbin to talk about Haskell, Functional Programming, and how it all relates to Swift.

  • Pat Brisbin on Twitter
  • Learn You A Haskell For Great Good
  • Functional Programming in Swift
  • Argo
  • Open Argo PR with work-in-progress changes for reducing compile time
  • Avoiding Copeland 2010
  • Copland 2010 revisited: Apple’s language and API future

View Details

This week, Mark and Gordon discuss that darn Internet and the inaugural CocoaLove conference in Philadelphia. From there they go on to discuss failable initializers and other Swift 1.1 features and fixes. Finally the guys address some questions about how they manage monolithic storyboards.

  • CocoaLove
  • Xcode release notes (Includes notes on Swift 1.1)
  • Vigil
  • Timothy Ritchey's tweet about moving to storyboards

View Details

Mark and Gordon discuss fmap and apply in Swift as they pertain to Optional values, and how these functional concepts can add cleanliness and clarity to everyday patterns.

  • CocoaConf Seattle
  • Argo
  • Functional Swift for dealing with Optional values
  • Roster PR that inspired the blog post

View Details

This week, a lone recruiter appeared on one of our pull requests. He used 'recruit'. It wasn't very effective. This gave Gordon and Mark plenty of fodder to kick the episode off. The fellas discussed a new, major release of Liftoff that adds support for custom build settings and the generation of Swift projects. The use of TDD as a design tool becomes they topic as they discuss Roster, a Swift application under development for internal thoughtbot use.

  • A bold recruiter peddles his job offers on our pull request. (Context captured in screenshots)
  • Liftoff 1.4
  • Roster, an internal thoughtbot Swift app
  • Armored bulldozer destroys town
  • Dude in San Diego steals tank, goes on rampage

View Details

Mark and Gordon vent about this week's internet stupidity, and then discuss MVVM and whether or not it's worth the effort in simple applications.

  • Wikipedia page on Shellshock (Bash bug)
  • A Bug Called Bash
  • iPhone 6 plus bend "test"
  • Roster
  • Quick
  • Nimble

View Details

Mark and Gordon continue to talk about functional concepts in Swift, this time looking at real world applications in iOS development.

  • Efficient JSON in Swift with Functional Concepts and Generics (Part 1 of the series)
  • Real World JSON Parsing with Swift (Part 2 of the series)
  • JSON parsing example without operators
  • Functional operations in cell configuration
  • Roster

View Details

This week Mark and Gordon discuss type safety and functional programming in Swift (again), the finer points of making your application accessible, and the only way you should be seeing movies in this day and age.

  • Chestnut Hill SuperLux
  • Alamo Drafthouse SF
  • Chris Eidhof on Functional Programming in Swift
  • Tony DiPasquale's post on functional JSON parsing in Swift
  • Aeson library
  • swiftz

View Details

This week, Mark and Gordon discuss so-called "flow controllers" and best practices for getting around town with UIKit.

  • Flow Controllers on iOS
  • Anechoic Chamber

View Details

About 5 minutes after shipping their client application, Mark and Gordon discuss the stresses of shipping, and answer some followup emails about the intermittent test failures they were seeing, and the high level Application View Controller architecture they have been using.

  • Fish Playing Street Fighter

View Details

On the final day of thoughtbot's Summer Summit 2014, Mark and Gordon sit down in person to discuss an approach to surfacing network errors to the user and efforts to reduce duplication in doing so.

  • Example code showing the before/after states for the API client

View Details

Mark and Gordon discuss ZeroPush as a push notification service, MVVM, and protocols as they work on recovering from the night before.

  • ZeroPush

View Details

Wow, 50 shows. Can you believe that we still have things to talk about? Nope, we can't either. In this landmark episode, Mark and Gordon do a post-mortem on integrating MVVM into their daily development practices and ruminate on the resulting architectures that emerge at production scale.

  • Efficient JSON in Swift with Functional Concepts and Generics
  • Airplane!/Zero Hour! comparison

View Details

Mark and Gordon commiserate over intermittent test failures only happening on their CI server, then switch gears to briefly discuss the recent release to the Swift programming language.

  • Xcode Release Notes (Includes notes on Swift release

View Details

Mark and Gordon talk about some of the parts of Swift that don't feel quite right to them, functional programming, being a Polyglot, and the potentially scary way that Swift's new access control affects testing.

  • Examples of JSON Parsing in Swift and Function Currying in Haskell
  • Learn You A Haskell For Great Good
  • swiftz

View Details

In a surprisingly meandering episode, Mark and Gordon discuss music, Fonts, UIBarButtonItem, fruit in beers, pluralization with localized strings, and Fantasy Football.

  • Pitch
  • TTTLocalizedPluralString
  • InflectorKit
  • objc.io article on string localization
  • ESPN 30 for 30: Silly Little Game

View Details

This week, Gordon and Mark discuss class clusters, bindings, the Home Run Derby and the inimitable John Cleese.

  • Fawlty Towers
  • Form Bindings sample code on GitHub
  • Giant Robots Smashing Into Other Giant Robots
  • Build Phase on iTunes

View Details

This week Apple did Mark and Gordon a solid by dropping a new beta full of fancy Swift goodies mere moments before they started recording. Whew. Dodged a bullet on that one.

  • Xcode release notes including Swift changes (Required Apple Developer Account)
  • Quick (BDD framework for Swift)

View Details

This week, Mark and Gordon discuss best practices when using UIScrollView with auto layout, the advantages of MVVM and exchange tales of weekend travel.

  • Technical Note TN2154: UIScrollView and Autolayout
  • Capacitor - Wikipedia

View Details

Mark and Gordon discuss code signing woes, the aerodynamics of hair removal, and one of Gordon's alter egos.

  • Gordon's provisioning profile woes
  • Apple Dev Forums provisioning profile bug results
  • Dave DeLong's tweet about provisioning profile weirdness

View Details

Mark and Gordon spend probably too much time talking about Arrested Development, then seamlessly transition into discussing some oddities that have come up in their usage of Swift so far.

  • Chris Lattner comments on open sourcing Swift
  • Swift Language Guide
  • Using Swift with Cocoa and Objective-C

View Details

Mark and Gordon are joined by fellow thoughtbot iOS team members Tony DiPasquale and Keith Smiley in a roundtable discussion wrapping up the announcements from WWDC 2014.

  • Tony DiPasquale on Twitter
  • Keith Smiley on Twitter
  • Swift

View Details

Gather 'round and hear tell of Mark and Gordon's WWDC expectations that were surprisingly mostly correct given this week's announcements.

  • EasyMapping
  • OHHTTPStubs

View Details

This week, Mark and Gordon enumerate the contents of their WWDC14 wish lists and discuss the likelihood of none of them coming to fruition. The entire thoughtbot iOS crew (minus one) will be in San Francisco for WWDC week so be sure to get in touch at buildphase@thoughtbot.com or @buildphase on App.net or Twitter if you'd like to meet up!

  • Getting Started With iOS Development Workshop
  • Build Phase on Twitter
  • Email Us!

View Details

Mark and Gordon sit down after conferencing super hard at NSNorth 2014 to talk about their experiences in Ottawa, the conference itself, and the strange attitude towards technical talks in the Objective-C community.

  • NSNorth

View Details

Mark and Gordon discuss CoreData; the problems with an upside down persistence stack, and the circular process of trying to improve their implementations.

View Details

Settling into a testing mindset when writing Objective-C is front of mind for this week's show. Gordon and Mark chat about potential pitfalls for TDD newcomers, using common sense when writing your specs and self-proclaimed Emperors of these United States.

  • Emperor Norton
  • Bummer and Lazarus
  • iOS TDD blog post
  • Ruby TDD blog post
  • Lockbox
  • Specta
  • Expecta
  • OCMock
  • OHHTTPStubs
  • DHH's Blog Post

View Details

Push notifications amirite?! This week Mark and Gordon commiserate about implementing support for push notifications and the state of third-party services which claim to help.

  • Urban Airship
  • Apple's docs on Push Notifications

View Details

Container view controllers and clever DJ names are on the docket for this week's episode. Mark and Gordon discuss patterns for handling modal authentication views and other high level approaches to root view controller presentation.

  • Darth Brooks
  • Chris Gaines
  • Rodeo by Garth Brooks
  • Lindsay Lowend
  • Debug episode with Loren Brichter

View Details

The minutiae of initialization is the topic of this week's show as Gordon and Mark continue to refuse to get off Objective-C's lawn.

  • iOS on Rails Book
  • Obcd
  • Objective-Clean
  • Boundaries by Gary Bernhardt

View Details

Mark and Gordon have a riveting conversation about using C functions instead of class methods, and then move on to discussing KVO and how it can be used to cleanly wrap up some common interaction patterns.

  • Ed Begley Jr.
  • objc.io on KVO and KVC
  • Apple docs on KVO (See the note about UIKit)
  • Apple docs on KVO Implementation Details

View Details

Mark and Gordon discuss some problems that were encountered during the release of Liftoff 1.1 and rail on bloated UIViewControllers for, like, 20 minutes.

  • Studio Decorations
  • Liftoff 1.1
  • MVVM for iOS
  • Sandi Metz' rules for (Ruby) developers
  • Decorator pattern
  • AutoCoding

View Details

Gordon and Mark talk briefly about man pages and neck beards before discussing some of the decisions and reasoning behind the 1.0 release of Liftoff.

  • mdoc(7) (man mdoc)
  • liftoff(1) (man liftoff)
  • liftoffrc(5) (man liftoffrc)
  • Liftoff 1.0 announcement
  • Liftoff on GitHub
  • liftoffrc
  • thoughtbot-formulae
  • Xcodeproj
  • Crafter

View Details

Mark and Gordon discuss the goto fail bug, editing environments, and the magical properties of beards.

  • Facebook's KVOController
  • Objc.io KeyValueObserver
  • AppCode tweet on unreachable code
  • Apple's goto fail; bug
  • AppCode
  • RapGenius - Objective-C isn't what you think it is (if you think like a Rubyist)

View Details

Gordon and Mark discuss static UITableViews, possible solutions for faking 3rd party APIs, and beta distribution.

  • Wayne Gretzky (Rdio link)
  • GORUCK Challenge
  • RoutingHTTPServer
  • CocoaHTTPServer
  • OHHTTPStubs
  • Apple purchasing Burstly
  • Hockey

View Details

Mark and Gordon discuss language differences between Ruby and Objective-C, custom View Controller transitions, and perform a crucial experiment to find out if you can still download Flappy Bird.

  • Hypercritical Episode 15 - The Bridges of Siracusa County
  • Custom UIViewController Transitions by Ash Furrow

View Details

Mark and Gordon discuss Threes, Flappy Bird (before it was cool/removed from the store), and Autolayout.

  • Threes
  • Flappy Bird (Removed from the app store since recording)
  • Russia is watching you shower
  • UIView+Autolayout

View Details

Gordon and Mark talk about a number of issues around CocoaPods: their recent issues with the spec repo, the negativity in the community towards the project, the danger of violating Unix philosophy, and possible futures for the project if they were to get sherlocked by Apple.

  • NOFX - The Decline
  • Pennywise - Full Circle (on Rdio)
  • CocoaPods - Repairing our broken specs repository
  • Xcodeproj issue #65 - Create project via command line
  • Objective-C libraries and Unix philosophy
  • NSString+TBEncryption
  • CMDQueryStringSerialization

View Details

Mark and Gordon talk about the hiring process at thoughtbot, using code exercises in the interview process, and how they manage to keep from being the smartest people in the room.

  • Justified
  • Go
  • Deadwood
  • Aaron Vegh
  • FizzBuzz
  • thoughtbot’s Playbook
  • Jack Nutting’s author page on Amazon
  • Impostor Syndrome

View Details

Mark and Gordon chat some more about UIPageViewController, UIImage tinting, a better multitasking model, and Texas' attempts at secession.

  • The Oatmeal's Polar Vortex comic
  • Radar to add boolean property to disable resizing of UIPageViewController subviews
  • Radar to add -[UIPageViewControllerDelegate pageViewController:didTransitionToViewControllers:]
  • Radar for setting renderMode on UIImage from Xcode
  • Customizing Your App's Appearance for iOS 7 WWDC Session (UIImageRenderingMode content begins at 32:02)
  • iOS Goodies
  • Dynamic iOS Multitasking
  • clang-format Xcode plugin
  • Code Pilot goes open source
  • FuzzyAutocomplete Xcode plugin

View Details

Mark and Gordon discuss their holiday vacations, striving for a good work/life balance, and resolutions for the new year.

  • objc-run
  • Playbook
  • CocoaHeads Boston
  • NSCoder Night Meetup
  • NSNorth
  • Noodle
  • Learn you a haskell
  • Ryan Nystrom's (not Nyquist) iOS 7 Best Practices blog post
  • Functional Reactive Programming by Ash Furrow
  • Model/View/View-Model
  • Gary Bernhardt's Boundaries talk
  • Gary Bernhardt on Giant Robots

View Details

This week on Build Phase, Gordon Fontenot and Mark Adams chat about christmas, future projects and programming in 2013.

View Details

This week on Build Phase, Gordon Fontenot and Mark Adams talk about storyboarding, tdd and winter.

  • NSByteCountFormatter
  • XCTest compatible KIF fork
  • Silent Push Notification Payload Issue

View Details

This week on Build Phase, Gordon Fontenot and Mark Adams talk about AppKit and Mutt

  • Gordon's .muttrc
  • Pat Brisbin on setting up mutt
  • The Homely Mutt (another mutt setup tutorial)
  • Mail Notifier menubar app

View Details

This week on Build Phase, Gordon Fontenot and Mark Adams discuss Sinatra, architectural patterns and core data.

  • Magical Record
  • WWDC Session on Core Data
  • Wishboard (Sinatra wishlist app)
  • Active Record Pattern
  • DataMapper Pattern

View Details

This week on Build Phase, Gordon Fontenot and Mark Adams talk about NSNotificationCenter and head shaving.

  • NSNotificationCenter with blocks considered harmful
  • I Got an Ape Drape – Vandals

View Details

This week on Build Phase, Gordon Fontenot and Mark Adams talk about UIPageViewController, Bill Murray and Solipsism

View Details

This week on Build Phase, Mark Adams, Gordon Fontenot and Reda Lemeden talk about UI design, core animation and more.

View Details

This week on Build Phase, Gordon Fontenot and Mark Adams talk about categories, coconut water and mogenerator

  • Why I don't Prefix Category Methods

View Details

This week on Build Phase, Mark Adams and Gordon Fontenot talk about proxies and message forwarding.

  • Objective-C Message Forwarding by Mike Ash
  • TBDelegateProxy

View Details

This week on Build Phase Gordon Fontenot and Mark Adams discuss face swapping and form bindings.

  • Face Swap Website
  • Horrors Directory

View Details

Gordon Fontenont and Mark Adams speak with Mattt Thompson, Mobile Lead at Heroku, creator of AFNetworking, NSHipster and Helios.

  • Mattt's Twitter
  • Mattt's Github
  • Mattt's Personal Website
  • AFNetworking
  • NSHipster: Obscure Topics in Cocoa & Objective-C Book

View Details

Gordon Fontenot and Mark Adams talk about Cookie Clicker and review listener feedback.

  • Cookie Clicker
  • Subliminal
  • KIF 2.0
  • Actors Model
  • Mike Ash's article on using accessors in -init and -dealloc

View Details

Gordon Fontenot and Mark Adams talk about iOS7 aftermath and Airplane!

  • Ash Furrow's posts on teehan+lax
  • Double Encore iOS 7 Articles
  • Ryan Nystrom on live blurring in iOS7
  • RNFrostedSidebar

View Details

On this episode Mark and Gordon talk about everything iOS7.

  • iOS7-Runtime-Headers
  • MapBox
  • OmniFocus

View Details

Mark and Gordon discuss UITableViewController, abstracting data sources and delegates, and fantasy football.

  • Matt Drance's iOS Recipe Book

View Details

On this episode of build phase Gordon and Mark talk about memory management and viewer mail.

  • clang_complete
  • ViEmu
  • Actual emu
  • ViCiOUS
  • libextobjc

View Details

On this episode of Build Phase Mark and Gordon talk about Xcode tips, plugins, short cuts and aliases

  • XVim
  • Dash Doc Browser
  • Xcode Dash Plugin
  • OMColorSense
  • CocoaPods for Xcode
  • Alcatraz
  • KSImageNamed
  • Alfred
  • Kaleidoscope
  • iTerm2
  • xctool
  • Gordon's .lldbinit
  • Gordon's .xvimrc
  • Gordon's aliases for opening directories with Xcode
  • Gordon's fuxcode alias for deleting the derived data folder (Same as Mark's ded alias)

View Details

In this episode of Build Phase, Mark and Gordon talk about testing, frameworks and public vs private interface.

  • The Pragmatic Bookshelf
  • Kiwi
  • Specta
  • Expecta
  • OCMock
  • KIF
  • Frank
  • Bwoken
  • xctool
  • Page Objects

Follow @thoughtbot, @21x9, and @gfontenot on twitter.

View Details

This week on Build Phase Gordon and Mark discuss the best tools, resources and methods for new iOS developers.

  • Xcode
  • Stack Overflow
  • Head FIrst iPhone Development
  • Human Interface Guidelines
  • TODO and FIXME Xcode warnings script
  • iTunes U Stanford Classes on iPhone
  • NSHipster
  • iOS Trail Map

Follow @thoughtbot, @21x9, and @gfontenot on twitter.

View Details

In this episode Gordon and Mark talk about ice cream, api design, build packs, parsing and Core Data.

  • NSIncrementalStore
  • Parse
  • Helios
  • Heroku
  • Sample code for this episode

Follow @thoughtbot, @21x9, and @gfontenot on twitter.

View Details

In this, the first episode of Build Phase, Gordon and Mark introduce one another and talk about how they started iOS development. They go on to discuss iOS development best practices, writing good code and sniffing out bad code with code smells.

Follow @thoughtbot, @21x9, and @gfontenot on twitter.