Blog



I tried using the Swift Playgrounds app on my iPad while solving problems for Advent of Code 2020 this year. Here's my impression of the app as a code editor. (13 minute read)
Tags: UX algorithms apple backend cocoapods data devex ethics git ios ipad legal meta mgmt objc patterns playgrounds products rails ruby security swift theory tools vapor web wwdc xcode
Previously:
My WWDC 2019 Session Watchlist
My scheduled programming for watching this year's WWDC session videos.
Good Morning, iOS!
Brainstorming ways to combine Apple's productivity apps into a bird's-eye-view Today widget: Good Morning!
Tag Everything
A small request for sharing some simple organizational features amongst more of Apple's productivity apps, with some mockups of what it might look like in Reminders and Calendar.
Interpreting Apple's Transparency Report
Apple recently released their transparency report for government and private party information requests for January through June of 2018, in an updated format including broken out CSVs.
New Year, New Task Management
Describing the setup I've put in place towards a New Year's resolution to manage my time a little better, both for the day-to-day and longer-running goals.
Fun with Unicode in Swift
Looking at some ways to write tricky Swift code using Unicode.
Developer CLI tool reference
A collection of command line tools I've used on *nix systems.
Swift Async Operations at Your Command
Rewriting an old asynchronous Operation (née NSOperation) subclass in Swift for Pippin, learning new things.
On a Mission to Automate Revision
Introducing a new tool as part of my evolution towards effortless versioning of code.
Backend to Basics
Catching up on some experimentation with different backend, one of which was the Vapor framework for Swift on the server.
New command line tools
Announcing some new CLI tools available, and plans on how to consolidate others like psst, xcbs and vrsn.
My holy grail: a simple Rails install
Describing yet another winding foray into setting up a Rails app.
do try Antitypical's Result to catch Async Errors in Swift
Reviewing my foray into using Result for error handling in Swift, and my realization of a particular use case it solves well.
Overusing Xcode Targets Misses the Mark
Outlining the differences between Xcode project targets and build configurations, and how to properly use each one.
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.
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.
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.
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.
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.
Announcing Pippin Version 2
Highlighting some of the new features in the first major update to Pippin.
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.
Introducing Pippin
An update and first official version of my Swift app development framework.
Introducing Psst
A simple script to perform straigtforward template replacement of credentials in a codebase, to help avoid committing them.
Image Galleries with Jekyll
Describing my journey to build a photo gallery for my website using Jekyll/Liquid to template all the things.
Log Level: Extreme
A brief survey of log level concepts in the iOS community and elsewhere.
Apple's Tech Evolutions
Extrapolating Apple's technological advances from the past onto their current product lines and research, for funsies.
Looms and Computers
The similarities between computers and looms, distant cousins related through their ancestor, the Jacquard loom.
Xcode 9's New Find and Replace Panel
A critique of the new source editors tool's UI and UX.
Returning Optionals Versus Throwing Errors in Swift
Deciding between flow control and data model concepts in your app's business logic.
Source Control Management vs. Dependency Management
Which manager has more authority over your project?
Differentiating iOS App Builds
A simple way to manage all your app build variants to test alongside each other on a device.
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.
Snapping Angles and Fuzzy Binary Search
Implementing a variant of the binary search algorithm to find nearest interval angles on the unit circle.
Objective-C Block Syntax
Some ways to make writing Objective-C blocks in Xcode a little easier.
Tracking Xcode Build Setting Changes with xcbs
Announcing a small CLI for persisting final Xcode project build settings in lockfiles.
Xcode Build Setting Inheritance and Precedence
Straightening out the tangled web of relationships in the world of Xcode build configuration.
The Art of Source Control, Part 2: Clean Git History
Outlining some best practices concerning git history tidiness.
The Art of Source Control, Part 1: Organizing Codebases
Outlining some best practices for organizing a codebase.
Passwords
Anecdata regarding antipatterns in the realm of password management for your service's users.
Going Back to the Future to test with git-rebase
Adventures in Git, using rebase to reorder history and automate some testing, too!
Making the site a little more SASSy
Why I decided to use SASS to manage the site's CSS.