manu.show
  • Tags / Topics
    Books iOS Productivity Testing Tools
  • About the Blog
  • Search
✕
    • Testing NotificationCenter: Concurrency vs Threading

      Explaining the differences for effective unit testing of each scenario

      Posted on September 18, 2023

      Post thumbnail
      Post thumbnail
      I want to talk a little bit about testing the code around the NotificationCenter and the differences between notifications that execute code synchronously and asynchronously on a different thread. [Read More]
      Tags:
      • iOS
      • testing
    • StateObject vs ObservedObject

      The differences explained and some mistakes to avoid

      Posted on September 12, 2023

      Post thumbnail
      Post thumbnail
      In this article, we’ll dissect the differences between @StateObject and @ObservedObject, and when to use each. Let’s dive right in! [Read More]
      Tags:
      • iOS
      • testing
    • Self-Hosted Github Actions Runners

      How Going In-House Can Slash Your Build Times

      Posted on September 3, 2023

      Post thumbnail
      Post thumbnail
      The Drawback of GitHub-Hosted Runners [Read More]
      Tags:
      • tools
      • testing
    • Swift Typo Detector

      A tool to get rid of all those typos

      Posted on August 30, 2023

      Post thumbnail
      Post thumbnail
      By this point, we all know and love Xcode’s check spelling while typing feature. [Read More]
      Tags:
      • tools
    • Combine Repository

      Publishing Changes to all the observers

      Posted on August 28, 2023

      Post thumbnail
      Post thumbnail
      In the last article (UI vs API models) we talked briefly about the Repository layer. [Read More]
      Tags:
      • iOS
      • testing
    • UI vs API Models

      A structured approach

      Posted on August 25, 2023

      Post thumbnail
      Post thumbnail
      UI and API models, where are they supposed to live in a codebase? [Read More]
      Tags:
      • iOS
      • testing
    • Use Periphery to find unused code

      Posted on August 21, 2023

      Post thumbnail
      Post thumbnail
      From time to time, it might be a good idea to spend a couple of hours checking if there is some code in the codebase that is not being used anymore. [Read More]
      Tags:
      • iOS
      • tools
    • Improve the build times of your SPM Packages and your apps

      Posted on August 18, 2023

      Post thumbnail
      Post thumbnail
      Get ready to uncover some of the secrets of faster build times – an investment that’s not just about speed, but about creating a more satisfying and efficient development journey for you and your entire team. [Read More]
      Tags:
      • iOS
      • tools
      • productivity
    • Use FastLane to create PRs

      Posted on August 12, 2023

      This is a guide on how to set up a fastlane lane to create pull requests: [Read More]
      Tags:
      • tools
      • productivity
    • New App - NotificationCenter protocols

      Posted on August 12, 2023

      When starting a new app, I always bring these NotificationCenter protocols into the project. [Read More]
      Tags:
      • iOS
      • testing
    • Fix to SwiftUI encountered an issue when pushing a NavigationLink

      Posted on August 12, 2023

      Note: This issue will be automatically solved when using iOS16+ as target, given the NavigationLink’s init(destination:isActive:label:) has been deprecated. [Read More]
      Tags:
      • iOS
    • New App - Document Best Practices

      Posted on August 4, 2023

      Recently, I stumbled upon Lickability’s repository on swift-best-practices, and it got me thinking about my own Contributing guidelines that I wrote a while back. I realized they might not be as scalable as I’d like them to be over time. [Read More]
      Tags:
      • iOS
      • productivity
      • tools
    • Future-Proof enum decoding

      Posted on August 4, 2023

      When working with String enums that have a finite number of cases, it’s crucial to include an unknown case as a catch-all for potential future values. This practice helps future-proof our apps against updates or changes on the backend that may introduce new enum values. [Read More]
      Tags:
      • iOS
      • testing
    • How to create a Windows 11 bootable USB drive using Ubuntu

      Posted on July 28, 2023

      I recently had to install Windows 11 on a FreeDOS machine, and I hit a lot a couple of walls in the process: [Read More]
      Tags:
      • tools
    • Build Phase to enforce minimum SwiftLint version

      Posted on July 23, 2023

      If your team is using brew to install SwiftLint, you might run into scenarios where different developers run different versions of the linter. [Read More]
      Tags:
      • iOS
      • tools
    • New App - Configuring SwiftFormat

      Posted on July 22, 2023

      When starting a new app, I usually like to set up an automatic code formatter. By agreeing with your team about the rules, and setting a tool to automatically enforce them, you can avoid formatting discussions in the PRs, and you can achieve a codebase where every file looks similar in format. [Read More]
      Tags:
      • iOS
      • tools
    • The Compound Effect

      Posted on July 16, 2023

      Post thumbnail
      Post thumbnail
      These are some notes from the book: The Compound Effect by Darren Hardy. [Read More]
      Tags:
      • books
    • New App - Number Formatters

      Posted on June 12, 2023

      When starting a new app, it’s important to decide how it’s going to handle and display numbers. Once that has been decided, you can add some practic static NumberFormatters that encapsulate that decisions to reuse across the app. [Read More]
      Tags:
      • iOS
      • testing
    • Die with Zero

      Posted on June 11, 2023

      Post thumbnail
      Post thumbnail
      These are some notes from the book: Die with Zero by Bill Perkins. [Read More]
      Tags:
      • books
    • Brain Rules

      Posted on June 9, 2023

      Post thumbnail
      Post thumbnail
      These are some notes from the book: Brain Rules by John Medina. [Read More]
      Tags:
      • books
    • Hyperfocus

      Posted on June 3, 2023

      Post thumbnail
      Post thumbnail
      These are some notes from the book: Hyperfocus by Chris Bailey. [Read More]
      Tags:
      • books
    • NetworkLogger: Adding debug information to your network calls

      Posted on May 27, 2023

      Post thumbnail
      Post thumbnail
      When developing Swift applications that involve network communication, it’s often essential to have visibility into the details of the network requests and responses. This includes information such as HTTP headers, URLs, request bodies, and response data. In order to facilitate this logging process, I have created a simple and lightweight struct called NetworkLogger as part of the CoreNetworking library. [Read More]
      Tags:
      • iOS
      • tools
    • Excellent Advice for Living

      Posted on May 24, 2023

      These are some notes from the book: Excellent Advice for Living by Kevin Kelly. [Read More]
      Tags:
      • books
    • The Joy of Less

      Posted on May 20, 2023

      These are some notes from the book: The Joy of Less: A Minimalist Guide to Declutter, Organize, and Simplify by Francine Jay. [Read More]
      Tags:
      • books
    • The Definition of Done

      Posted on May 13, 2023

      Introduction: I want to talk a little bit about the Definition of Done, or, in other words, when can we consider that a task is completed. [Read More]
      Tags:
      • productivity
      • iOS
      • tools
    • New App - Console Logger

      Posted on May 6, 2023

      Introduction: When starting a new app, I usually like to set up a console logger right from the scratch. [Read More]
      Tags:
      • iOS
      • tools
    • SwiftUI: Using a Repository as the single source of truth

      Posted on April 30, 2023

      Introduction: In a SwiftUI app, it is important to have a single source of truth for the app’s data. This ensures that all views and components that rely on the data are always in sync, preventing inconsistencies and bugs. One way to achieve this is by using a Repository object to manage the app’s data. In this article, we’ll explore how to use a Repository object to hold the single source of truth for a SwiftUI app, based on the code in this repository: https://github.com/mdb1/SwiftUI-RepositoryExample [Read More]
      Tags:
      • iOS
    • UserPreferences: A wrapper for UserDefaults

      Posted on April 18, 2023

      UserDefaults is a great way to store and retrieve app settings and user preferences in iOS apps. However, working with it can sometimes be a bit verbose, especially if you need to store or retrieve multiple values. [Read More]
      Tags:
      • iOS
      • testing
    • ViewStateController: Debug State

      Posted on April 11, 2023

      In our previous posts, we discussed the ViewStateController package, which allows us to add consistent loading and error states to our SwiftUI views. Today we’ll explore a new feature of the framework, the DebugState modifier, which provides an easy way to debug the state of a view. [Read More]
      Tags:
      • iOS
      • testing
    • How to keep up with the industry standards

      Posted on April 4, 2023

      Staying up-to-date with the latest iOS industry standards is essential for any iOS developer. Apple’s mobile operating system is constantly evolving, and keeping up with the changes is crucial for maintaining a competitive edge in the industry. With new updates, features, and technologies being released every year, it’s important to have a systematic approach to staying informed. [Read More]
      Tags:
      • productivity
      • iOS
    • Configuring a new MacBook

      Posted on March 18, 2023

      Configuring a New MacBook: 5 Steps to Follow [Read More]
      Tags:
      • productivity
      • tools
    • My Xcode Setup and Shortcuts

      Posted on March 14, 2023

      In this article, we’ll explore some of the Xcode configurations and shortcuts that I find most useful and that can save you time and effort when working on your projects. [Read More]
      Tags:
      • iOS
      • tools
      • productivity
    • New App - Toasts

      Posted on March 8, 2023

      When starting a new app, I like to have a toast displaying mechanism in-place. [Read More]
      Tags:
      • iOS
    • ViewStateController: Reusable State Management for SwiftUI

      Posted on March 4, 2023

      I’ve been thinking for a while now on how most of the SwiftUI views that depend on a state end up looking pretty similar. Example (using the ViewState enum): switch viewModel.state { case .initial: EmptyView() case .loading: ProgressView() case let .loaded(fact): Text(fact.fact) case .error: Text("Error") .foregroundColor(.red) } [Read More]
      Tags:
      • iOS
      • testing
    • Enhancing Testability with protocols

      Posted on February 13, 2023

      In the last post we’ve discussed hot to enhance testability without using protocols. In this one, we will build something similar but using protocols instead. [Read More]
      Tags:
      • iOS
      • testing
    • Enhancing Testability without protocols

      Posted on February 3, 2023

      We have all used protocols to enhance testability in our apps, but that can become too verbose, and add extra layers of abstractions to the code. [Read More]
      Tags:
      • iOS
      • testing
    • New App - Testing Helpers

      Posted on February 2, 2023

      When starting a new app, I like to have some XCTest helpers to enhance testability. [Read More]
      Tags:
      • iOS
      • testing
    • New App - Xcode Templates

      Posted on January 27, 2023

      When starting a new app, after deciding which based design pattern you are going to use for the views, you can create some Xcode templates to help standardize how the files are written and speed up development. [Read More]
      Tags:
      • iOS
      • tools
    • New App - Fonts

      Posted on January 20, 2023

      When starting a new app, you need to decide which fonts/typographies the app is going to use. [Read More]
      Tags:
      • iOS
    • New App - Json Encoder/Decoder

      Posted on January 10, 2023

      When starting a new app, I like to have static methods to retrieve the reusable JsonEncoder and JsonDecoder objects already configured. [Read More]
      Tags:
      • iOS
    • New App - Date Formatters

      Posted on January 10, 2023

      When starting a new app, it’s important to decide how it’s going to handle and display dates. Once that has been decided, you can add some practic static DateFormatters that encapsulate that decisions to reuse across the app. [Read More]
      Tags:
      • iOS
    • New App - Pull Request Template

      Posted on January 9, 2023

      When starting a new app, I like to set up the Pull Request Template, so we can set up so common ground rules for the project. [Read More]
      Tags:
      • iOS
      • productivity
      • tools
    • New App - View State

      Posted on January 8, 2023

      When starting a new SwiftUI app, I like to have a reusable approach for managing the view state using generics. [Read More]
      Tags:
      • iOS
    • New App - Components

      Posted on January 4, 2023

      When starting a new app, I like to have some reusable components ready to use. [Read More]
      Tags:
      • iOS
    • New App - View Modifiers

      Posted on January 3, 2023

      When starting a new app, I like to have some handy view modifiers to avoid duplicating code in different places. [Read More]
      Tags:
      • iOS
    • New App - Contributing Guidelines

      Posted on January 2, 2023

      When starting a new app, it’s important to write the contributing guidelines to help your team do good work, and keep a consistent codebase over time. [Read More]
      Tags:
      • iOS
    • New App - Build Tools

      Posted on January 1, 2023

      When starting a new app, it’s important to set up the right set of build tools. This will help you and your team follow the same set of rules, so the app will feel more consistent. [Read More]
      Tags:
      • iOS
      • productivity
      • tools
    • New App - Localization

      Posted on December 27, 2022

      When starting a new app, it’s important to have a mechanism in place for Localization. In this case, we will keep it simple by having a local Localizable file, with one variation in English and one in Spanish. [Read More]
      Tags:
      • iOS
    • New App - Constants

      Posted on December 24, 2022

      When starting a new app, it’s important to set the constants that will be shared across the app correcly: [Read More]
      Tags:
      • iOS
    • New App Checklist

      Posted on December 24, 2022

      Post thumbnail
      Post thumbnail
      The idea of this post is to provide a list of things I like to have in-place when starting a new app from scratch. [Read More]
      Tags:
      • iOS
      • testing
    • User Guide to Working with Manu

      Posted on October 29, 2022

      This is a set of guidelines on how I like the team-work to happen. I’d like to hear your thoughts, ideas, and your guidelines after you read it. [Read More]
      Tags:
      • productivity
      • tools
    • H Mode

      Posted on October 26, 2022

      H mode is a protocol/framework to follow in order to get things done. [Read More]
      Tags:
      • productivity
      • tools
    • The Charisma Myth

      Posted on September 26, 2022

      These are some notes based on the book: The Charisma Myth. [Read More]
      Tags:
      • books
    • @Published property wrapper

      Posted on September 22, 2022

      These are some notes based on SwiftLee’s great article: @Published risks and usage explained with code examples. [Read More]
      Tags:
      • iOS
    • Hot Reload in Swift!

      Posted on June 16, 2022

      We finally have Hot Reload for Swift applications, thanks to the Inject tool written by Krzysztof Zabłocki, the great mind behind other amazing tools, like Sourcery. [Read More]
      Tags:
      • iOS
      • tools
    • Test private properties using Mirror

      Posted on May 28, 2022

      In this post, we’ll learn how we can add unit tests to private properties without compromising their access level. [Read More]
      Tags:
      • iOS
      • testing
    • Add an Example App to an SPM Package

      Posted on March 27, 2022

      Creating the Package [Read More]
      Tags:
      • iOS
    • Fix your app's crashes with Xcode Organizer's help

      Posted on March 25, 2022

      A really fast and easy way to getyour app’s crash logs is built-in right in Xcode. [Read More]
      Tags:
      • iOS
    • Using Siri's voice to speak in your app

      Posted on March 17, 2022

      It’s really easy to use Apple’s Speech mechanism to make your app read text out loud to the users: [Read More]
      Tags:
      • iOS
    • The Code Review Process

      Posted on March 10, 2022

      No matter how experienced we are, we will make mistakes at work. [Read More]
      Tags:
      • iOS
      • productivity
    • Rules and Habits for a better life

      Posted on January 15, 2022

      Hi there! 👋 [Read More]
      Tags:
      • productivity
    • Email me
    • RSS
    • GitHub
    • Twitter

    Manu Herrera  •  2023  •  Edit page

    Powered by Beautiful Jekyll