Here is my blog about various programming-related topics in this blog, mostly focusing on the technical aspects. In my day job, I work on Android applications and AOSP. Off work, I work on various Python scripts, Android apps, Chrome extensions, and command-line utilities.

Take your time in planning, but when you have made your decision be fast in putting it into action. – Strategikon

  • Choosing Between State Based And Op Based Crdts

    In literature, there are two main types of CRDTs commonly described — state-based and op-based. However, there isn't a lot of resources for how to choose between the two. I have collected and digested the relevant resources, and here is my summary.

  • An Intuition On Causal Length Sets

    Causal-Length Sets (CLSets) are a kind of set conflict-free replicated data type (CRDT), which are distributed data structures that guarantees their eventual convergence without locking. There are multiple Set CRDTs out there, ranging from naive but not so useful ones like the grow-only set (not so useful because you cannot remove from them), to Add-wins sets that fully tracks the causality (such that you can only remove elements that you observed) at the cost of keeping more metadata around.

  • Creating Good Leaky Abstractions

    "Leaky abstractions" is a term that is used in software design and API reviews, often to nudge the API designer to hide more of their implementation details away from users of those APIs in order to provide a cleaner interface. Searching on the Internet (and in my personal experience in API reviews), there seem to be a general sentiment that leaky abstractions are bad, and it signifies a poor job by the software designer to protect the purity of their abstractions.

  • Writing Wireshark Extcap In Rust

    Recently I have been working on a project (what is now btsnoop-extcap) that calls for an extcap extension. Having recently learned Rust and really liking that language, I decided to try what it would take to write it in Rust.

  • On Innovators Dilemma

    The Innovator's Dilemma is a classic book that describes how dominant players in particular industries fail and lose their positions to innovating startups despite having orders of magnitude more resources and a much better market position to compete.

  • Generate Sequence Of Days Of Week In Kotlin

    In this post, we will look at how to generate a sequence of days of the week in Kotlin using the WeekFields and DayOfWeek classes. The WeekFields class provides access to the values of the various fields of a week-based calendar system, such as the first day of the week and the number of days in a week, while the DayOfWeek class represents a day of the week in the ISO-8601 calendar system.

  • Scrollmaps Origin Story

    ScrollMaps is a simple browser extension for Chrome and Firefox that allows users to pan the map using the two-finger-scrolling gesture.

  • Open For Business

    I will be writing blog posts about various programming-related topics in this blog, mostly focusing on the technical aspects. In my day job, I work on Android applications and AOSP. Off work, I work on various Python scripts, Android apps, Chrome extensions, and command-line utilities. Stay tuned for more contents!