<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Andrew Wells on Medium]]></title>
        <description><![CDATA[Stories by Andrew Wells on Medium]]></description>
        <link>https://medium.com/@wellsleeandrew?source=rss-3a1a22ae43db------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*JMXkqQRdtx-Pqly-WJT9Ig.jpeg</url>
            <title>Stories by Andrew Wells on Medium</title>
            <link>https://medium.com/@wellsleeandrew?source=rss-3a1a22ae43db------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sat, 14 Nov 2026 12:59:02 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@wellsleeandrew/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com/" rel="hub"/>
        <item>
            <title><![CDATA[Developer Process: Build a Personal Toolkit for iOS]]></title>
            <link>https://medium.com/@wellsleeandrew/developer-process-build-a-personal-toolkit-for-ios-78c2e119841d?source=rss-3a1a22ae43db------2</link>
            <guid isPermaLink="false">https://medium.com/p/78c2e119841d</guid>
            <category><![CDATA[personal-development]]></category>
            <category><![CDATA[cocoapods]]></category>
            <category><![CDATA[app-development]]></category>
            <category><![CDATA[developer]]></category>
            <category><![CDATA[ios]]></category>
            <dc:creator><![CDATA[Andrew Wells]]></dc:creator>
            <pubDate>Sun, 26 Aug 2018 22:40:05 GMT</pubDate>
            <atom:updated>2018-08-26T22:40:05.192Z</atom:updated>
            <content:encoded><![CDATA[<p>How often do you find yourself rewriting similar functionality in many of the projects and applications you work on?</p><p>Have you spent hours perfecting a few beautiful components only to have them languish in a forgotten project, or not be used again due to the effort required to recreate them?</p><p>Do you habitually reach for extensions that you expect to be there from other projects, and instead, end up just doing a quick Stack Overflow search for “How do I create a convenience initializer for UIColor to take a hex string again?”</p><p>If so, you are like many other developers out there. Most of us just grit our teeth and redo the work. Sometimes we find comfort in the safe monotony of doing work we know we can do blindfolded.</p><p>However, this can quickly lead to stagnation and become a crutch that hinders our personal development as professional developers.</p><p>If you are interested in reaching the next level then you should consider creating your own utility library(<em>or Toolbelt as I like to call it</em>). Don’t waste time recreating the same thing over and over again. You’ll get greater return on investment of those components that you show a little extra love on. They can be used later on in other projects to add that final bit of polish. Also, the more time you spend fine tuning a specific component can be used later to help another project. Making you look like a superhero to coworkers, bosses, business partners, and friends.</p><h3><strong>What is a Developer Toolkit?</strong></h3><p>It is a collection of libraries that help you develop faster. It should be familiar code that you can easily drop into any project. It should contain base line components to build off of, extensions, and other convenient helpers. It should be constantly updated as you work on other projects.</p><h3>The Plan:</h3><p>Over the next few articles I’ll share with you my experience setting up my Toolbelt. Help you setup your own and give you examples of components you might find useful to include.</p><h3><strong>Getting Started:</strong></h3><p>In order to make our code portable, self-contained, and easy to integrate in other projects, I recommend to setup the library as a CocoaPod.</p><ol><li>Create a Cocoa Pod or Cocoa Touch Framework (<a href="https://guides.cocoapods.org/making/making-a-cocoapod.html">docs</a>)</li><li>Recommend making a UI specific Podfile so you don’t have to import UI into projects that you don’t need. You can further subdivide the code into multiple Podspecs if desired.</li><li>Import any helper classes you might already have. I find that there are a lot of extensions on base Cocoa classes (like String, Data, UIView, etc) that I use often.</li><li>Start building out more and more complex components.</li><li>Import into any project and save time!</li></ol><h3>Splitting the Library into Core and UI:</h3><p>I suggest splitting up the functionality of your library into a Core and a UI Component which will allow you to not only separate concerns, but also, make it so you don’t have to import UI components if not necessary. UI can get very big (especially if you include assets like images).</p><p>You’ll need to generate a separate podspec file for the UI components. Here are examples of my podspec files (Toolbelt.podspec and ToolbeltUI.podspec)</p><p>Now you can import either or both of these libraries by adding the following commands to a projects podfile</p><p>pod &#39;Toolbelt&#39;, :git =&gt; &#39;https://github.com/andrewwells/toolbelt.git&#39;</p><p>pod &#39;ToolbeltUI&#39;, :git =&gt; &#39;https://github.com/andrewwells/toolbelt.git&#39;</p><h3><strong>What to do now:</strong></h3><p>In my initial research I discovered that I would save the most amount of time by beginning with some basic UI components that I use quite frequently in all my projects.</p><p>The first component I build was a generic table view controller. I called it BaseTableViewController. This saved me a lot of hassle of having to setup delegate and datasource methods for every view where I wanted to display lists of data.</p><p>You can checkout the BaseTableViewController on <a href="https://github.com/andrewwells/toolbelt/blob/master/ToolbeltUI/Classes/TableViewController/BaseTableViewController.swift">Github</a>.</p><p>You can also checkout how to use it in the <a href="https://github.com/andrewwells/toolbelt/tree/master/Example">Example</a> app that comes with the project. Please feel free to download the project and play around.</p><h3>What to look forward to:</h3><p>I’ll be developing out my Toolbelt library in a demo Todo application utilizing ReSwift and RxSwift. You can follow along <a href="https://github.com/andrewwells/redeux">here</a>.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=78c2e119841d" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>