Archive

  • HTTP in Swift, Part 6: Chaining Loaders

    So far, the HTTPLoading types we’ve created have all been loaders that directly respond to an HTTPRequest. In order to create new kinds of loaders, we’ll need to revisit the HTTPLoading protocol.

  • HTTP in Swift, Part 5: Testing and Mocking

    We’ve seen how a single method can provide the basis for loading a request over the network.

  • HTTP in Swift, Part 4: Loading Requests

    Up until now, we’ve been looking at the structure and implementation of a simple request/response model. Now it’s time to talk about how we send requests and receive responses.

  • HTTP in Swift, Part 3: Request Bodies

    Before moving on to sending our HTTPRequest values, let’s make an improvement to our struct. Last time, we ended up with this basic definition:

  • HTTP in Swift, Part 2: Basic Structures

    In the previous post, we took a look at the structure of HTTP requests and responses. In this post, we’ll transform that information into the types we need to model them in Swift.

  • HTTP in Swift, Part 1: An Intro to HTTP

    For a while now I’ve had a series of blog posts floating around in my head on how to build an HTTP stack in Swift. The idea started last spring with Rob Napier’s blog posts on protocols, and matured last summer and fall while I was working at WeWork on an internal Swift framework.

  • The Missing Accessory

    I’ve got a bag of accessories that I cart around that meets about 95% of all the tech needs I tend to have these days, but there’s one accessory I’ve wanted in there that doesn’t exist: the perfect Apple Watch charger.

  • Anything worth doing...

    I’ve been wanting to blog more, but it’s always seemed like such a hassle. I appreciate the speed and flexibility of statically-generated sites, but the authoring experience around them isn’t that great. On the other hand, the authoring experience on hosted solutions (like Wordpress or Medium) is fantastic, but you lose a lot of the speed of a static site, and the ownership becomes more murky.

  • Introducing Time

    Four years ago I blogged about the oddities of leap days.

  • Conditional Compilation, Part 3: App Extensions

    App Extensions tend to somewhat problematic when it comes to conditional compilation, because there are methods and functionality that are not available in app extensions. For example, app extensions don’t have a UIApplication instance, and so the UIApplication.shared property is marked as NS_EXTENSION_UNAVAILABLE_IOS(...).