41554 blogs · [ { "id": "01a0876f-a1e1-736a-b110-af4b99bd3caf", "title": "I Stopped Looking at My Code. I Found a Joy of Discovery.", "url": "https://drewag.me/posts/an-alarm-that-breathes", "published_at": "2026-06-23T00:00:00+00:00" }, { "id": "01a0876f-a1e1-736a-b110-af4b9abb2548", "title": "I Get More Out of Claude Code by Leaving", "url": "https://drewag.me/posts/tell-claude-youre-stepping-out", "published_at": "2026-06-08T00:00:00+00:00" }, { "id": "01a0876f-a1e1-736a-b110-af4b9acb34aa", "title": "I Keep Avoiding the Thing I'm Best At", "url": "https://drewag.me/posts/the-work-i-keep-avoiding", "published_at": "2026-06-05T00:00:00+00:00" }, { "id": "01a0876f-a1e1-736a-b110-af4b9b9e9a05", "title": "The Most Difficult Thing I've Ever Done - Starting a Company", "url": "https://drewag.me/posts/the-most-difficult-thing-ive-ever-done-starting-a-company", "published_at": "2026-05-31T00:00:00+00:00" }, { "id": "01a0876f-a1e1-736a-b110-af4b9be21ab3", "title": "Effect of Swift Extension and Libraries On Build Time", "url": "https://drewag.me/posts/effect-of-swift-extension-and-libraries-on-build-time", "published_at": "2020-09-13T00:00:00+00:00" }, { "id": "01a0876f-a1e1-736a-b110-af4b9c031ba8", "title": "Developing an Algorithm Case Study: Area encircled by multiple paths on a 2D plane", "url": "https://drewag.me/posts/a-return-to-computer-science", "published_at": "2020-08-10T00:00:00+00:00" }, { "id": "01a0876f-a1e1-736a-b110-af4b9c6935b1", "title": "JSON Encoder Change in Swift 5.1", "url": "https://drewag.me/posts/json-encoder-change-in-swift-5.1", "published_at": "2019-09-12T00:00:00+00:00" }, { "id": "01a0876f-a1e1-736a-b110-af4b9ccb975b", "title": "Swift Quiz – Boolean Expression", "url": "https://drewag.me/posts/swift-quiz-bool-operations", "published_at": "2019-09-06T00:00:00+00:00" }, { "id": "01a0876f-a1e1-736a-b110-af4b9d45bc3a", "title": "Careful with Fancy KVO Callback", "url": "https://drewag.me/posts/careful-with-fancy-kvo-callback", "published_at": "2019-09-03T00:00:00+00:00" }, { "id": "01a0876f-a1e1-736a-b110-af4b9d810010", "title": "Singletons and Shared Instances in Swift", "url": "https://drewag.me/posts/singletons-and-shared-instances-in-swift", "published_at": "2019-09-03T00:00:00+00:00" }, { "id": "01a0876f-a1e1-736a-b110-af4b9d96728b", "title": "Keyboard Field Prompt", "url": "https://drewag.me/posts/keyboard-field-prompt", "published_at": "2019-09-01T00:00:00+00:00" }, { "id": "01a0876f-a1e1-736a-b110-af4b9e1c5371", "title": "Decree – A Declarative URL Request Framework", "url": "https://drewag.me/posts/decree-declarative-url-request-framework", "published_at": "2019-08-08T00:00:00+00:00" }, { "id": "01a0876f-a1e1-736a-b110-af4b9e40b521", "title": "A Lesson From Nature: Complexity from Simplicity", "url": "https://drewag.me/posts/a-lesson-from-nature-complexity-from-simplicity", "published_at": "2019-07-29T00:00:00+00:00" }, { "id": "01a0876f-a1e1-736a-b110-af4b9e6c6a93", "title": "App Case Study - Love Laugh Read Books", "url": "https://drewag.me/posts/app-case-study-love-laugh-read-childrens-books-case", "published_at": "2017-04-13T00:00:00+00:00" }, { "id": "01a0876f-a1e1-736a-b110-af4b9ea061a9", "title": "5 Core iOS Competencies to Be a Great Hire", "url": "https://drewag.me/posts/5-core-ios-competencies-to-be-a-great-hire", "published_at": "2017-01-29T00:00:00+00:00" }, { "id": "01a0876f-a1e1-736a-b110-af4b9f1b4df5", "title": "Deploying Server-Side Swift", "url": "https://drewag.me/posts/deploying-server-side-swift", "published_at": "2017-01-26T00:00:00+00:00" }, { "id": "01a0876f-a1e1-736a-b110-af4ba009f9b1", "title": "Deploying Server-Side Swift", "url": "https://drewag.me/posts/deploying-server-side-swift-with-nginx", "published_at": "2017-01-26T00:00:00+00:00" }, { "id": "01a0876f-a1e1-736a-b110-af4ba058c33f", "title": "5 Core Swift Competencies Before You Get a Job", "url": "https://drewag.me/posts/5-core-swift-competencies-before-you-get-a-job", "published_at": "2017-01-21T00:00:00+00:00" }, { "id": "01a0876f-a1e1-736a-b110-af4ba0bc637c", "title": "Filling Holes in Swift on Linux", "url": "https://drewag.me/posts/filling-holes-in-swift-on-linux", "published_at": "2017-01-18T00:00:00+00:00" }, { "id": "01a0876f-a1e1-736a-b110-af4ba0e26588", "title": "Learning Swift, Server-Side Swift, and the Future", "url": "https://drewag.me/posts/learning-swift-server-side-swift-and-the-future", "published_at": "2017-01-17T00:00:00+00:00" }, { "id": "01a0876f-a1e1-736a-b110-af4ba113346d", "title": "The Most Difficult Thing I've Ever Done - Writing a Technical Book", "url": "https://drewag.me/posts/the-most-difficult-thing-ive-ever-done-writing-a-technical-book", "published_at": "2016-04-06T00:00:00+00:00" }, { "id": "01a0876f-a1e1-736a-b110-af4ba15d296c", "title": "Practical Use for Curried Functions in Swift", "url": "https://drewag.me/posts/practical-use-for-curried-functions", "published_at": "2014-08-06T00:00:00+00:00" }, { "id": "01a0876f-a1e1-736a-b110-af4ba16781f2", "title": "Swift KVO Substitute: Observable Variables", "url": "https://drewag.me/posts/swift-kvo-substitue", "published_at": "2014-07-20T00:00:00+00:00" }, { "id": "01a0876f-a1e1-736a-b110-af4ba17ffc89", "title": "Getting Started With Swift", "url": "https://drewag.me/posts/getting-started-with-swift", "published_at": "2014-07-13T00:00:00+00:00" }, { "id": "01a0876f-a1e1-736a-b110-af4ba253a8bc", "title": "Uses for Implicitly Unwrapped Optionals in Swift", "url": "https://drewag.me/posts/uses-for-implicitly-unwrapped-optionals-in-swift", "published_at": "2014-07-05T00:00:00+00:00" }, { "id": "01a0876f-a1e1-736a-b110-af4ba2c94e9c", "title": "What is an Optional in Swift", "url": "https://drewag.me/posts/what-is-an-optional-in-swift", "published_at": "2014-07-05T00:00:00+00:00" }, { "id": "01a0876f-a1e1-736a-b110-af4ba3ac416d", "title": "7 Cool Features in Swift", "url": "https://drewag.me/posts/7-cool-features-in-swift", "published_at": "2014-06-29T00:00:00+00:00" }, { "id": "01a0876f-a1e1-736a-b110-af4ba48b6310", "title": "Swift’s Weird Handling of Basic Value Types and AnyObject", "url": "https://drewag.me/posts/swifts-weird-handling-of-basic-value-types-and-anyobject", "published_at": "2014-06-22T00:00:00+00:00" }, { "id": "01a0876f-a1e1-736a-b110-af4ba57eaf43", "title": "Better UIAlert Handling and Easier Testing", "url": "https://drewag.me/posts/better-uialert-handling-and-easier-testing", "published_at": "2014-03-31T00:00:00+00:00" }, { "id": "01a0876f-a1e1-736a-b110-af4ba5ccb8a2", "title": "Testing Asynchronous Code in Objective-C", "url": "https://drewag.me/posts/testing-asynchronous-code-in-objective-c", "published_at": "2014-03-31T00:00:00+00:00" }, { "id": "01a0876f-a1e1-736a-b110-af4ba5eb5569", "title": "Be A Better Indie - 5. Listen to Podcasts", "url": "https://drewag.me/posts/be-a-better-indie-5-listen-to-podcasts", "published_at": "2014-02-17T00:00:00+00:00" }, { "id": "01a0876f-a1e1-736a-b110-af4ba687110a", "title": "Be A Better Indie - 4. Create a Singular To-Do List", "url": "https://drewag.me/posts/be-a-better-indie-4-a-singular-to-do-list", "published_at": "2014-02-10T00:00:00+00:00" }, { "id": "01a0876f-a1e1-736a-b110-af4ba7603431", "title": "Devise: determine unconfirmed, confirmed, or not signed in user", "url": "https://drewag.me/posts/devise-determine-unconfirmed-confirmed-or-not-signed-in-user", "published_at": "2014-02-10T00:00:00+00:00" }, { "id": "01a0876f-a1e1-736a-b110-af4ba7da358d", "title": "Be A Better Indie - 3. Trim Your Incoming Email", "url": "https://drewag.me/posts/be-a-better-indie-3-trim-your-incoming-email", "published_at": "2014-02-03T00:00:00+00:00" }, { "id": "01a0876f-a1e1-736a-b110-af4ba80ec34f", "title": "Be A Better Indie - 2. Accept, appreciate, and, channel the stress", "url": "https://drewag.me/posts/be-a-better-indie-2-accept-appreciate-and-channel-the-stress", "published_at": "2014-01-27T00:00:00+00:00" }, { "id": "01a0876f-a1e1-736a-b110-af4ba877ae62", "title": "10 Ways to Be a Better Independent Developer", "url": "https://drewag.me/posts/10-ways-to-be-a-better-independent-developer", "published_at": "2014-01-19T00:00:00+00:00" }, { "id": "01a0876f-a1e1-736a-b110-af4ba8c6b9c3", "title": "Be A Better Indie - 1. Cultivate A Support Structure", "url": "https://drewag.me/posts/be-a-better-indie-1-cultivate-a-support-structure", "published_at": "2014-01-19T00:00:00+00:00" }, { "id": "01a0876f-a1e1-736a-b110-af4ba975edc9", "title": "Comfortably Uncomfortable", "url": "https://drewag.me/posts/comfortably-uncomfortable", "published_at": "2013-10-31T00:00:00+00:00" }, { "id": "01a0876f-a1e1-736a-b110-af4baa5f015a", "title": "Changes at a Glance", "url": "https://drewag.me/posts/changes-at-a-glance", "published_at": "2013-10-06T00:00:00+00:00" }, { "id": "01a0876f-a1e1-736a-b110-af4baab09998", "title": "Implicit Animation for CAShapeLayer's Path", "url": "https://drewag.me/posts/implicit-animation-for-cashapelayers-path", "published_at": "2013-06-03T00:00:00+00:00" }, { "id": "01a0876f-a1e1-736a-b110-af4bab5fcd56", "title": "Enforce Good UX Through Reusable Code", "url": "https://drewag.me/posts/enforce-good-ux-through-reusable-code", "published_at": "2013-02-17T00:00:00+00:00" }, { "id": "01a0876f-a1e1-736a-b110-af4bac479289", "title": "Bind a UITableView to a Property", "url": "https://drewag.me/posts/bind-a-uitableview-to-a-property", "published_at": "2013-02-10T00:00:00+00:00" }, { "id": "01a0876f-a1e1-736a-b110-af4bad2f9e9c", "title": "The 2 Biggest Challenges in Speech UX", "url": "https://drewag.me/posts/the-2-biggest-challenges-in-speech-ux", "published_at": "2013-02-03T00:00:00+00:00" }, { "id": "01a0876f-a1e1-736a-b110-af4bae1660af", "title": "Objective-C Bindings", "url": "https://drewag.me/posts/objective-c-bindings", "published_at": "2013-01-28T00:00:00+00:00" }, { "id": "01a0876f-a1e1-736a-b110-af4baee9867f", "title": "Taking the Plunge", "url": "https://drewag.me/posts/taking-the-plunge", "published_at": "2013-01-22T00:00:00+00:00" }, { "id": "01a0876f-a1e1-736a-b110-af4bafc89bdc", "title": "UX and Agile", "url": "https://drewag.me/posts/ux-and-agile", "published_at": "2013-01-22T00:00:00+00:00" } ] posts Claim your blog
Back to drewag.me
Blog · corpus.blog/blogs/drewag.me/posts

drewag.me

drewag.me

2026

2020

2019

2017

2016

2014

2013