Ben Scheirman

developer. traveler. connoisseur.

  • Home
  • About
  • Projects
  • Speaking
  • Archive
swift

Async/Await and the Future of Combine

Swift 5.5 is here with Xcode 13 Beta and with it comes my favorite new addition to Swift: Async/Await. But what does this mean for Combine?

Ben Scheirman Ben Scheirman
swift

Combine for Mere Mortals

I'm very excited to announce that my Combine Swift Course is now complete and available for purchase. Learning Combine has been extremely rewarding, but learning it can be daunting, so I decided to make the course I wish I had when I started out.

Ben Scheirman Ben Scheirman
iOS

Managing Version Numbers with Fastlane

In this post I will describe how I use fastlane to manage my iOS and macOS version numbers for my releases.There are many ways to deal with versioning, but I prefer to

Ben Scheirman Ben Scheirman
git

Exporting a Git History at a Specific Commit

I had a need today to take an existing git repo that has commits, and move the history as of one of those commits into a different git repo.So my two requirements

Ben Scheirman Ben Scheirman
iOS

Sign-in with Apple Profile Information and Security

Sign-in with Apple is a fantastically useful new feature in iOS 13 and macOS Catalina. I knew when it was announced that I would want to support it. I’m currently working on

Ben Scheirman Ben Scheirman
swift

Swift for Good

A few months ago Paul Hudson asked me if I would be interested in contributing to a new book. The idea of the book was this: many authors, each writing a chapter about

Ben Scheirman Ben Scheirman
macOS

Modern AppKit File Permissions

Sandboxing has been a fact of macOS development for quite some time now. With each release of macOS we see an increasing number of features and new security constraints that we must live with.

Ben Scheirman Ben Scheirman
swift

Xcode Environment Specific Configuration

Almost every app you build with Xcode will need some sort of configuration. Whether it is API Keys for 3rd party SDKs, the URL of your API, feature toggles, or a logging level of verbosity, it’s a good idea to keep this configuration separate from your code.

Ben Scheirman Ben Scheirman
apps

Side Mirror Gets Dark Mode

Side Mirror 2.1 was released to the Mac App Store with support for Dark Mode on macOS Mojave.

Ben Scheirman Ben Scheirman
swift

Capturing Self with Swift 4.2

Swift blocks are an increasingly common way of providing _callback_ type behavior to asynchronous functions. Swift 4.2 introduced an interesting change recently, but first let's take a step back and review what "capturing" means.

Ben Scheirman Ben Scheirman
podcast

Introducing - appDevDiary, a Podcast

I'm teaming up with my friend Joe Cieplinski (fellow musician and app developer) to build an app for guitarists. We're documenting our journey in a new podcast.

Ben Scheirman Ben Scheirman
swift

Functional Refactoring in Swift

Here's an example I came across recently where I wanted to clean up some imperative code and explore a functional approach to the same algorithm.

Ben Scheirman Ben Scheirman
swift

Codable Improvements in Swift 4.1

In Swift 4.1 Apple has addressed a common point of customization with the new keyDecodingStrategy on JSONDecoder.

Ben Scheirman Ben Scheirman
speaking

dotSwift Paris 2018

I just returned from a trip to Paris for the dotSwift conference. Since this is my third trip to Paris, I wanted to see a few things that I had missed in my previous trips.

Ben Scheirman Ben Scheirman
iOS

Hidden AVFoundation Gem

I've probably written aspect ratio code a hundred times. Each time I approach the topic, I write a quick and dirty implementation, get it wrong, debug it with pencil & paper, and then

Ben Scheirman Ben Scheirman
apple

Apple Needs Better FaceTime Cameras for the Mac

But as the iPhone has led the pack in camera optics and technology in a small package, none of that love has made it back to the Mac.

Ben Scheirman Ben Scheirman
iOS

Jerky Scrolling with UIRefreshControl + UITableView

While recording an episode for NSScreencast, in which I reload rows of a UITableView while scrolling, I noticed that the scrolling acceleration would screech to a halt.

Ben Scheirman Ben Scheirman
apps

Side Mirror 2.0

I'm excited to announce that Side Mirror 2.0 is now live on the Mac App Store!

Ben Scheirman Ben Scheirman
swift

Ultimate Guide to JSON Parsing with Swift

Swift 4 and Foundation has finally answered the question of how to parse JSON with Swift.

Ben Scheirman Ben Scheirman
iOS

The Effect of Primetime Media Coverage

In I talked about how I helped launch the 5 Calls iOS app. Shortly after this hit the store, Michael Moore (yes, that Michael Moore) ...

Ben Scheirman Ben Scheirman

5 Calls

I have become much more political in the last year than I ever have before. Like many, completely dumbstruck by the outcome of the election, I have been struggling with how best to

Ben Scheirman Ben Scheirman
recording

An Affordable Dynamic Mic Recommendation

I often get asked what mic people should use when getting started screencasting. Since screencasting is a significant part of my business, I am comfortable spending a little more than a hobbyist to get good quality sound. Pictured above you can see my microphone and audio interface.

Ben Scheirman Ben Scheirman
iOS

Background Downloads

In the previous post I wrote about how I designed the download system for the NSScreencast iOS app. There's no need to have the user be forced to keep our app in the foreground while the download is in progress, we naturally want to support background downloads.

Ben Scheirman Ben Scheirman
iOS

Designing a Robust Large File Download System

For the NSScreencast iOS app I wanted to support downloading videos for offline use. With each video being between 80-200 MB in size, this requires some attention to create a download system that is resilient to failure.

Ben Scheirman Ben Scheirman
iOS

Resume Data Broken in iOS 10

Downloading files on iOS is fairly straight forward. You configure a URLSession with a URLSessionConfiguration, create a URLSessionDownloadTask with the URL that you want to download, and then call .resume() on it. Later

Ben Scheirman Ben Scheirman
Ben Scheirman © 2022
Latest Posts Twitter Ghost