Two Ring Software RSS All updates from Two Ring Software. http://tworingsoft.com/ Overusing Xcode Targets Misses the Mark Outlining the differences between Xcode project targets and build configurations, and how to properly use each one. Tue, 08 May 2018 00:00:00 -0600 http://tworingsoft.com/blog/2018/05/08/overusing-xcode-targets-misses-the-mark.html http://tworingsoft.com/blog/2018/05/08/overusing-xcode-targets-misses-the-mark.html Automatic Devpod Versioning and Deployment with Vrsnr Describing my process for semantically versioning the Pippin podspec, deploying it to CocoaPods trunk, and committing all the results to git history. Fri, 20 Apr 2018 00:00:00 -0600 http://tworingsoft.com/blog/2018/04/20/automatic-devpod-versioning-and-deployment-with-vrsnr.html http://tworingsoft.com/blog/2018/04/20/automatic-devpod-versioning-and-deployment-with-vrsnr.html Reach Out and Touch Faith Thinking about the future of the Macbook Pro, and the direction in which the TouchBar might indicate it's headed. Mon, 16 Apr 2018 00:00:00 -0600 http://tworingsoft.com/blog/2018/04/16/reach-out-and-touch-faith.html http://tworingsoft.com/blog/2018/04/16/reach-out-and-touch-faith.html CocoaPods and Custom Build Configurations My long journey to set a devpod's SWIFT_OPTIMIZATION_LEVEL, from the podspec's pods_target_xcconfig, to Podfile's post_install and finally arriving at the succinct project. Thu, 15 Feb 2018 00:00:00 -0700 http://tworingsoft.com/blog/2018/02/15/cocoapods-custom-build-configurations.html http://tworingsoft.com/blog/2018/02/15/cocoapods-custom-build-configurations.html Programming: 20 Years In As I near 20 years since first picking up computer programming, I take a quick look back at the languages I've used and the tools available to work with them, with thoughts on the synergies between them and our own brains. Wed, 07 Feb 2018 00:00:00 -0700 http://tworingsoft.com/blog/2018/02/07/programming-20-years-in.html http://tworingsoft.com/blog/2018/02/07/programming-20-years-in.html Dependency Management Best Practices In light of recent news about dependency manager breakages and vulnerabilities, highlighting some steps you can take to protect your dependencies and the projects for which you need them. Tue, 09 Jan 2018 00:00:00 -0700 http://tworingsoft.com/blog/2018/01/09/dependency-management-best-practices.html http://tworingsoft.com/blog/2018/01/09/dependency-management-best-practices.html Announcing Pippin Version 2 Highlighting some of the new features in the first major update to Pippin. Tue, 02 Jan 2018 00:00:00 -0700 http://tworingsoft.com/blog/2018/01/02/introducing-pippin-version-2.html http://tworingsoft.com/blog/2018/01/02/introducing-pippin-version-2.html Manage version numbers with this one line command How I'm currently using Rake to automate a few common tasks I carry out to manage my iOS apps' version numbers. Sun, 17 Dec 2017 00:00:00 -0700 http://tworingsoft.com/blog/2017/12/17/easy-versioning-with-vrsnr-and-rake.html http://tworingsoft.com/blog/2017/12/17/easy-versioning-with-vrsnr-and-rake.html Introducing Pippin An update and first official version of my Swift app development framework. Wed, 29 Nov 2017 00:00:00 -0700 http://tworingsoft.com/blog/2017/11/29/introducing-pippin.html http://tworingsoft.com/blog/2017/11/29/introducing-pippin.html Introducing Psst A simple script to perform straigtforward template replacement of credentials in a codebase, to help avoid committing them. Mon, 27 Nov 2017 00:00:00 -0700 http://tworingsoft.com/blog/2017/11/27/introducing-psst.html http://tworingsoft.com/blog/2017/11/27/introducing-psst.html Image Galleries with Jekyll Describing my journey to build a photo gallery for my website using Jekyll/Liquid to template all the things. Sun, 05 Nov 2017 00:00:00 -0600 http://tworingsoft.com/blog/2017/11/05/jekyll-image-galleries.html http://tworingsoft.com/blog/2017/11/05/jekyll-image-galleries.html Log Level: Extreme A brief survey of log level concepts in the iOS community and elsewhere. Mon, 30 Oct 2017 00:00:00 -0600 http://tworingsoft.com/blog/2017/10/30/log-level-extreme.html http://tworingsoft.com/blog/2017/10/30/log-level-extreme.html Apple's Tech Evolutions Extrapolating Apple's technological advances from the past onto their current product lines and research, for funsies. Thu, 19 Oct 2017 00:00:00 -0600 http://tworingsoft.com/blog/2017/10/19/apples-tech-evolutions.html http://tworingsoft.com/blog/2017/10/19/apples-tech-evolutions.html Looms and Computers The similarities between computers and looms, distant cousins related through their ancestor, the Jacquard loom. Tue, 29 Aug 2017 00:00:00 -0600 http://tworingsoft.com/blog/2017/08/29/looms-and-computers.html http://tworingsoft.com/blog/2017/08/29/looms-and-computers.html Xcode 9's New Find and Replace Panel A critique of the new source editors tool's UI and UX. Mon, 19 Jun 2017 00:00:00 -0600 http://tworingsoft.com/blog/2017/06/19/xcode-9-new-search-and-replace-panel.html http://tworingsoft.com/blog/2017/06/19/xcode-9-new-search-and-replace-panel.html Returning Optionals Versus Throwing Errors in Swift Deciding between flow control and data model concepts in your app's business logic. Thu, 18 May 2017 00:00:00 -0600 http://tworingsoft.com/blog/2017/05/18/returning-optionals-versus-throwing-errors-in-swift.html http://tworingsoft.com/blog/2017/05/18/returning-optionals-versus-throwing-errors-in-swift.html Source Control Management vs. Dependency Management Which manager has more authority over your project? Wed, 12 Apr 2017 00:00:00 -0600 http://tworingsoft.com/blog/2017/04/12/source-control-management-vs-dependency-management.html http://tworingsoft.com/blog/2017/04/12/source-control-management-vs-dependency-management.html Differentiating iOS App Builds A simple way to manage all your app build variants to test alongside each other on a device. Sat, 01 Apr 2017 00:00:00 -0600 http://tworingsoft.com/blog/2017/04/01/differentiating-ios-app-builds.html http://tworingsoft.com/blog/2017/04/01/differentiating-ios-app-builds.html Validating Crash Reporting in Live iOS Apps There's only one way to guarantee your iOS crash reporter is working: purposefully crash your app in production. Sun, 26 Mar 2017 00:00:00 -0600 http://tworingsoft.com/blog/2017/03/26/validating-crash-reporting-in-live-ios-apps.html http://tworingsoft.com/blog/2017/03/26/validating-crash-reporting-in-live-ios-apps.html Snapping Angles and Fuzzy Binary Search Implementing a variant of the binary search algorithm to find nearest interval angles on the unit circle. Thu, 16 Mar 2017 00:00:00 -0600 http://tworingsoft.com/blog/2017/03/16/snapping-angles-and-fuzzy-search.html http://tworingsoft.com/blog/2017/03/16/snapping-angles-and-fuzzy-search.html Objective-C Block Syntax Some ways to make writing Objective-C blocks in Xcode a little easier. Mon, 27 Feb 2017 00:00:00 -0700 http://tworingsoft.com/blog/2017/02/27/objective-c-block-syntax.html http://tworingsoft.com/blog/2017/02/27/objective-c-block-syntax.html Tracking Xcode Build Setting Changes with xcbs Announcing a small CLI for persisting final Xcode project build settings in lockfiles. Sun, 19 Feb 2017 00:00:00 -0700 http://tworingsoft.com/blog/2017/02/19/tracking-xcode-build-setting-changes.html http://tworingsoft.com/blog/2017/02/19/tracking-xcode-build-setting-changes.html Xcode Build Setting Inheritance and Precedence Straightening out the tangled web of relationships in the world of Xcode build configuration. Sat, 28 Jan 2017 00:00:00 -0700 http://tworingsoft.com/blog/2017/01/28/xcode-build-setting-inheritance-and-precedence.html http://tworingsoft.com/blog/2017/01/28/xcode-build-setting-inheritance-and-precedence.html The Art of Source Control, Part 2: Clean Git History Outlining some best practices concerning git history tidiness. Thu, 19 Jan 2017 00:00:00 -0700 http://tworingsoft.com/blog/2017/01/19/the-art-of-source-control-part-2-clean-git-history.html http://tworingsoft.com/blog/2017/01/19/the-art-of-source-control-part-2-clean-git-history.html The Art of Source Control, Part 1: Organizing Codebases Outlining some best practices for organizing a codebase. Sat, 14 Jan 2017 00:00:00 -0700 http://tworingsoft.com/blog/2017/01/14/art-of-source-control-part-1-organizing-codebases.html http://tworingsoft.com/blog/2017/01/14/art-of-source-control-part-1-organizing-codebases.html Passwords Anecdata regarding antipatterns in the realm of password management for your service's users. Wed, 04 Jan 2017 00:00:00 -0700 http://tworingsoft.com/blog/2017/01/04/passwords.html http://tworingsoft.com/blog/2017/01/04/passwords.html Going Back to the Future to test with git-rebase Adventures in Git, using rebase to reorder history and automate some testing, too! Tue, 22 Nov 2016 00:00:00 -0700 http://tworingsoft.com/blog/2016/11/22/going-back-to-the-future-to-test-with-git-rebase.html http://tworingsoft.com/blog/2016/11/22/going-back-to-the-future-to-test-with-git-rebase.html Making the site a little more SASSy Why I decided to use SASS to manage the site's CSS. Sun, 24 Jul 2016 00:00:00 -0600 http://tworingsoft.com/blog/2016/07/24/making-the-site-a-little-more-sassy.html http://tworingsoft.com/blog/2016/07/24/making-the-site-a-little-more-sassy.html