• Github Packages: the right tool for the job?

    I’ve been looking for a simple and inexpensive way to host my Kotlin library binaries for some time. Previously I have used JitPack, but there’s no Kotlin multi-platform support. I have tried Bintray in the past but found it to be over-complicated. So, I was left with no good solution for hosting my libraries. Then…

    Read More

  • Kotless, a Nice Surprise

    A couple months ago I wrote an article about an idea for Kotlin “Server-less” Functions. Unbeknownst to me, JetBrains was working on a similar project called Kotless. While not precisely what I had envisioned, this project does seem promising. For more information about Kotless, checkout the following KotlinConf video:

    Read More

  • Concerning Jetpack Compose

    The Jetpack Compose library provides the ability to create declarative and reactive UIs written in Kotlin for Android. It’s another attempt to avoid XML layout files by allowing the creation of layouts in a DSL-esque manner. The library borrows heavily from cross-platform application frameworks like React Native and Flutter, but unlike those frameworks, it is…

    Read More

  • Multi-module Lint Rules Follow Up: Suppressions ☠️

    It has been a hot minute since I posted about writing multi-module Lint rules so it’s time for a follow up. Today’s topic: suppressions! A quick recap of where we are: We have written a Lint rule that checks for usages of deprecated colours (including selectors) in XML files. The rule goes through all modules…

    Read More

  • Bundling Things Nice and Pretty 💝

    Of all the projects that I have worked on over the years, one thing they all have in common is the need to pass things around. Whether passing stuff to an Activity as Intent extras, a Fragment as arguments or its onSaveInstanceState, or even a ViewModel’s SavedStateHandle, the most common way to do it is…

    Read More

  • Making ADB a little bit dynamic 📱

    Android has a lot of tools for developers and one that has been around for as long as I can remember is Android Debug Bridge (adb). It allows you to issue commands to an attached device, such as installing an app or starting an Activity. If I want to test deeplinks, for example, I can…

    Read More

  • Extending an Interactive ADB 🔀

    A few weeks ago, I wrote about a script for making adb a little bit more interactive. The script makes the process of running an adb command much smoother if there are multiple devices attached by presenting a chooser. For example, when sending a deeplink: ➜ ~ deeplink https://zarah.dev Multiple devices found: 1 – R5CR7039LBJ…

    Read More

  • Extended ADB: En Vogue 💃

    Last year, I wrote about an extended adb script. The idea of the script is to make it really easy to issue an adb command even if there are multiple devices attached by presenting a chooser. For example, if I have two physical devices and an emulator and I want to use my deeplink alias,…

    Read More

  • I Dub Thee… Marginally better at RegEx

    Being a perpetual RegEx n00b, one thing I keep on forgetting is that it is easy to get tripped up when extracting information from an input. I always forget that looking for a match does not really just give back just the matching values – they are instead contained in Groups. Matches and Groups and…

    Read More

  • Lint Revisit: TODO Detector v2

    A few years ago, I wrote about writing a Lint rule to validate the format of TODO comments. Whilst I find that Lint is still difficult to grok, I have since learnt a little bit more that I feel a revisit of this rule is warranted. To recap, the rule enforces that all TODOs must…

    Read More