Blog Reading List Twitter LinkedIn
  • August 12, 2022

    APH: Avoidable Person-Hours

    A couple of years ago, I made up a new unit to measure the efficiency and necessity of meetings: APH (Avoided Person-Hours)

    Meting
  • August 5, 2022

    make up your knapsack

    What I know about myself is that my decision-making capacity at any given moment is limited. I’ve started seeing my capacity as a knapsack.

    decision-making
  • June 21, 2020

    SwiftUI: Double-Edged Sword

    One reason that I favor SwiftUI over UIKit is that SwiftUI is architecture-less.

    swiftui uikit architecture
  • April 26, 2020

    salary: confidential

    Recently, I disclosed my salary to someone and I couldn’t help myself asking if it was the right decision.

    salary job
  • January 19, 2020

    awkward phase

    • Are you switching from your old architecture to a new elegant sophisticated promising one?
    • Are you moving from an inconsistent non-scalable UI to a design system based UI?
    • Are you swapping an old deprecated module with a brand new fresh one?
    • Are you migrating from an old fashion document-less backend to a new shining cutting-edge one?

    So you’re in an awkward phase. Aren’t you?

    software engineering architecture refactor design
  • August 23, 2019

    apple doesn't slow iPhone down, we do

    There has always been a conspiracy that Apple deliberatly slows iPhone devies down to make people to buy new one. Is it true?

    iOS Apple performance
  • June 23, 2019

    daily standup: where scrum flys or dies

    It was roughly nine years ago when I attended my first official Scrum Daily Standup. I among my four teammates went to our manager office at 10 in the morning. After 10min, when we were done, I felt it was useless. Since then (almost) in every company I worked at, we had some kind of daily standup. Except for a few times, I never enjoyed being in a standup.

    scrum agile team
  • June 9, 2019

    a dead simple solution to lift up errors in ios

    In this post, I want to show you how you can utilize the responder chain to bubble up an error message through your app UI structure till it gets to the node which can handle it. It is especially useful if you are a fan of Container View Controller.

    UIKit Swift iOS
  • June 2, 2019

    __NSSingleObjectArrayI: an existential crisis

    When you create an new instance of NSArray, inside arrayWithObjects:count: (which can be called directly and is called indirectly by other constructors and also is that method is used internally to create an array from a literal array) depending on how many items it has, under the hood NSArray may create either an instance of __NSArrayI(Runtime Header file) or an instance of __NSSingleObjectArrayI (Runtime Header file). Actually, if the array contains one item, NSArray create an instance of __NSSingleObjectArrayI, otherwise __NSArrayI gets used.

    Objective-C iOS Foundation
  • May 26, 2019

    bash: going down the rabbit hole

    Question

    Last week when I was looking at a bash script file, I saw this line:

    [[ $FOLDER_NAME == "ios" ]] && lib="lib-osx-amd64" || lib="lib-linux32"
    

    I’m not a bash expert, so this line caught my attention. At first, I thought what A && B || C does is similar to what A ? B : C in many programming languages does. It takes a few hours of debugging, reading and thinking to realize this hypothesis was wrong!

    bash
  • May 19, 2019

    one small change for xcode, one giant leap for productivity

    Last week I learned something that in the future can potentially save hours of my life that otherwise, I would have to spend for preparing an app for testing or taking screenshots. It was really simple and it has been always there, but I hadn’t noticed till last week. XCode allows you to take a snapshot of the state of the app you are developing and restore it later when you run the app or run the tests. Pretty cool! Isn’t it?

    Xcode iOS test
  • May 12, 2019

    solving the mystry case of `print(!)` using ast

    It all started when I mistakenly removed date from this line of code just before pressing Run button of XCode:

    print(date!)
    

    Swift iOS compiler
  • May 4, 2019

    api design: in search of confidence

    A given API to be well-designed has to fulfill many requirements and we can talk about these requirements for hours. But here I’m going to talk about one aspect of a well-thought and well-design API that I believe is really important: How confident users are in what they are doing?

    API Objective-C
  • April 27, 2019

    the curious case of nil-coalescing operator

    Using ?? within a class initializer under some circumstances leads to an ambiguous compiler error message.

    Swift
  • April 21, 2019

    a tale of two `self`

    A while ago, I came across a problematic piece of code that turned out to be an interesting one:

    extension UIViewController {
        static var screenName = String(describing: self)
    }
    

    The value of screenName is always equal to (Function). But what I needed was the type of UIViewController instance as a String.

    Swift Objective-C
  • April 14, 2019

    firebase sdk: one repository, multiple pods

    Honestly, when I learned how Firebase SDK has been organized as a single repository that contains multiple pods, I found it really neat and efficient. Let’s check it out.

    Cocoapod API Firebase