<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>TIL with Mohammad</title>
    <link>https://mfaani.com/</link>
    <description>Recent content on TIL with Mohammad</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <lastBuildDate>Wed, 03 Dec 2025 02:26:45 -0500</lastBuildDate><atom:link href="https://mfaani.com/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Part 1 - State Drive Nagiation: Overview</title>
      <link>https://mfaani.com/posts/architecture/1-statedriven-navigation-overview/</link>
      <pubDate>Wed, 03 Dec 2025 02:26:45 -0500</pubDate>
      
      <guid>https://mfaani.com/posts/architecture/1-statedriven-navigation-overview/</guid>
      <description>Why direct view-to-view navigation breaks down at scale, and how a state machine with a dedicated navigation layer creates maintainable, testable mobile apps.</description>
    </item>
    
    <item>
      <title>Part 2 - State Driven Navigation: Tutorial</title>
      <link>https://mfaani.com/posts/architecture/2-statedriven-navigation-tutorial/</link>
      <pubDate>Tue, 02 Dec 2025 02:26:45 -0500</pubDate>
      
      <guid>https://mfaani.com/posts/architecture/2-statedriven-navigation-tutorial/</guid>
      <description>Dead simple, concrete examples of state-driven navigation. Build a 3-screen onboarding flow from scratch.</description>
    </item>
    
    <item>
      <title>What does actor reentrancy mean?</title>
      <link>https://mfaani.com/posts/swift/concurrency/what-does-actor-reentrancy-mean/</link>
      <pubDate>Tue, 11 Nov 2025 06:35:05 -0400</pubDate>
      
      <guid>https://mfaani.com/posts/swift/concurrency/what-does-actor-reentrancy-mean/</guid>
      <description>If you captured any state before doing some async work in your actor, then by the time your task is resumed, your captured state may be stale. This is what actor reentrancy is about. Because of this, you should avoid capturing things that are subject to change before your task is suspended. Instead, only retrieve values after your task is resumed.
The term &amp;ldquo;reentrant&amp;rdquo; literally means &amp;ldquo;able to be entered again.</description>
    </item>
    
    <item>
      <title>Systems Design - Pagination</title>
      <link>https://mfaani.com/posts/interviewing/system-design/pagination/</link>
      <pubDate>Thu, 06 Nov 2025 03:55:58 -0400</pubDate>
      
      <guid>https://mfaani.com/posts/interviewing/system-design/pagination/</guid>
      <description>How does Base 64, cursor collision, security, deletion of a cursor all come together, caching and stale data management</description>
    </item>
    
    <item>
      <title>High Level Anatomy of a Camera Capturing Session</title>
      <link>https://mfaani.com/posts/ios/swiftui-camera-learnings/</link>
      <pubDate>Sat, 02 Aug 2025 11:57:25 -0400</pubDate>
      
      <guid>https://mfaani.com/posts/ios/swiftui-camera-learnings/</guid>
      <description>I used the following tutorial series from Apple on &amp;lsquo;Capturing and Displaying Photos&amp;rsquo;. They&amp;rsquo;re great. Just that it took me a bit to be able to piece together how components from AVFoundation work together.
