Side Mirror 2.5
Ben Scheirman Blog
by
1y ago
Today I released a big new update for Side Mirror, my macOS app for presenters. Before I dive into the new features, let me first try to explain what Side Mirror does. This is truly the hardest part of developing this app. I have yet to find my good elevator pitch. Side Mirror allows you to select any attached display on your Mac and run it in a window. This can be useful for a number of reasons: During live presentations, to avoid looking back at a projector screen. You can see it and monitor what the audience sees right on your Mac. This keeps your eyes front toward the audience. Your main ..read more
Visit website
Async/Await and the Future of Combine
Ben Scheirman Blog
by
1y ago
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? Async/await is a high level, structured model for concurrency in Swift that allows you to write expressive async code in shockingly little ceremony. A code sample is probably best for this, so consider this example where we want to fetch an image showing the current weather conditions for the user’s location. To do this requires multiple steps: First get the user’s location. If that gives an error, fail early. Then use that to get the weather conditions L ..read more
Visit website
Managing Version Numbers with Fastlane
Ben Scheirman Blog
by
1y ago
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 define them manually loosely following a semver model. If you’re not familiar, that means: Major versions for large/breaking changes Minor version for new features Patch for bug fixes You can of course set a version number in Xcode, but this only works for one target at a time, and if you have any Extension targets (for things like Push Notifications) then they need to be set to the same version. Setting a version number in X ..read more
Visit website
Exporting a Git History at a Specific Commit
Ben Scheirman Blog
by
1y ago
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 were: Show the content as of <sha> No .git repo or any ignored files in the export It took a few minutes to find the right incantation so I thought I’d blog it here mostly for my future self. Maybe it will help someone else out there. I should note that there are many ways to accomplish things in git, so if you have a better way I'm all ears! We start by finding the sha that we want to export: ~/projects/repo $ git log --on ..read more
Visit website
Sign-in with Apple Profile Information and Security
Ben Scheirman Blog
by
1y ago
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 this for NSScreencast and things haven’t gone quite as smooth as I would have expected. Update: Thankfully, Apple changed the implementation at some point to include the email address in the signed id_token. See down further for more details. Thanks to Sebastian Hubrich for correcting me on this. For comparison, I already support Sign-in with Google (as required by some larger companies with team accounts). In this impleme ..read more
Visit website
Swift for Good
Ben Scheirman Blog
by
1y ago
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 Swift, with all proceeds going to charity. I quickly accepted and began writing. This week, the book is a reality! The book is entitled Swift for Good and includes content from twenty different authors. All proceeds of the book benefit Black Girls Code, a charity devoted to proving to the world that girls of every color have the skills to become software engineers. Swift for Good My chapter covers writing a networking stack in S ..read more
Visit website
Modern AppKit File Permissions
Ben Scheirman Blog
by
1y ago
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. This is great for consumers, but (as with most things Security) can be a pain in the neck for developers. I decided to start building a little utility app to stitch together some scripts that I use to publish NSScreencast. This is largely for my own education, and gives me an excuse to do more AppKit development. My first task was to just list the episodes from a folder on my local machine in a tableview ..read more
Visit website
Xcode Environment Specific Configuration
Ben Scheirman Blog
by
1y ago
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. The biggest reason you would want to do this is so that you can provide a different value depending on your build settings. For development builds, use a development API. For production, use the live API. You might even want to isolate analytics between your beta distribution and your App Store distribution. The way I approached this on th ..read more
Visit website
Side Mirror Gets Dark Mode
Ben Scheirman Blog
by
1y ago
Side Mirror 2.1 running in Dark Mode on macOS 10.14 Mojave Side Mirror 2.1 is now available with support for Dark Mode on macOS Mojave and a couple of bug fixes. If you’re not familiar with Side Mirror, it’s a tool for presenters who give live demos, but don’t mirror their displays. It can be useful to see what’s behind while keeping notes, files, or code snippets on your main screen right in front of you. I also released a new website for the app which includes an explainer video. Enjoy ..read more
Visit website
Async/Await and the Future of Combine
Ben Scheirman Blog
by Ben Scheirman
3y ago
Swift 5.5 is here with Xcode 13 Beta and with it comes my favorite new addition to Swift: Async/Await. Async/await is a high level, structured model for concurrency in Swift that allows you to write expressive async code in shockingly little ceremony. A code sample is probably best for this, so consider this example where we want to fetch an image showing the current weather conditions for the user’s location. To do this requires multiple steps: First get the user’s location. If that gives an error, fail early. Then use that to get the weather conditions Look in that response to get an image ..read more
Visit website

Follow Ben Scheirman Blog on FeedSpot

Continue with Google
Continue with Apple
OR