<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Posts on Blog • Ken M. Haggerty</title>
    <link>http://kenmhaggerty.com/blog/post/</link>
    <description>Recent content in Posts on Blog • Ken M. Haggerty</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <lastBuildDate>Sun, 01 May 2022 18:31:22 +0000</lastBuildDate><atom:link href="http://kenmhaggerty.com/blog/post/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>UX &#43; Agile</title>
      <link>http://kenmhaggerty.com/blog/ux-and-agile/</link>
      <pubDate>Sun, 01 May 2022 18:31:22 +0000</pubDate>
      
      <guid>http://kenmhaggerty.com/blog/ux-and-agile/</guid>
      <description>Above A photo of myself in my office at SuprTEK where I was UX Lead on the CAMPS Inc 1 project for the US Air Force. Preface I am writing this blog because I am frustrated and tired of having the same conversation over and over again about how UX ought to be integrated into Agile development practices. I am writing this because, as someone who has worked in every role from UX research and UI design to software development, product management, and requirements management, and on everything from e-commerce to self-driving cars to mobile apps and logistics for the United States Air Force, I feel I offer a somewhat uncommon perspective.</description>
    </item>
    
    <item>
      <title>Stay Organized &#43; Save Time Using pbxproj_organizer.py</title>
      <link>http://kenmhaggerty.com/blog/pbxproj-organizer/</link>
      <pubDate>Fri, 02 Jun 2017 12:24:00 -0400</pubDate>
      
      <guid>http://kenmhaggerty.com/blog/pbxproj-organizer/</guid>
      <description>Recently I&amp;rsquo;ve been trying to keep my commit history clean and organized with better branch management and more frequent commits, but one file kept taking up an inordinate amount of time. Can you guess which one?
 Above Even a small change to your Xcode project can seem to cause a cascade of changes to your project.pbxproj file inside of your .xcodeproj file. Yup, it&amp;rsquo;s project.pbxproj, a hidden file within your project&amp;rsquo;s .</description>
    </item>
    
    <item>
      <title>Custom Navigation Bars Made Easy with UIViewController&#43;CustomNavigationBar</title>
      <link>http://kenmhaggerty.com/blog/custom-uinavigationbar/</link>
      <pubDate>Tue, 27 Sep 2016 15:04:33 -0400</pubDate>
      
      <guid>http://kenmhaggerty.com/blog/custom-uinavigationbar/</guid>
      <description>Navigation bars are everywhere! Just like Helvetica, once you notice them you&amp;rsquo;ll start seeing them wherever you look, or at least in many of your favorite and most-used apps.
 Above The standard navigation bar provided by Apple has four key components: a title or titleView for displaying the title of the current screen; a prompt for providing additional descriptive text; leftBarButtonItems; and rightBarButtonItems. The navigation bar gets the values for these four components from the currently displayed view controller&#39;s navigationItem property.</description>
    </item>
    
    <item>
      <title>Shared Objects In Firebase, Part 2: KMHFirebaseController&#43;ACL</title>
      <link>http://kenmhaggerty.com/blog/firebase-acl-part-2/</link>
      <pubDate>Thu, 04 Aug 2016 17:48:00 -0400</pubDate>
      
      <guid>http://kenmhaggerty.com/blog/firebase-acl-part-2/</guid>
      <description>In Part 1, I outlined how I set security rules and architected my data to allow for ACL-like object sharing in Firebase. However, I never went over how I actually implemented shared objects in Firebase. In this post, I&amp;rsquo;ll go over KMHFirebaseController+ACL, a category built on top of KMHFirebaseController, and explain how it works and how to use it in your app.
How It Works As I described in my previous post, KMHFirebaseController+ACL works by using a set of server-side security rules to limit who can read and write to objects on Firebase.</description>
    </item>
    
    <item>
      <title>Shared Objects In Firebase, Part 1: Security Rules</title>
      <link>http://kenmhaggerty.com/blog/firebase-acl-part-1/</link>
      <pubDate>Tue, 26 Jul 2016 15:57:58 -0400</pubDate>
      
      <guid>http://kenmhaggerty.com/blog/firebase-acl-part-1/</guid>
      <description>Deus Ex Machina: or, in Praise Of Writing  &amp;ldquo;I write entirely to find out what I’m thinking, what I’m looking at, what I see and what it means. What I want and what I fear.&amp;rdquo;
— Joan Didion, &amp;ldquo;Why I Write&amp;rdquo;
 I had originally planned to publish a blog post on my difficulties working with Firebase. I had managed to create a cleaner API for Firebase (KMHFirebaseController), but I struggled to find a way to share objects in Firebase similar to how I did in Parse—i.</description>
    </item>
    
    <item>
      <title>KMHFirebaseController: A Cleaner API For Firebase</title>
      <link>http://kenmhaggerty.com/blog/firebase-controller/</link>
      <pubDate>Mon, 18 Jul 2016 15:21:19 -0400</pubDate>
      
      <guid>http://kenmhaggerty.com/blog/firebase-controller/</guid>
      <description>Firebase is an easy-to-use cross-platform NoSQL database, but even &amp;ldquo;easy-to-use&amp;rdquo; solutions can be &amp;ldquo;tiresome-to-learn&amp;rdquo; and messy when you&amp;rsquo;re used to other tools. While Firebase&amp;rsquo;s existing API is pretty robust, there are definitely some quirks to how it operates. As such, I&amp;rsquo;ve created my own custom interface to make integrating Firebase into your iOS app even easier!
This custom class—called, simply enough, KMHFirebaseController—is available on GitHub. In the past I&amp;rsquo;ve generally kept tools like these to myself (mostly out of lack-of-confidence), but in open sourcing this code I hope I can receive constructive criticism and recommendations for improvement.</description>
    </item>
    
    <item>
      <title>A Better Way To Animate Table View Updates</title>
      <link>http://kenmhaggerty.com/blog/animating-tableview-updates/</link>
      <pubDate>Mon, 04 Jul 2016 17:58:44 -0400</pubDate>
      
      <guid>http://kenmhaggerty.com/blog/animating-tableview-updates/</guid>
      <description>Whenever I find myself re-using a helper method in many of my classes or projects, I like to add it to a shared class I created called KMHGenerics. This class contains generically useful methods so that my actual code can remain as &amp;ldquo;dry&amp;rdquo; as possible.
Today I&amp;rsquo;m going to talk about a method I wrote to animate complex updates to UITableViews. The KMHGenerics class shared here on GitHub includes many other methods too, but I&amp;rsquo;ll save those for another blog post.</description>
    </item>
    
    <item>
      <title>App Architecture (or, Making Sure The Chef Isn&#39;t Performing Heart Surgery)</title>
      <link>http://kenmhaggerty.com/blog/app-architecture/</link>
      <pubDate>Fri, 01 Jul 2016 11:10:04 -0400</pubDate>
      
      <guid>http://kenmhaggerty.com/blog/app-architecture/</guid>
      <description>When I think about classes in Objective-C I imagine running a restaurant. A well run restaurant not only prepares good food but also provides excellent service and manages employees well. A good restaurant also delegates out whatever it cannot or should not do itself. For example: if a guest at your restaurant were in need of medical attention, you would probably call an ambulance and not ask your chef to attempt heart surgery (no matter how good he or she may be with knives).</description>
    </item>
    
  </channel>
</rss>