Working with AVFoundation isn&amp;rsquo;t really the kind where you read documentation and then can piece things together. It&amp;rsquo;s complicated. You might understand an individual step, but won&amp;rsquo;t understand when it should be done. There&amp;rsquo;s just too many components and while it&amp;rsquo;s not low-level, it&amp;rsquo;s certainly a different kind of iOS.</description>
    </item>
    
    <item>
      <title>What Is a Suspension Point In Swift?</title>
      <link>https://mfaani.com/posts/swift/concurrency/what-is-a-suspension-point/</link>
      <pubDate>Thu, 10 Jul 2025 13:48:29 -0400</pubDate>
      
      <guid>https://mfaani.com/posts/swift/concurrency/what-is-a-suspension-point/</guid>
      <description>Ever wondered what is getting suspended when Apple says &amp;#39;suspension point&amp;#39;?</description>
    </item>
    
    <item>
      <title>Live Activities Part 1 - Problem Statement</title>
      <link>https://mfaani.com/posts/liveactivities/1-intro/</link>
      <pubDate>Wed, 16 Apr 2025 08:00:04 -0400</pubDate>
      
      <guid>https://mfaani.com/posts/liveactivities/1-intro/</guid>
      <description>A laundry list on Live Activity challenges</description>
    </item>
    
    <item>
      <title>Live Activities Part 2 - The missing doc</title>
      <link>https://mfaani.com/posts/liveactivities/2-the-missing-doc/</link>
      <pubDate>Wed, 16 Apr 2025 08:00:03 -0400</pubDate>
      
      <guid>https://mfaani.com/posts/liveactivities/2-the-missing-doc/</guid>
      <description>Let&amp;#39;s answer some lesser discussed architectural questions about Live Activities</description>
    </item>
    
    <item>
      <title>Live Activities Part 3 - Development</title>
      <link>https://mfaani.com/posts/liveactivities/3-development/</link>
      <pubDate>Wed, 16 Apr 2025 08:00:02 -0400</pubDate>
      
      <guid>https://mfaani.com/posts/liveactivities/3-development/</guid>
      <description>Some tips for developing live activities and understanding its architecture</description>
    </item>
    
    <item>
      <title>Live Activities Part 4 - Debugging</title>
      <link>https://mfaani.com/posts/liveactivities/4-debugging/</link>
      <pubDate>Wed, 16 Apr 2025 08:00:01 -0400</pubDate>
      
      <guid>https://mfaani.com/posts/liveactivities/4-debugging/</guid>
      <description>Sharing some tips on how to troubleshoot cases where tokens aren&amp;#39;t getting updated or payload isn&amp;#39;t getting updated. Or often payload is delivered but dropped by the app.</description>
    </item>
    
    <item>
      <title>Live Activities Part 5 - The Update Token Problem</title>
      <link>https://mfaani.com/posts/liveactivities/5-product-decisions/</link>
      <pubDate>Wed, 16 Apr 2025 08:00:00 -0400</pubDate>
      
      <guid>https://mfaani.com/posts/liveactivities/5-product-decisions/</guid>
      <description>Key product decisions that may help to achieve a better Live Activity User Experience</description>
    </item>
    
    <item>
      <title>Swift Actors: few random notes</title>
      <link>https://mfaani.com/posts/swift/concurrency/swift-actors-a-few-random-notes/</link>
      <pubDate>Fri, 11 Apr 2025 10:35:05 -0400</pubDate>
      
      <guid>https://mfaani.com/posts/swift/concurrency/swift-actors-a-few-random-notes/</guid>
      <description>Curious about why Swift&amp;#39;s thread-safety mechanism is called an &amp;#39;actor&amp;#39;? This post explores the origin of the name, clarifies common misconceptions, and explains why actors are about more than just asynchronous programming. Discover when to use actors in your Swift code and how they fit into the broader concurrency landscape</description>
    </item>
    
    <item>
      <title>Interviewing - Final Round Learnings</title>
      <link>https://mfaani.com/posts/interviewing/final-round-learning/</link>
      <pubDate>Thu, 06 Mar 2025 03:55:58 -0400</pubDate>
      
      <guid>https://mfaani.com/posts/interviewing/final-round-learning/</guid>
      <description>Discuss all aspects of interview</description>
    </item>
    
    <item>
      <title>Symmetric Tree</title>
      <link>https://mfaani.com/posts/interviewing/trees/symmetric-tree/</link>
      <pubDate>Sun, 12 Jan 2025 14:13:27 -0500</pubDate>
      
      <guid>https://mfaani.com/posts/interviewing/trees/symmetric-tree/</guid>
      <description>A good tree traversal excercise</description>
    </item>
    
    <item>
      <title>Separate Devices, Better Life: Why Personal Freedom Beats Using Your Work MacBook</title>
      <link>https://mfaani.com/posts/career/why-you-should-not-use-companys-macbook-for-personal-usage/</link>
      <pubDate>Wed, 18 Dec 2024 18:10:19 -0500</pubDate>
      
      <guid>https://mfaani.com/posts/career/why-you-should-not-use-companys-macbook-for-personal-usage/</guid>
      <description>Why having your own personal laptop is a game changer</description>
    </item>
    
    <item>
      <title>How to Get Into Software Engineering</title>
      <link>https://mfaani.com/posts/career/how-to-get-into-software-engineering/</link>
      <pubDate>Thu, 12 Dec 2024 22:07:25 -0500</pubDate>
      
      <guid>https://mfaani.com/posts/career/how-to-get-into-software-engineering/</guid>
      <description>most people think you need to study four years to get a job in tech. That&amp;#39;s not true</description>
    </item>
    
    <item>
      <title>Why Can&#39;t You Loop Over Ranges of Characters in Swift</title>
      <link>https://mfaani.com/posts/swift/why-cant-you-loop-over-ranges-of-characters-in-swift/</link>
      <pubDate>Sat, 30 Nov 2024 13:38:24 -0500</pubDate>
      
      <guid>https://mfaani.com/posts/swift/why-cant-you-loop-over-ranges-of-characters-in-swift/</guid>
      <description>Why are Swift Character ranges different from Integer ranges</description>
    </item>
    
    <item>
      <title>How Quantifying Impact Helps Your Career Growth</title>
      <link>https://mfaani.com/posts/career/how-quantifying-impact-helps-your-career-growth/</link>
      <pubDate>Fri, 15 Nov 2024 12:22:07 -0500</pubDate>
      
      <guid>https://mfaani.com/posts/career/how-quantifying-impact-helps-your-career-growth/</guid>
      <description>Often as engineers we do ourselves a disservice and just do the hard work without measuring its impact. This post gives you strategies to promote yourself</description>
    </item>
    
    <item>
      <title>How Do Binaries work together? What breaks ABI?</title>
      <link>https://mfaani.com/posts/devtools/binaries/how-do-binaries-work-together/</link>
      <pubDate>Sun, 20 Oct 2024 15:22:35 -0400</pubDate>
      
      <guid>https://mfaani.com/posts/devtools/binaries/how-do-binaries-work-together/</guid>
      <description>Ever wondered what how two binaries interface with one another? Which changes impact ABI and which don&amp;#39;t?</description>
    </item>
    
    <item>
      <title>Some vs Any</title>
      <link>https://mfaani.com/posts/swift/some-vs-any/</link>
      <pubDate>Wed, 17 Jul 2024 14:26:39 -0400</pubDate>
      
      <guid>https://mfaani.com/posts/swift/some-vs-any/</guid>
      <description>What&amp;#39;s the difference between some and any? Why do they both exist? Which should I prefer using?</description>
    </item>
    
    <item>
      <title>Hugo Post Formatting Basics</title>
      <link>https://mfaani.com/posts/content-creation/everything-i-learned-from-blogging-with-hugo/hugo-post-formatting/</link>
      <pubDate>Fri, 03 May 2024 04:17:58 -0400</pubDate>
      
      <guid>https://mfaani.com/posts/content-creation/everything-i-learned-from-blogging-with-hugo/hugo-post-formatting/</guid>
      <description>How to use frontmatter, shortcodes, make changes to your theme, do syntax highlighting</description>
    </item>
    
    <item>
      <title>Hugo High Level</title>
      <link>https://mfaani.com/posts/content-creation/everything-i-learned-from-blogging-with-hugo/hugo-high-level/</link>
      <pubDate>Tue, 30 Apr 2024 04:17:58 -0400</pubDate>
      
      <guid>https://mfaani.com/posts/content-creation/everything-i-learned-from-blogging-with-hugo/hugo-high-level/</guid>
      <description>How does Hugo work? How are things structured? What are the main building blocks of Hugo?</description>
    </item>
    
    <item>
      <title>Being First is a Game Changer</title>
      <link>https://mfaani.com/posts/career/being-first-is-a-game-changer/</link>
      <pubDate>Wed, 28 Feb 2024 08:56:08 -0500</pubDate>
      
      <guid>https://mfaani.com/posts/career/being-first-is-a-game-changer/</guid>
      <description>Being a good lead is a lot about being first</description>
    </item>
    
    <item>
      <title>The effect of direction on recursion and understanding code - Longest Common Subsequence</title>
      <link>https://mfaani.com/posts/interviewing/dynamic-programming/the-effect-of-direction-on-recursion-and-understanding-code/</link>
      <pubDate>Sat, 02 Dec 2023 17:34:13 -0500</pubDate>
      
      <guid>https://mfaani.com/posts/interviewing/dynamic-programming/the-effect-of-direction-on-recursion-and-understanding-code/</guid>
      <description>Solve a fun challenged named &amp;#39;Longest Common Subsequence&amp;#39; by learning how the direction in recursion can effect your perception but also make comparing code difficult</description>
    </item>
    
    <item>
      <title>Asteroids Collision</title>
      <link>https://mfaani.com/posts/interviewing/arrays/asteroids-collision/</link>
      <pubDate>Mon, 20 Nov 2023 09:00:08 -0500</pubDate>
      
      <guid>https://mfaani.com/posts/interviewing/arrays/asteroids-collision/</guid>
      <description>Of the most fun leetcode challenges I&amp;#39;ve ever done</description>
    </item>
    
    <item>
      <title>How Many Envelopes Can You Fit Into Another?</title>
      <link>https://mfaani.com/posts/interviewing/dynamic-programming/how-many-envelopes-can-you-fit-into-another/</link>
      <pubDate>Sun, 12 Nov 2023 10:40:49 -0400</pubDate>
      
      <guid>https://mfaani.com/posts/interviewing/dynamic-programming/how-many-envelopes-can-you-fit-into-another/</guid>
      <description>Learn how to solve a challenging problem from LeetCode using dynamic programming and binary search. Find the longest increasing sequence of envelopes that can be nested inside each other.</description>
    </item>
    
    <item>
      <title>Longest Increasing Subsequence Length</title>
      <link>https://mfaani.com/posts/interviewing/dynamic-programming/longest-increasing-subsequence-length/</link>
      <pubDate>Sat, 11 Nov 2023 19:30:38 -0500</pubDate>
      
      <guid>https://mfaani.com/posts/interviewing/dynamic-programming/longest-increasing-subsequence-length/</guid>
      <description>Learn how to calculate the longest increasing subsequence. The differences of this with other tree based algorithms and more</description>
    </item>
    
    <item>
      <title>Tips for post creation</title>
      <link>https://mfaani.com/posts/content-creation/everything-i-learned-from-blogging-with-hugo/how-to-start-writing-a-post/</link>
      <pubDate>Sun, 01 Oct 2023 04:17:58 -0400</pubDate>
      
      <guid>https://mfaani.com/posts/content-creation/everything-i-learned-from-blogging-with-hugo/how-to-start-writing-a-post/</guid>
      <description>Discussion about when you should start blogging, the importance of getting early feedback and how to get it, how to market your posts and more</description>
    </item>
    
    <item>
      <title>Tree Basics and some Swift helpers for leetcode</title>
      <link>https://mfaani.com/posts/interviewing/trees/tree-basics/</link>
      <pubDate>Mon, 11 Sep 2023 11:16:01 -0400</pubDate>
      
      <guid>https://mfaani.com/posts/interviewing/trees/tree-basics/</guid>
      <description>Some gotchas with different kinds of trees, tree mappings and traversals</description>
    </item>
    
    <item>
      <title>How Can I Inspect the Size Impact of Symbols in an App Binary: A Practical Guide for Apple Developers</title>
      <link>https://mfaani.com/posts/devtools/optimizing-app-size/how-can-i-inspect-the-size-impact-of-symbols-in-an-app-binary/</link>
      <pubDate>Fri, 11 Aug 2023 16:21:06 -0400</pubDate>
      
      <guid>https://mfaani.com/posts/devtools/optimizing-app-size/how-can-i-inspect-the-size-impact-of-symbols-in-an-app-binary/</guid>
      <description>Learn how to use nm to count extra symbols that impact App Size</description>
    </item>
    
    <item>
      <title>Optimizing Binaries - How Does the Linker Help Reduce App Size? What are the different types of linking - Part Two</title>
      <link>https://mfaani.com/posts/devtools/optimizing-app-size/how-does-the-linker-help-reduce-app-size-part-two/</link>
      <pubDate>Tue, 04 Jul 2023 15:04:28 -0500</pubDate>
      
      <guid>https://mfaani.com/posts/devtools/optimizing-app-size/how-does-the-linker-help-reduce-app-size-part-two/</guid>
      <description>In this post I go through some of differences between the two linkers, their impact on app size and how we should be considerate of stripping symbols</description>
    </item>
    
    <item>
      <title>Optimizing Binaries - How Does the Linker Help Reduce App Size? What are the different types of linking - Part One</title>
      <link>https://mfaani.com/posts/devtools/optimizing-app-size/how-does-the-linker-help-reduce-app-size-part-one/</link>
      <pubDate>Tue, 04 Jul 2023 15:04:27 -0500</pubDate>
      
      <guid>https://mfaani.com/posts/devtools/optimizing-app-size/how-does-the-linker-help-reduce-app-size-part-one/</guid>
      <description>In this post I extract all the good chunks from Apple&amp;#39;s fantastic session on linker and how it does things to reduce app size. I also discuss some of the difference between Compiler and Linker</description>
    </item>
    
    <item>
      <title>Optimizing Binaries - Build Pipeline Jargon</title>
      <link>https://mfaani.com/posts/devtools/optimizing-app-size/jargon/</link>
      <pubDate>Wed, 31 May 2023 09:03:27 -0500</pubDate>
      
      <guid>https://mfaani.com/posts/devtools/optimizing-app-size/jargon/</guid>
      <description>Jargons and Examples of the Xcode Build Pipeline</description>
    </item>
    
    <item>
      <title>Optimizing Binaries - High Level Xcode Build Pipeline</title>
      <link>https://mfaani.com/posts/devtools/optimizing-app-size/build-pipeline/</link>
      <pubDate>Wed, 03 May 2023 15:01:27 -0500</pubDate>
      
      <guid>https://mfaani.com/posts/devtools/optimizing-app-size/build-pipeline/</guid>
      <description>Ever thought what happens under the hood when you build your app?</description>
    </item>
    
    <item>
      <title>Whats the Difference Between an App (bundle) and a Binary</title>
      <link>https://mfaani.com/posts/devtools/whats-the-difference-between-an-app-bundle-and-a-binary/</link>
      <pubDate>Tue, 28 Mar 2023 00:00:37 -0400</pubDate>
      
      <guid>https://mfaani.com/posts/devtools/whats-the-difference-between-an-app-bundle-and-a-binary/</guid>
      <description>How the their internals are different and where they&amp;#39;re used</description>
    </item>
    
    <item>
      <title>The power and expressiveness of Swift ranges</title>
      <link>https://mfaani.com/posts/swift/the-power-and-expressiveness-of-swift-ranges/</link>
      <pubDate>Fri, 10 Mar 2023 09:51:10 -0500</pubDate>
      
      <guid>https://mfaani.com/posts/swift/the-power-and-expressiveness-of-swift-ranges/</guid>
      <description>Ranges in swift are super simple to create. Yet they come in various forms.
