• Lint Revisit: Providing Alternatives 🧙‍♀️

    In my previous post, we updated our TODO Detector to be more flexible. It is also easily extensible so that if we want to include more parameters or perhaps add more checks, we can follow the existing pattern and modify it. For example, what if instead of the date being in parentheses, we want a…

    Read More

  • Lint Me: Test Sources 🖇️

    It has been a year, which means it is once again time to re-examine our TODO Lint rule. TL;DR: The rule checks if a TODO includes mandatory information – an assignee and a date. We have also explored providing alternatives when suggesting quick fixes: A Lint rule with alternative fixes Today we will add another…

    Read More

  • Debugging App Links in Android 12 🔗

    I have been working with deeplinks lately and I noticed that quite a few things have changed since I last worked with them. The most important change is quoted in the list of Android 12 behaviour changes: Starting in Android 12 (API level 31), a generic web intent resolves to an activity in your app…

    Read More

  • Introducing Kempt

    kempt is a little hobby project I’ve put together to get away from Spotless/Gradle and simplify setting up commit hooks across my projects. 💡 TL;DR: kempt is a single-entry point CLI that delegates to language-specific formatters with easy installation, automatic binary management, git hook integration, license headers, whitespace handling, and simple configuration. Spotless (and other…

    Read More

  • How to Take an 11 Month Sabbatical

    A sequel to the last one, but a bit longer. On Leaving Slack After nearly 6 years, I left Slack in August of 2025. It was for a combination of reasons that added up to “it’s time”. The biggest reason was that Salesforce (who acquired Slack while I was there) would not grant tenured/high level…

    Read More

  • 🚇 Metro is Stable

    New here? Metro is a multiplatform, compile-time dependency injection framework for Kotlin implemented as a compiler plugin. Metro 1.0.0 is out now and stable. This means that its runtime APIs (runtime, MetroX artifacts, Gradle plugin, etc.) are now API-stable unless annotated with an experimental annotation. This is an exciting milestone! Metro’s come a long way…

    Read More

  • Metro 0.11.0 and MEEPs!

    Metro 0.11.0 is out now and it’s a fun milestone in Metro’s development. Up to this point most of the work in Metro has been focused around the foundation, interop, and frankly feature parity. It’s in a really good place on that front now! Now, Metro will try to push the envelope and explore more…

    Read More

  • Two Pillars of (Engineering) Management

    A former colleague once described their view of management as a role measured by two* pillars. As an IC, I really like this framing of it and it’s helped me a ton of times in knowing how to best work with different types of EMs over the years. You can kinda think of them on…

    Read More