<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://drewag.me/</id>
    <title>Andrew Wagner</title>
    <updated>2026-06-08T00:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <author>
        <name>Andrew Wagner</name>
        <email>andrew@drewag.me</email>
        <uri>https://drewag.me</uri>
    </author>
    <link rel="alternate" href="https://drewag.me"/>
    <link rel="self" href="https://drewag.me/feed.xml"/>
    <subtitle>I'm Andrew Wagner, a staff engineer turned cofounder building Odo, a YC-backed AI email assistant. I write about company building, working with AI, and the craft of shipping software.</subtitle>
    <logo>https://drewag.me/post-media</logo>
    <icon>https://drewag.me/favicon.ico</icon>
    <rights>© 2026 Andrew Wagner</rights>
    <entry>
        <title type="html"><![CDATA[I Get More Out of Claude Code by Leaving]]></title>
        <id>https://drewag.me/posts/tell-claude-youre-stepping-out</id>
        <link href="https://drewag.me/posts/tell-claude-youre-stepping-out"/>
        <updated>2026-06-08T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[I told Claude Code I was stepping out for a while, and it did some of my best work of the week. Here's the trick, and the skill I built so I can reach for it on purpose.]]></summary>
        <author>
            <name>Andrew Wagner</name>
        </author>
        <category label="Working with AI"/>
        <category label="Claude Code"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[I Keep Avoiding the Thing I'm Best At]]></title>
        <id>https://drewag.me/posts/the-work-i-keep-avoiding</id>
        <link href="https://drewag.me/posts/the-work-i-keep-avoiding"/>
        <updated>2026-06-05T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Burnout made it easy to stop reviewing AI's work, the one thing I'm most valuable for. That left me with a harder question: when am I avoiding something because it doesn't matter, and when am I avoiding it precisely because it does?]]></summary>
        <author>
            <name>Andrew Wagner</name>
        </author>
        <category label="Working with AI"/>
        <category label="Company Building"/>
        <category label="Be a Better Developer"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[The Most Difficult Thing I've Ever Done - Starting a Company]]></title>
        <id>https://drewag.me/posts/the-most-difficult-thing-ive-ever-done-starting-a-company</id>
        <link href="https://drewag.me/posts/the-most-difficult-thing-ive-ever-done-starting-a-company"/>
        <updated>2026-05-31T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Years ago I wrote that finishing a book was the hardest thing I'd ever done. Starting a company has taken the title, and it's hard in a different way.]]></summary>
        <author>
            <name>Andrew Wagner</name>
        </author>
        <category label="Company Building"/>
        <category label="Odo"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Effect of Swift Extension and Libraries On Build Time]]></title>
        <id>https://drewag.me/posts/effect-of-swift-extension-and-libraries-on-build-time</id>
        <link href="https://drewag.me/posts/effect-of-swift-extension-and-libraries-on-build-time"/>
        <updated>2020-09-13T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Does separating code into extra extensions and/or modules have a meaningful impact on compile times?]]></summary>
        <author>
            <name>Andrew Wagner</name>
        </author>
        <category label="swift"/>
        <category label="coding-style"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Developing an Algorithm Case Study: Area encircled by multiple paths on a 2D plane]]></title>
        <id>https://drewag.me/posts/a-return-to-computer-science</id>
        <link href="https://drewag.me/posts/a-return-to-computer-science"/>
        <updated>2020-08-10T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[While toying around with an app idea I came across the need to develop my own algorithm and therefore return to Data Structures and Algorithms techniques I learned in college. Here is the problem, my process, and my solution.]]></summary>
        <author>
            <name>Andrew Wagner</name>
        </author>
        <category label="Data-Structures"/>
        <category label="Algorithms"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[JSON Encoder Change in Swift 5.1]]></title>
        <id>https://drewag.me/posts/json-encoder-change-in-swift-5.1</id>
        <link href="https://drewag.me/posts/json-encoder-change-in-swift-5.1"/>
        <updated>2019-09-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[While updating my app for the iOS 13 SDK, I came across a change in JSONEncoder that broke some of the logic in my code. It now supports encoding top-level values.]]></summary>
        <author>
            <name>Andrew Wagner</name>
        </author>
        <category label="Swift"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Swift Quiz – Boolean Expression]]></title>
        <id>https://drewag.me/posts/swift-quiz-bool-operations</id>
        <link href="https://drewag.me/posts/swift-quiz-bool-operations"/>
        <updated>2019-09-06T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[What is the value of result after doing: let result = false && true || true]]></summary>
        <author>
            <name>Andrew Wagner</name>
        </author>
        <category label="Swift"/>
        <category label="Quiz"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Careful with Fancy KVO Callback]]></title>
        <id>https://drewag.me/posts/careful-with-fancy-kvo-callback</id>
        <link href="https://drewag.me/posts/careful-with-fancy-kvo-callback"/>
        <updated>2019-09-03T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Be warned: there may be a bug in the fancier version of Key Value Observering. I discovered it while implementing a progress callback in my Decree web request library.]]></summary>
        <author>
            <name>Andrew Wagner</name>
        </author>
        <category label="Swift"/>
        <category label="UIKit"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Singletons and Shared Instances in Swift]]></title>
        <id>https://drewag.me/posts/singletons-and-shared-instances-in-swift</id>
        <link href="https://drewag.me/posts/singletons-and-shared-instances-in-swift"/>
        <updated>2019-09-03T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[A couple very common programming patterns, especially in the Apple world, are Singleton and Shared Instance. People often confuse the two and there's also controversy around them. Let's clear these things up.]]></summary>
        <author>
            <name>Andrew Wagner</name>
        </author>
        <category label="Swift"/>
        <category label="Design-Patterns"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Keyboard Field Prompt]]></title>
        <id>https://drewag.me/posts/keyboard-field-prompt</id>
        <link href="https://drewag.me/posts/keyboard-field-prompt"/>
        <updated>2019-09-01T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[I walk through how I solved the question: How do I display a text field directly above the keyboard to prompt the user for some text?]]></summary>
        <author>
            <name>Andrew Wagner</name>
        </author>
        <category label="Swift"/>
        <category label="UIKit"/>
        <category label="Q&A"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Decree – A Declarative URL Request Framework]]></title>
        <id>https://drewag.me/posts/decree-declarative-url-request-framework</id>
        <link href="https://drewag.me/posts/decree-declarative-url-request-framework"/>
        <updated>2019-08-08T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Decree allows you to make HTTP requests in a clear and type-safe way by declaring web services and endpoints. It supports all Apple platforms as well as Linux. It is the culmination of a technique I've developed over many projects. Some of those projects even include both a frontend and backend implemented in Swift that get to share a single source of endpoint declarations.]]></summary>
        <author>
            <name>Andrew Wagner</name>
        </author>
        <category label="Swift"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[A Lesson From Nature: Complexity from Simplicity]]></title>
        <id>https://drewag.me/posts/a-lesson-from-nature-complexity-from-simplicity</id>
        <link href="https://drewag.me/posts/a-lesson-from-nature-complexity-from-simplicity"/>
        <updated>2019-07-29T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[I recently came across a video showing an “Amazing Crabs Shell Exchange” and realized that it was a perfect example from nature of how seemingly complex (or “amazing”) behavior can emerge from simple governing desires. This is directly applicable to programming. Lets explore how.]]></summary>
        <author>
            <name>Andrew Wagner</name>
        </author>
        <category label="Be a Better Developer"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[App Case Study - Love Laugh Read Books]]></title>
        <id>https://drewag.me/posts/app-case-study-love-laugh-read-childrens-books-case</id>
        <link href="https://drewag.me/posts/app-case-study-love-laugh-read-childrens-books-case"/>
        <updated>2017-04-13T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[A look at the interesting technical challenges I ran into while developing this app.]]></summary>
        <author>
            <name>Andrew Wagner</name>
        </author>
        <category label="iOS"/>
        <category label="Case Study"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[5 Core iOS Competencies to Be a Great Hire]]></title>
        <id>https://drewag.me/posts/5-core-ios-competencies-to-be-a-great-hire</id>
        <link href="https://drewag.me/posts/5-core-ios-competencies-to-be-a-great-hire"/>
        <updated>2017-01-29T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[A list of core skills that are necessary in almost every app. If you can do all of these things reliably, you are well on your way to being a great hire as an iOS developer]]></summary>
        <author>
            <name>Andrew Wagner</name>
        </author>
        <category label="iOS"/>
        <category label="Be a Better Developer"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Deploying Server-Side Swift]]></title>
        <id>https://drewag.me/posts/deploying-server-side-swift</id>
        <link href="https://drewag.me/posts/deploying-server-side-swift"/>
        <updated>2017-01-26T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[There are many ways you could choose to host a Swift website or web service, but here I share what has worked well for me.]]></summary>
        <author>
            <name>Andrew Wagner</name>
        </author>
        <category label="Server-Side Swift"/>
        <category label="Swift"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Deploying Server-Side Swift]]></title>
        <id>https://drewag.me/posts/deploying-server-side-swift-with-nginx</id>
        <link href="https://drewag.me/posts/deploying-server-side-swift-with-nginx"/>
        <updated>2017-01-26T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[There are many ways you could choose to host a Swift website or web service, but here I share what has worked well for me.]]></summary>
        <author>
            <name>Andrew Wagner</name>
        </author>
        <category label="Server-Side Swift"/>
        <category label="Swift"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[5 Core Swift Competencies Before You Get a Job]]></title>
        <id>https://drewag.me/posts/5-core-swift-competencies-before-you-get-a-job</id>
        <link href="https://drewag.me/posts/5-core-swift-competencies-before-you-get-a-job"/>
        <updated>2017-01-21T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[A list of skills, beyond just the ability to get the job done, every Swift developer should know before they get paid to develop.]]></summary>
        <author>
            <name>Andrew Wagner</name>
        </author>
        <category label="Swift"/>
        <category label="Be a Better Developer"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Filling Holes in Swift on Linux]]></title>
        <id>https://drewag.me/posts/filling-holes-in-swift-on-linux</id>
        <link href="https://drewag.me/posts/filling-holes-in-swift-on-linux"/>
        <updated>2017-01-18T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[The hardest part of developing Server-Side Swift is the incomplete nature of Foundation including some pretty critical basic functionality. After I thought up this technique, the problems I ran into changed from mountains to mole hills.]]></summary>
        <author>
            <name>Andrew Wagner</name>
        </author>
        <category label="Server-Side Swift"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Learning Swift, Server-Side Swift, and the Future]]></title>
        <id>https://drewag.me/posts/learning-swift-server-side-swift-and-the-future</id>
        <link href="https://drewag.me/posts/learning-swift-server-side-swift-and-the-future"/>
        <updated>2017-01-17T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[I have been extremely busy so I haven't made the time to write any blog posts. In this post I give a brief overview of what I have been up to and what are my short-term plans for the future.]]></summary>
        <author>
            <name>Andrew Wagner</name>
        </author>
        <category label="Server-Side Swift"/>
        <category label="Writing"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[The Most Difficult Thing I've Ever Done - Writing a Technical Book]]></title>
        <id>https://drewag.me/posts/the-most-difficult-thing-ive-ever-done-writing-a-technical-book</id>
        <link href="https://drewag.me/posts/the-most-difficult-thing-ive-ever-done-writing-a-technical-book"/>
        <updated>2016-04-06T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[An in-depth discussion of my experience writing a technical book about learning Swift.]]></summary>
        <author>
            <name>Andrew Wagner</name>
        </author>
        <category label="Writing"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Practical Use for Curried Functions in Swift]]></title>
        <id>https://drewag.me/posts/practical-use-for-curried-functions</id>
        <link href="https://drewag.me/posts/practical-use-for-curried-functions"/>
        <updated>2014-08-06T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[An practical example of how curried functions in Swift can be useful for implementing a logger]]></summary>
        <author>
            <name>Andrew Wagner</name>
        </author>
        <category label="Swift"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Swift KVO Substitute: Observable Variables]]></title>
        <id>https://drewag.me/posts/swift-kvo-substitue</id>
        <link href="https://drewag.me/posts/swift-kvo-substitue"/>
        <updated>2014-07-20T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[My attempt to implement a KVO replacement purely in Swift]]></summary>
        <author>
            <name>Andrew Wagner</name>
        </author>
        <category label="Swift"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Getting Started With Swift]]></title>
        <id>https://drewag.me/posts/getting-started-with-swift</id>
        <link href="https://drewag.me/posts/getting-started-with-swift"/>
        <updated>2014-07-13T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[A list of key concepts to know when getting started with Swift and links to resources to stay current with its development.]]></summary>
        <author>
            <name>Andrew Wagner</name>
        </author>
        <category label="Swift"/>
        <category label="Optionals"/>
        <category label="Memory Management"/>
        <category label="Generics"/>
        <category label="Be a Better Developer"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Uses for Implicitly Unwrapped Optionals in Swift]]></title>
        <id>https://drewag.me/posts/uses-for-implicitly-unwrapped-optionals-in-swift</id>
        <link href="https://drewag.me/posts/uses-for-implicitly-unwrapped-optionals-in-swift"/>
        <updated>2014-07-05T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[A list with concrete examples of when and when not to use Implicitly Unwrapped Optionals in Swift.]]></summary>
        <author>
            <name>Andrew Wagner</name>
        </author>
        <category label="Swift"/>
        <category label="Optionals"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[What is an Optional in Swift]]></title>
        <id>https://drewag.me/posts/what-is-an-optional-in-swift</id>
        <link href="https://drewag.me/posts/what-is-an-optional-in-swift"/>
        <updated>2014-07-05T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[A summary with examples of what an Optional is in Swift]]></summary>
        <author>
            <name>Andrew Wagner</name>
        </author>
        <category label="Swift"/>
        <category label="Optionals"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[7 Cool Features in Swift]]></title>
        <id>https://drewag.me/posts/7-cool-features-in-swift</id>
        <link href="https://drewag.me/posts/7-cool-features-in-swift"/>
        <updated>2014-06-29T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Concrete examples for some cool and practical new features in Swift that will improve the daily lives of iOS and OS X programmers.]]></summary>
        <author>
            <name>Andrew Wagner</name>
        </author>
        <category label="Swift"/>
        <category label="Extensions"/>
        <category label="Enumerations"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Swift’s Weird Handling of Basic Value Types and AnyObject]]></title>
        <id>https://drewag.me/posts/swifts-weird-handling-of-basic-value-types-and-anyobject</id>
        <link href="https://drewag.me/posts/swifts-weird-handling-of-basic-value-types-and-anyobject"/>
        <updated>2014-06-22T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Basic value types like String and Int can be secretly converted to Objective-C types like NSString and NSNumber. This has some interesting effects and implications.]]></summary>
        <author>
            <name>Andrew Wagner</name>
        </author>
        <category label="Swift"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Better UIAlert Handling and Easier Testing]]></title>
        <id>https://drewag.me/posts/better-uialert-handling-and-easier-testing</id>
        <link href="https://drewag.me/posts/better-uialert-handling-and-easier-testing"/>
        <updated>2014-03-31T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[A more declarative and testable way to display alerts in iOS.]]></summary>
        <author>
            <name>Andrew Wagner</name>
        </author>
        <category label="iOS"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Testing Asynchronous Code in Objective-C]]></title>
        <id>https://drewag.me/posts/testing-asynchronous-code-in-objective-c</id>
        <link href="https://drewag.me/posts/testing-asynchronous-code-in-objective-c"/>
        <updated>2014-03-31T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Testing asynchronous code in Objective-C can be a real pain unless you make one simple change to the way you program it in the first place.]]></summary>
        <author>
            <name>Andrew Wagner</name>
        </author>
        <category label="Objective-C"/>
        <category label="Asynchronous Code"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Be A Better Indie - 5. Listen to Podcasts]]></title>
        <id>https://drewag.me/posts/be-a-better-indie-5-listen-to-podcasts</id>
        <link href="https://drewag.me/posts/be-a-better-indie-5-listen-to-podcasts"/>
        <updated>2014-02-17T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[A list with descriptions of the main podcasts that have made me a better developer and keep me informed.]]></summary>
        <author>
            <name>Andrew Wagner</name>
        </author>
        <category label="Indie developer"/>
        <category label="Be a Better Developer"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Be A Better Indie - 4. Create a Singular To-Do List]]></title>
        <id>https://drewag.me/posts/be-a-better-indie-4-a-singular-to-do-list</id>
        <link href="https://drewag.me/posts/be-a-better-indie-4-a-singular-to-do-list"/>
        <updated>2014-02-10T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[The way that I handle my to-do list so that I stay on task with minimal effort.]]></summary>
        <author>
            <name>Andrew Wagner</name>
        </author>
        <category label="Indie Developer"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Devise: determine unconfirmed, confirmed, or not signed in user]]></title>
        <id>https://drewag.me/posts/devise-determine-unconfirmed-confirmed-or-not-signed-in-user</id>
        <link href="https://drewag.me/posts/devise-determine-unconfirmed-confirmed-or-not-signed-in-user"/>
        <updated>2014-02-10T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[While developing a Rails backend using Devise for user management, I ran into trouble determining a user's status. This is how I solved that problem.]]></summary>
        <author>
            <name>Andrew Wagner</name>
        </author>
        <category label="Rails"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Be A Better Indie - 3. Trim Your Incoming Email]]></title>
        <id>https://drewag.me/posts/be-a-better-indie-3-trim-your-incoming-email</id>
        <link href="https://drewag.me/posts/be-a-better-indie-3-trim-your-incoming-email"/>
        <updated>2014-02-03T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[I hate being constantly distracted by incoming emails. To solve this problem I decided to drastically reduce the amount of emails I receive. This is how I did that.]]></summary>
        <author>
            <name>Andrew Wagner</name>
        </author>
        <category label="Indie Developer"/>
        <category label="Be a Better Developer"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Be A Better Indie - 2. Accept, appreciate, and, channel the stress]]></title>
        <id>https://drewag.me/posts/be-a-better-indie-2-accept-appreciate-and-channel-the-stress</id>
        <link href="https://drewag.me/posts/be-a-better-indie-2-accept-appreciate-and-channel-the-stress"/>
        <updated>2014-01-27T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Being and independent developer can be extremely stressful. It is important that you learn to accept, appreciate, and channel to turn it into something positive.]]></summary>
        <author>
            <name>Andrew Wagner</name>
        </author>
        <category label="Indie Developer"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[10 Ways to Be a Better Independent Developer]]></title>
        <id>https://drewag.me/posts/10-ways-to-be-a-better-independent-developer</id>
        <link href="https://drewag.me/posts/10-ways-to-be-a-better-independent-developer"/>
        <updated>2014-01-19T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[A series of posts about how to be a better independent developer]]></summary>
        <author>
            <name>Andrew Wagner</name>
        </author>
        <category label="Indie Developer"/>
        <category label="Be a Better Developer"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Be A Better Indie - 1. Cultivate A Support Structure]]></title>
        <id>https://drewag.me/posts/be-a-better-indie-1-cultivate-a-support-structure</id>
        <link href="https://drewag.me/posts/be-a-better-indie-1-cultivate-a-support-structure"/>
        <updated>2014-01-19T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[No person is an island. It is virtually impossible to be successful in anything that you do without having a good support structure around you.]]></summary>
        <author>
            <name>Andrew Wagner</name>
        </author>
        <category label="Indie Developer"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Comfortably Uncomfortable]]></title>
        <id>https://drewag.me/posts/comfortably-uncomfortable</id>
        <link href="https://drewag.me/posts/comfortably-uncomfortable"/>
        <updated>2013-10-31T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[A look at how pushing through discomfort is exactly where I want to be.]]></summary>
        <author>
            <name>Andrew Wagner</name>
        </author>
        <category label="Objective-C"/>
        <category label="Be a Better Developer"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Changes at a Glance]]></title>
        <id>https://drewag.me/posts/changes-at-a-glance</id>
        <link href="https://drewag.me/posts/changes-at-a-glance"/>
        <updated>2013-10-06T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[A system to make version control change sets more understandable at a glance.]]></summary>
        <author>
            <name>Andrew Wagner</name>
        </author>
        <category label="Coding Practices"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Implicit Animation for CAShapeLayer's Path]]></title>
        <id>https://drewag.me/posts/implicit-animation-for-cashapelayers-path</id>
        <link href="https://drewag.me/posts/implicit-animation-for-cashapelayers-path"/>
        <updated>2013-06-03T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[A way to make all path changes on a CAShapeLayer be animated automatically. ]]></summary>
        <author>
            <name>Andrew Wagner</name>
        </author>
        <category label="Objective-C"/>
        <category label="Animation"/>
        <category label="iOS"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Enforce Good UX Through Reusable Code]]></title>
        <id>https://drewag.me/posts/enforce-good-ux-through-reusable-code</id>
        <link href="https://drewag.me/posts/enforce-good-ux-through-reusable-code"/>
        <updated>2013-02-17T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[My theory on how user experience's and code architecture's interests can converge. Good UX can encourage good code reuse and code reuse can encourage effective UX.]]></summary>
        <author>
            <name>Andrew Wagner</name>
        </author>
        <category label="UX"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Bind a UITableView to a Property]]></title>
        <id>https://drewag.me/posts/bind-a-uitableview-to-a-property</id>
        <link href="https://drewag.me/posts/bind-a-uitableview-to-a-property"/>
        <updated>2013-02-10T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[A library to allow binding a UITableView directly to a to-many property. The library automatically handles insertions and deletions as long as you make sure the to-many property emits KVO notifications.]]></summary>
        <author>
            <name>Andrew Wagner</name>
        </author>
        <category label="Objective-C"/>
        <category label="iOS"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[The 2 Biggest Challenges in Speech UX]]></title>
        <id>https://drewag.me/posts/the-2-biggest-challenges-in-speech-ux</id>
        <link href="https://drewag.me/posts/the-2-biggest-challenges-in-speech-ux"/>
        <updated>2013-02-03T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Speech is still a relatively new interface. Technology is finally starting to catch up to the dreams that we've had since the invention of the computer itself: dreams of having natural conversations…]]></summary>
        <author>
            <name>Andrew Wagner</name>
        </author>
        <category label="UX"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Objective-C Bindings]]></title>
        <id>https://drewag.me/posts/objective-c-bindings</id>
        <link href="https://drewag.me/posts/objective-c-bindings"/>
        <updated>2013-01-28T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[An extension to NSObject that adds the allows binding the properties of two different objects together, allowing for much more declarative and understandable code.]]></summary>
        <author>
            <name>Andrew Wagner</name>
        </author>
        <category label="Objective-C"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Taking the Plunge]]></title>
        <id>https://drewag.me/posts/taking-the-plunge</id>
        <link href="https://drewag.me/posts/taking-the-plunge"/>
        <updated>2013-01-22T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[How I came to the decision to finally take the plunge and go independent.]]></summary>
        <author>
            <name>Andrew Wagner</name>
        </author>
        <category label="Indie Developer"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[UX and Agile]]></title>
        <id>https://drewag.me/posts/ux-and-agile</id>
        <link href="https://drewag.me/posts/ux-and-agile"/>
        <updated>2013-01-22T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Discusses a high level way that we can integrate UX designers better into Agile software practices.]]></summary>
        <author>
            <name>Andrew Wagner</name>
        </author>
        <category label="UX"/>
    </entry>
</feed>