let r1 = 1...3 let r2 = 1..&amp;lt;3 let r3 = ...3 let r4 = 3... let r5 = ..&amp;lt;3 They all have range like characteristics, but have slightly different traits. It&amp;rsquo;s because they&amp;rsquo;re actually different types.
Different Range Types let r1 = 1...3 // ClosedRange&amp;lt;Int&amp;gt; let r2 = 1..&amp;lt;3 // Range&amp;lt;Int&amp;gt; let r3 = ...3 // PartialRangeThrough&amp;lt;Int&amp;gt; let r4 = 3.</description>
    </item>
    
    <item>
      <title>How cp case-insensitivity can cause chaos!</title>
      <link>https://mfaani.com/posts/devtools/how-cp-case-insensitivity-can-cause-chaos/</link>
      <pubDate>Tue, 06 Dec 2022 21:20:30 -0500</pubDate>
      
      <guid>https://mfaani.com/posts/devtools/how-cp-case-insensitivity-can-cause-chaos/</guid>
      <description>How cp ends up being dangerous...!</description>
    </item>
    
    <item>
      <title>How to Think Recursively - Part 2</title>
      <link>https://mfaani.com/posts/interviewing/how-to-think-recursively-part2/</link>
      <pubDate>Tue, 15 Nov 2022 16:46:46 -0500</pubDate>
      
      <guid>https://mfaani.com/posts/interviewing/how-to-think-recursively-part2/</guid>
      <description>How to break down a recursive question into smaller pieces. Sophisticated Question.</description>
    </item>
    
    <item>
      <title>How to Think Recursively - Part 1</title>
      <link>https://mfaani.com/posts/interviewing/how-to-think-recursively-part1/</link>
      <pubDate>Tue, 15 Nov 2022 13:15:37 -0400</pubDate>
      
      <guid>https://mfaani.com/posts/interviewing/how-to-think-recursively-part1/</guid>
      <description>How to break down a recursive question into smaller pieces. Easy Question</description>
    </item>
    
    <item>
      <title>Why does pod lib lint suddenly fail to build?</title>
      <link>https://mfaani.com/posts/devtools/why-does-pod-lib-lint-fail-suddenly-fail-to-build/</link>
      <pubDate>Mon, 24 Oct 2022 10:57:20 -0400</pubDate>
      
      <guid>https://mfaani.com/posts/devtools/why-does-pod-lib-lint-fail-suddenly-fail-to-build/</guid>
      <description>Why might pod lib lint fail to build while the app itself builds fine?</description>
    </item>
    
    <item>
      <title>How Understanding State Machines Helps With Building Trees and Graphs</title>
      <link>https://mfaani.com/posts/interviewing/how-understanding-state-machines-helps-with-building-trees-and-graphs/</link>
      <pubDate>Thu, 06 Oct 2022 08:54:48 -0400</pubDate>
      
      <guid>https://mfaani.com/posts/interviewing/how-understanding-state-machines-helps-with-building-trees-and-graphs/</guid>
      <description>A different way of seeing tree explorations</description>
    </item>
    
    <item>
      <title>What Resources Does Apple Provide for teaching iOS to students?</title>
      <link>https://mfaani.com/posts/training/what-resources-does-apple-provide-for-teaching-ios-to-students/</link>
      <pubDate>Wed, 21 Sep 2022 13:45:52 -0400</pubDate>
      
      <guid>https://mfaani.com/posts/training/what-resources-does-apple-provide-for-teaching-ios-to-students/</guid>
      <description>Buried deep under Apple&amp;#39;s K-12 resources?</description>
    </item>
    
    <item>
      <title>Which Way Am I Sorting?</title>
      <link>https://mfaani.com/posts/interviewing/arrays/which-way-am-i-sorting/</link>
      <pubDate>Wed, 03 Aug 2022 08:19:26 -0400</pubDate>
      
      <guid>https://mfaani.com/posts/interviewing/arrays/which-way-am-i-sorting/</guid>
      <description>Ever confused as to what the end result of your sorting is?</description>
    </item>
    
    <item>
      <title>Recover Binary Tree</title>
      <link>https://mfaani.com/posts/interviewing/recover-binary-tree/</link>
      <pubDate>Mon, 27 Jun 2022 09:29:51 -0400</pubDate>
      
      <guid>https://mfaani.com/posts/interviewing/recover-binary-tree/</guid>
      <description>How do you fix a broken binary tree?</description>
    </item>
    
    <item>
      <title>How to Calculate the Middle Index?</title>
      <link>https://mfaani.com/posts/interviewing/how-to-calculate-the-middle-index/</link>
      <pubDate>Sun, 19 Jun 2022 22:55:27 -0400</pubDate>
      
      <guid>https://mfaani.com/posts/interviewing/how-to-calculate-the-middle-index/</guid>
      <description>Are middle indexes always actually the middle index?</description>
    </item>
    
    <item>
      <title>Unicode Security</title>
      <link>https://mfaani.com/posts/unicode-security/</link>
      <pubDate>Fri, 17 Jun 2022 00:06:40 -0400</pubDate>
      
      <guid>https://mfaani.com/posts/unicode-security/</guid>
      <description>How Unicode can cause chaos</description>
    </item>
    
    <item>
      <title>Compress String</title>
      <link>https://mfaani.com/posts/interviewing/challenges/compress-string/</link>
      <pubDate>Wed, 15 Jun 2022 08:27:30 -0400</pubDate>
      
      <guid>https://mfaani.com/posts/interviewing/challenges/compress-string/</guid>
      <description>Most simple compress algorithm</description>
    </item>
    
    <item>
      <title>Check if Two Strings Are One Edit Away</title>
      <link>https://mfaani.com/posts/interviewing/challenges/check-if-two-strings-are-one-edit-away/</link>
      <pubDate>Wed, 15 Jun 2022 06:26:52 -0400</pubDate>
      
      <guid>https://mfaani.com/posts/interviewing/challenges/check-if-two-strings-are-one-edit-away/</guid>
      <description>Learn how to break down a question into smaller pieces</description>
    </item>
    
    <item>
      <title>Swift Strings for iOS interviewing</title>
      <link>https://mfaani.com/posts/interviewing/string/</link>
      <pubDate>Sun, 12 Jun 2022 14:49:48 -0400</pubDate>
      
      <guid>https://mfaani.com/posts/interviewing/string/</guid>
      <description>Some discussion on Unicode and clustering and why converting a string to an array of characters makes things easier</description>
    </item>
    
    <item>
      <title>How to Prepare Yourself as a Podcast Guest?</title>
      <link>https://mfaani.com/posts/content-creation/how-to-prepare-yourself-as-a-podcast-guest/</link>
      <pubDate>Thu, 12 May 2022 05:10:04 -0400</pubDate>
      
      <guid>https://mfaani.com/posts/content-creation/how-to-prepare-yourself-as-a-podcast-guest/</guid>
      <description>If you don&amp;#39;t know anything about Podcasts, let alone how to be a guest on the show, then this post can get you in the right direction.</description>
    </item>
    
    <item>
      <title>What is a Self Contained Build Script?</title>
      <link>https://mfaani.com/posts/what-is-a-self-contained-build-script/</link>
      <pubDate>Fri, 22 Apr 2022 13:11:12 -0400</pubDate>
      
      <guid>https://mfaani.com/posts/what-is-a-self-contained-build-script/</guid>
      <description>Discussion about how to make your script work without interruption or manual intervention</description>
    </item>
    
    <item>
      <title>CurrentValueSubject Example</title>
      <link>https://mfaani.com/posts/currentvaluesubject-example/</link>
      <pubDate>Thu, 14 Apr 2022 15:20:02 -0400</pubDate>
      
      <guid>https://mfaani.com/posts/currentvaluesubject-example/</guid>
      <description>I googled a bit for &amp;ldquo;CurrentValueSubject Example&amp;rdquo;. Surprisingly I wasn&amp;rsquo;t able to find a simple answer. So I created a few examples:
