Tech

  • Posted on

    When project labels are not just to categorize things

    Whether you are a fan of Github, Gitlab, BitBucket, or any git-based repo hosting platform, I am sure you must be farmiliar with project labels. Categorizing (messy) project issues A common use case of project labels is to categorize project issues of a repo. For engineering discussion, we use Slack (or any alternative for instant messaging platform) only for quick discussions. Those usually end shortly. If such a discussion become lengthy, probably you used the wrong communication channel 😀?

  • Posted on

    When iOS CI/CD config is not just a file or a dashboard

    A while ago, when I heard the term “CI/CD”, I always thought of a dashboard to drag and drop, upload certificates and input the scheme… blah blah. That’s all! And I was kinda believe that a good CI/CD platform must be like that: convenient, as few setups as possible. Now, I have a different viewpoint. What I very much expect in a CI/CD platform is the ability to customize workflow.

  • Posted on

    Tản mạn: chuyện Gitlab

    1 Khi mình join team, công ty mình host các projects trên Github. Một dev mới vào công ty sẽ được add tài khoản Github cá nhân mình vào tài khoản organization của công ty. Lúc ấy, trên Github profile của bạn sẽ hiển thị membership với công ty (bạn phải public cái membership thì người khác mới thấy được nha). Nếu bạn làm cho công ty nào ok, hoặc thuộc dạng top-notch trong nước/khu vực, thì Github profile của bạn sẽ có-vẻ đẹp hơn một tí.

  • Posted on

    Random thoughts on being a CI engineer

    In this post, I am going to talk about my experiences when working with CI/CD for iOS applications and some valuable lessons I learned. 1 In the past few months, I have been intensively working on CI/CD features in my team. My teammates sometimes refer to me as “the CI guy”. Before me, “the CI guy” was someone else who is humble, and quiet. After he left the company, I became the main PIC for CI/CD-related issues.

  • Posted on

    Swift: The downsides of lazy var (part 2)

    Continue from the previous post, we will look into a few problems when working with lazy var…

  • Posted on

    Swift: The downsides of lazy var (part 1)

    Lazy evaluation is a really powerful technique which enhances app performance by avoiding unecessary computation. In Swift, apart from this advantage, it also brings convenience when it comes to coding style…

  • Posted on

    Config: Run shell script on login

    Sometimes, I got frustrated with the fact that my SSH keys were cleared from agents after rebooting. As a result, I had to manually add those keys to agents every time my computer restarted (although it’s not occasional)… It’s best to automate such tasks - I thought. So, I asked “how to run a shell script on login?”. And here are some solutions

  • Posted on

    Markov chain: What is a Markov chain?

    Markov chain is a very important piece of probability and statistics. One application we could name is Markov Decision Process (MDP) used for decision making. Another one is Markov chain Monte Carlo (MCMC), a popular sampling method in statistics. You may also know Google PageRank algorithm, which is part of the ground of Google indexing technology. The algorithm is implemented on top of this concept…

  • Posted on

    Indicator r.v.s and the fundamental bridge

    Expectation (also called expected value or mean) is a very important concept in probability and statistics. One usage we could name is estimation in statistics in which we try to infer the parameters of a statistical model. Another simple application is the step of sanity checks in training a nerual network: verify if the loss function gives a value which is acceptably around its expectation…

  • Posted on

    MVVM best practice: Inputs - Outputs

    When it comes to iOS architecture, MVVM is one of the most favorable candidates. Not only does it provide higher testability than MVC but also this architecture is lightweight as compared to its counterparts such as VIPER. Despite that, proper approaches should be adopted to take advantage of MVVM. Otherwise, we could end up with an alike version of MVC with an additional component (ViewModel).