41554 blogs · [ { "id": "01a087a3-315f-7107-8f16-d83b714997c9", "title": "Claude Workflow pt. 2", "url": "https://mcknight.io/blog/2026/08/10/claude-workflow-pt.-2.html", "published_at": "2026-08-10T04:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b71c86b06", "title": "Catching Up with Claude", "url": "https://mcknight.io/blog/2026/04/27/catching-up-with-claude.html", "published_at": "2026-04-27T04:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b71d409db", "title": "Three Curves for Tech Creatives", "url": "https://mcknight.io/blog/2026/01/13/three-curves-for-creatives.html", "published_at": "2026-01-13T05:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b7277fadf", "title": "My Current LLM-Assisted Workflow", "url": "https://mcknight.io/blog/2026/01/07/my-current-llm-assisted-workflow.html", "published_at": "2026-01-07T05:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b72881adb", "title": "TUI v. GUI", "url": "https://mcknight.io/blog/2025/10/23/tui-v.-gui.html", "published_at": "2025-10-23T04:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b72c45c2b", "title": "Claude Willing", "url": "https://mcknight.io/blog/2025/08/26/claude-willing.html", "published_at": "2025-08-26T04:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b73038d3f", "title": "Claude Damn", "url": "https://mcknight.io/blog/2025/07/15/claude-damn.html", "published_at": "2025-07-15T04:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b73b6cbfe", "title": "Well watered", "url": "https://mcknight.io/blog/2025/03/11/well-watered.html", "published_at": "2025-03-11T04:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b74296535", "title": "Virtual Insanity", "url": "https://mcknight.io/blog/2025/02/19/virtual-insanity.html", "published_at": "2025-02-19T05:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b74f28010", "title": "Announcing sweCAPTCHA", "url": "https://mcknight.io/blog/2025/01/25/captcha-innovation.html", "published_at": "2025-01-25T05:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b75747417", "title": "Task runners", "url": "https://mcknight.io/blog/2025/01/14/task-runners.html", "published_at": "2025-01-14T05:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b75c99813", "title": "LOGAF v. LEM", "url": "https://mcknight.io/blog/2025/01/06/logaf-v.-lem.html", "published_at": "2025-01-06T05:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b769d8f76", "title": "WWDC 2024 First Impressions", "url": "https://mcknight.io/blog/2024/06/10/wwdc-2024-first-impressions.html", "published_at": "2024-06-10T04:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b77640b2d", "title": "Laws We Never Voted In", "url": "https://mcknight.io/blog/2024/04/10/laws-we-never-voted-in.html", "published_at": "2024-04-10T04:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b7841e544", "title": "The Programmer Political Compass", "url": "https://mcknight.io/blog/2024/03/13/developer-political-compass.html", "published_at": "2024-03-13T04:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b78e71da2", "title": "Interest in Presidential Elections", "url": "https://mcknight.io/blog/2024/03/06/interest-in-presidential-elections.html", "published_at": "2024-03-06T05:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b795334e7", "title": "Transcending irrational versioning", "url": "https://mcknight.io/blog/2024/02/08/transcending-irrational-versioning.html", "published_at": "2024-02-08T05:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b7a4174ca", "title": "Happy 40th, Mac", "url": "https://mcknight.io/blog/2024/01/26/mac-40th-anniversary.html", "published_at": "2024-01-26T05:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b7a9c071f", "title": "Apple Vision Pro Preorder Eve", "url": "https://mcknight.io/blog/2024/01/18/apple-vision-pro-eve.html", "published_at": "2024-01-18T05:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b7abaecd0", "title": "Fast Magic", "url": "https://mcknight.io/blog/2024/01/17/fast-magic.html", "published_at": "2024-01-17T05:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b7b579eb9", "title": "Chores 2023", "url": "https://mcknight.io/blog/2023/09/07/chores.html", "published_at": "2023-09-07T04:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b7b9d507e", "title": "Once In a UIViewController Lifecycle, by the Talking Heads", "url": "https://mcknight.io/blog/2023/08/28/talking-heads-once-in-a-uiviewcontroller-lifecycle.html", "published_at": "2023-08-28T04:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b7be57606", "title": "Advent of Code 2020 on Swift Playgrounds for iPad", "url": "https://mcknight.io/blog/2021/02/07/advent-of-code-on-swift-playgrounds.html", "published_at": "2021-02-07T05:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b7cdc7627", "title": "My WWDC 2019 Session Watchlist", "url": "https://mcknight.io/blog/2019/06/14/wwdc-2019-watchlist.html", "published_at": "2019-06-14T04:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b7ce13527", "title": "Good Morning, iOS!", "url": "https://mcknight.io/blog/2019/03/06/good-morning-ios.html", "published_at": "2019-03-06T05:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b7ceccbd0", "title": "Tag Everything", "url": "https://mcknight.io/blog/2019/01/28/tag-everything.html", "published_at": "2019-01-28T05:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b7da5224b", "title": "Interpreting Apple's Transparency Report", "url": "https://mcknight.io/blog/2019/01/23/interpreting-apples-transparency-report.html", "published_at": "2019-01-23T05:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b7e6b6a3d", "title": "New Year, New Task Management", "url": "https://mcknight.io/blog/2019/01/07/new-year-new-task-management.html", "published_at": "2019-01-07T05:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b7f541d00", "title": "Fun with Unicode in Swift", "url": "https://mcknight.io/blog/2018/12/10/fun-with-unicode-in-swift.html", "published_at": "2018-12-10T05:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b7fb95ce4", "title": "Developer CLI tool reference", "url": "https://mcknight.io/blog/2018/11/29/developer-cli-tool-reference.html", "published_at": "2018-11-29T05:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b801583bd", "title": "Swift Async Operations at Your Command", "url": "https://mcknight.io/blog/2018/11/19/swift-async-operations-at-your-command.html", "published_at": "2018-11-19T05:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b808bcdfb", "title": "On a Mission to Automate Revision", "url": "https://mcknight.io/blog/2018/10/30/on-a-mission-to-automate-revision.html", "published_at": "2018-10-30T04:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b817073cd", "title": "Backend to Basics", "url": "https://mcknight.io/blog/2018/10/24/backend-to-basics.html", "published_at": "2018-10-24T04:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b81e3dffe", "title": "New command line tools", "url": "https://mcknight.io/blog/2018/09/30/new-command-line-tools.html", "published_at": "2018-09-30T04:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b82d2c280", "title": "My holy grail: a simple Rails install", "url": "https://mcknight.io/blog/2018/09/25/my-holy-grail-a-simple-Rails-install.html", "published_at": "2018-09-25T04:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b830c3f38", "title": "do try Antitypical's Result to catch Async Errors in Swift", "url": "https://mcknight.io/blog/2018/09/04/do-try-result-oriented-error-propagation.html", "published_at": "2018-09-04T04:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b839a43b0", "title": "Overusing Xcode Targets Misses the Mark", "url": "https://mcknight.io/blog/2018/05/08/overusing-xcode-targets-misses-the-mark.html", "published_at": "2018-05-08T04:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b83cafa10", "title": "Automatic Devpod Versioning and Deployment with Vrsnr", "url": "https://mcknight.io/blog/2018/04/20/automatic-devpod-versioning-and-deployment-with-vrsnr.html", "published_at": "2018-04-20T04:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b84582365", "title": "Reach Out and Touch Faith", "url": "https://mcknight.io/blog/2018/04/16/reach-out-and-touch-faith.html", "published_at": "2018-04-16T04:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b84feacd8", "title": "CocoaPods and Custom Build Configurations", "url": "https://mcknight.io/blog/2018/02/15/cocoapods-custom-build-configurations.html", "published_at": "2018-02-15T05:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b855e58cb", "title": "Programming: 20 Years In", "url": "https://mcknight.io/blog/2018/02/07/programming-20-years-in.html", "published_at": "2018-02-07T05:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b85dc700a", "title": "Dependency Management Best Practices", "url": "https://mcknight.io/blog/2018/01/09/dependency-management-best-practices.html", "published_at": "2018-01-09T05:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b86c02c94", "title": "Announcing Pippin Version 2", "url": "https://mcknight.io/blog/2018/01/02/introducing-pippin-version-2.html", "published_at": "2018-01-02T05:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b871ad14f", "title": "Manage version numbers with this one line command", "url": "https://mcknight.io/blog/2017/12/17/easy-versioning-with-vrsnr-and-rake.html", "published_at": "2017-12-17T05:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b87cfba10", "title": "Introducing Pippin", "url": "https://mcknight.io/blog/2017/11/29/introducing-pippin.html", "published_at": "2017-11-29T05:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b87f7c456", "title": "Introducing Psst", "url": "https://mcknight.io/blog/2017/11/27/introducing-psst.html", "published_at": "2017-11-27T05:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b8860be2c", "title": "Image Galleries with Jekyll", "url": "https://mcknight.io/blog/2017/11/05/jekyll-image-galleries.html", "published_at": "2017-11-05T04:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b8936553a", "title": "Log Level: Extreme", "url": "https://mcknight.io/blog/2017/10/30/log-level-extreme.html", "published_at": "2017-10-30T04:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b8a31045c", "title": "Apple's Tech Evolutions", "url": "https://mcknight.io/blog/2017/10/19/apples-tech-evolutions.html", "published_at": "2017-10-19T04:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b8a857698", "title": "Looms and Computers", "url": "https://mcknight.io/blog/2017/08/29/looms-and-computers.html", "published_at": "2017-08-29T04:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b8b4c4f05", "title": "Xcode 9's New Find and Replace Panel", "url": "https://mcknight.io/blog/2017/06/19/xcode-9-new-search-and-replace-panel.html", "published_at": "2017-06-19T04:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b8b9724d3", "title": "Returning Optionals Versus Throwing Errors in Swift", "url": "https://mcknight.io/blog/2017/05/18/returning-optionals-versus-throwing-errors-in-swift.html", "published_at": "2017-05-18T04:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b8c0ba139", "title": "Source Control Management vs. Dependency Management", "url": "https://mcknight.io/blog/2017/04/12/source-control-management-vs-dependency-management.html", "published_at": "2017-04-12T04:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b8c4f9646", "title": "Differentiating iOS App Builds", "url": "https://mcknight.io/blog/2017/04/01/differentiating-ios-app-builds.html", "published_at": "2017-04-01T04:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b8c917308", "title": "Validating Crash Reporting in Live iOS Apps", "url": "https://mcknight.io/blog/2017/03/26/validating-crash-reporting-in-live-ios-apps.html", "published_at": "2017-03-26T04:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b8cc85ab3", "title": "Snapping Angles and Fuzzy Binary Search", "url": "https://mcknight.io/blog/2017/03/16/snapping-angles-and-fuzzy-search.html", "published_at": "2017-03-16T04:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b8d91baeb", "title": "Objective-C Block Syntax", "url": "https://mcknight.io/blog/2017/02/27/objective-c-block-syntax.html", "published_at": "2017-02-27T05:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b8dd91d14", "title": "Tracking Xcode Build Setting Changes with xcbs", "url": "https://mcknight.io/blog/2017/02/19/tracking-xcode-build-setting-changes.html", "published_at": "2017-02-19T05:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b8e8f1fcb", "title": "Xcode Build Setting Inheritance and Precedence", "url": "https://mcknight.io/blog/2017/01/28/xcode-build-setting-inheritance-and-precedence.html", "published_at": "2017-01-28T05:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b8f7ec13e", "title": "The Art of Source Control, Part 2: Clean Git History", "url": "https://mcknight.io/blog/2017/01/19/the-art-of-source-control-part-2-clean-git-history.html", "published_at": "2017-01-19T05:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b8fbb3fca", "title": "The Art of Source Control, Part 1: Organizing Codebases", "url": "https://mcknight.io/blog/2017/01/14/art-of-source-control-part-1-organizing-codebases.html", "published_at": "2017-01-14T05:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b9071df97", "title": "Passwords", "url": "https://mcknight.io/blog/2017/01/04/passwords.html", "published_at": "2017-01-04T05:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b90c769de", "title": "Going Back to the Future to test with git-rebase", "url": "https://mcknight.io/blog/2016/11/22/going-back-to-the-future-to-test-with-git-rebase.html", "published_at": "2016-11-22T05:00:00+00:00" }, { "id": "01a087a3-315f-7107-8f16-d83b91b91736", "title": "Making the site a little more SASSy", "url": "https://mcknight.io/blog/2016/07/24/making-the-site-a-little-more-sassy.html", "published_at": "2016-07-24T04:00:00+00:00" } ] posts Claim your blog
Back to mcknight.io
Blog · corpus.blog/blogs/mcknight.io/posts

mcknight.io

mcknight.io

2026

2025

2024

2023

2021

2019

2018

2017

2016