Basic import UIKit import Combine class ViewController: UIViewController { var name = CurrentValueSubject&amp;lt;String, Never&amp;gt;(&amp;#34;Jason&amp;#34;) override func viewDidLoad() { super.viewDidLoad() setup() } func setup() { let _ = name.sink { value in print(value) // Jason, Jason Bourne } name.send(&amp;#34;Jason Bourne&amp;#34;) } } Basically every time you call send on a publisher, the subscriber gets a callback.</description>
    </item>
    
    <item>
      <title>How to cherry-pick a library fix?</title>
      <link>https://mfaani.com/posts/how-to-cherry-pick-a-library-fix/</link>
      <pubDate>Tue, 05 Apr 2022 12:22:16 -0400</pubDate>
      
      <guid>https://mfaani.com/posts/how-to-cherry-pick-a-library-fix/</guid>
      <description>I&amp;rsquo;ve done this so many times, but every time I do it with hesitance. It&amp;rsquo;s usually because I&amp;rsquo;m not certain I&amp;rsquo;m finding the right commit or if I&amp;rsquo;m applying it the right way. These steps explain the process and how to validate that you&amp;rsquo;re doing thins the right way.
 Find out the library version that your release is using. Check out that version of your library. Create a new branch off that version.</description>
    </item>
    
    <item>
      <title>Whats the Difference Between Unowned and Weak References?</title>
      <link>https://mfaani.com/posts/whats-the-difference-between-unowned-and-weak-references/</link>
      <pubDate>Fri, 11 Mar 2022 17:30:09 -0500</pubDate>
      
      <guid>https://mfaani.com/posts/whats-the-difference-between-unowned-and-weak-references/</guid>
      <description>TIL I finally learned when to use unowned as opposed to using weak.
Differences  Under the hood: unowned is essentially a force-unwrap of a weak capture, with all that it entails. Because of this using it slightly more dangerous. Crash danger: Accessing an unowned reference while it&amp;rsquo;s nil will cause a crash. Compilation error: Every weak reference, must be an optional property. Otherwise you&amp;rsquo;ll get a compilation error:  weak var delegate: DataEntryDelegate = DataHandler() // ERROR: &amp;#39;weak&amp;#39; variable should have optional type &amp;#39;DataEntryDelegate?</description>
    </item>
    
    <item>
      <title>How (Fidelity) Stocks Work?</title>
      <link>https://mfaani.com/posts/how-fidelity-stocks-work/</link>
      <pubDate>Wed, 02 Mar 2022 21:50:44 -0500</pubDate>
      
      <guid>https://mfaani.com/posts/how-fidelity-stocks-work/</guid>
      <description>I know this blog is mainly an engineering blog, but this is something I struggled to learn and thought blogging my findings would be helpful for my friends who want to learn about their investments or evaluate and compare offers.
The following are a result of my findings after an hour long phone call with Fidelity representative. I opened the chat section in my browser and asked to speak with someone.</description>
    </item>
    
    <item>
      <title>UIApplication BackgroundTasks Through The Lens of Closures</title>
      <link>https://mfaani.com/posts/uiapplication-backgroundtasks-through-the-lens-of-closures/</link>
      <pubDate>Tue, 22 Feb 2022 09:30:28 -0500</pubDate>
      
      <guid>https://mfaani.com/posts/uiapplication-backgroundtasks-through-the-lens-of-closures/</guid>
      <description>1 - The sync closure func processTwoNumbers(_ num1: Int, _ num2: Int, handler: (Int, Int) -&amp;gt; ()) { handler(num1, num2) } processTwoNumbers(10, 22, handler: { num1, num2 in print(num1 + num2) }) In the above, the handler is called in a sync matter. Same as below
(1...100).forEach { val in print(val) } print(101) Uniqueness: The block passed in is executed immediately at the call site.
2 - The async closure — block isn&amp;rsquo;t stored.</description>
    </item>
    
    <item>
      <title>How to Read Git Documentation</title>
      <link>https://mfaani.com/posts/how-to-read-git-documentation/</link>
      <pubDate>Fri, 11 Feb 2022 08:55:15 -0500</pubDate>
      
      <guid>https://mfaani.com/posts/how-to-read-git-documentation/</guid>
      <description>I was always perplexed with gits documentation. You need another documentation to just understand it. In this post I give tips on how to decipher it.</description>
    </item>
    
    <item>
      <title>What is Manifest.lock File?</title>
      <link>https://mfaani.com/posts/what-is-manifest.lock-file/</link>
      <pubDate>Wed, 09 Feb 2022 06:47:16 -0500</pubDate>
      
      <guid>https://mfaani.com/posts/what-is-manifest.lock-file/</guid>
      <description>In this post I discuss why there are two lockfiles and how that helps CocoaPods maintain integrity across machines</description>
    </item>
    
    <item>
      <title>What is UITransitionView about?</title>
      <link>https://mfaani.com/posts/what-is-uitransitionview-about/</link>
      <pubDate>Tue, 01 Feb 2022 14:21:03 -0500</pubDate>
      
      <guid>https://mfaani.com/posts/what-is-uitransitionview-about/</guid>
      <description>I was using Xcode&amp;rsquo;s View Hierarchy and noticed this UITransitionView in my view hierarchy.
... UIWindow UITransitionView FooVC UITransitionView BarVC This was odd because I was expected a view hierarchy as such:
... UIWindow UITransitionView FooVC BarVC What made it more perplexing was that the canvas was showing things correct, but the View Hierarchy didn&amp;rsquo;t make sense.
To be clear on jargon, the following is the name of each section of Apple&amp;rsquo;s view debugger:</description>
    </item>
    
    <item>
      <title>Why can&#39;t Xcode show the caller?</title>
      <link>https://mfaani.com/posts/why-cant-xcode-show-caller/</link>
      <pubDate>Tue, 04 Jan 2022 22:26:19 -0500</pubDate>
      
      <guid>https://mfaani.com/posts/why-cant-xcode-show-caller/</guid>
      <description>Edit Ever since I&amp;rsquo;ve upgraded to Xcode 16.1 I&amp;rsquo;ve experienced significant issues with finding callers. Yet aside from Xcode being broken, this post is still applicable for having a correct understanding of when / why / how Xcode should and shouldn&amp;rsquo;t work.
Sample Project Download the sample project if you want. You don&amp;rsquo;t have to though. The project doesn&amp;rsquo;t even need to be ran. It&amp;rsquo;s just provided for context.
I&amp;rsquo;m going to discuss two gotchas I hade with Xcode.</description>
    </item>
    
    <item>
      <title>Swift Protocol Compile Time Check</title>
      <link>https://mfaani.com/posts/swift-protocol-compile-time-check/</link>
      <pubDate>Thu, 30 Dec 2021 14:25:11 -0500</pubDate>
      
      <guid>https://mfaani.com/posts/swift-protocol-compile-time-check/</guid>
      <description>I always thought that if you just use {get} on a protocol variable, then you can still set it i.e. it doesn&amp;rsquo;t matter if you give it a setter or not. That&amp;rsquo;s not true. It really depends on which compiler checks come in to place. Compiler checks are different depending on the type you want a variable to be.
Can you guess which of the two snippets will compile?
Snippet A</description>
    </item>
    
    <item>
      <title></title>
      <link>https://mfaani.com/posts/ios/foreground-vs-background-runtime/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://mfaani.com/posts/ios/foreground-vs-background-runtime/</guid>
      <description></description>
    </item>
    
    <item>
      <title>About</title>
      <link>https://mfaani.com/about/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://mfaani.com/about/</guid>
      <description>I’m Mohammad Faani; I’m a husband, a father, local neighborhood friend and a software engineer</description>
    </item>
    
    
    
  </channel>
</rss>
