A brute force method (a.k.a. hack) of detecting which artifacts are being resolved from a Bintray repositories in your Gradle project.

The Context

If you haven’t heard, JFrog is sunsetting Bintray, and which means Bintray repositories (and jcenter) are going away by May, 1st 2021 😱. What is Bintray you ask?

I’ve always liked writing about the work that I do and that all started back in 2012 with my first Blogger post. I remember working on my first Android app with my brother and I was trying to parse some JSON from the Google Finance API, which was proving to be tough so I decided to write about it! It’s been a long journey from that point but It’s nice to see how far I’ve come as an engineer. The places where I’ve shared my work has changed through the years as well. …

Improve how you define dependencies throughout your Android project.

Gradle recently introduced a Kotlin DSL to replace the ever-so-popular Groovy DSL which (almost) no one loves. The main benefit when working with build files in the new system, believe it or not, is code completion. Backed by a powerful language like Kotlin, it’s an absolute pleasure dealing with build files now. So, how can Kotlin DSL make our lives easier? Well, let’s start with where we were at before.

The Old Way

With the Groovy DSL, we’d typically have our dependencies littered around the app. If we’re only using a single module in our project, no big deal. …

Photo by James Coleman on Unsplash

An intro to RoleManager! And a terrible pun that has nothing to do with Resources!

Android Q Preview was released recently, inviting developers to start testing and supporting new APIs! One of these APIs is RoleManager, and as we can gather from the Q-preview documentation:

Android Q introduces a standard facility, roles, that allows the OS to grant apps elevated access to system functions based on well-understood use cases. Semantically, each role represents a common use case, such as playing music, viewing photos in a gallery, or sending SMS messages. If an app loses its role, this elevated access is also revoked. (Link)

In plain english, a role is basically a type of app that…

Long Press to Compare!

A new update is rolling out to the play store!

Direct Download: https://drive.google.com/open?id=1vPlUpqXg7hN0AGZhBe55ES_e6YTzVnD3

Change Log:

  • Adds measuring distance between views by long-press.
  • Adds support for API 23.
  • Adds change log in settings.
  • Improves visibility of view-bounds.
  • Fixes Checkbox not showing up as a subtype of TextView.

Window lets you easily debug layouts with a single long press of the home button.

Over the past few months I’ve been working on the initial release of a new tool, Window. This app overlays rulers and grids on screen, along with info on placement of views within your view hierarchy. The goal of this project is to reduce the time it takes to VQA. VQA? Visual Quality Assurance a.k.a. Pixel Pushing a.k.a. Pulling your hair out for that 1 pixel 😵.

The VQA process is slow

Before the world of Zeplin and Figma, you had redline docs, which were images produced by a designer, and what you’d use to translate the design into something tangible. It had mockups, specs…


Don’t blind your users at 1am, Implement night-mode today!

Looking at an email at 1:00am and having your eyes crawl back into your brain is exactly why implementing night-mode is a great thing to do for your users. Not only that, there are benefits for battery when your user’s device is running an OLED panel!

If you are at the start of implementing night mode, I’d suggesting reading the following article, by Chris Banes, to give you some context and a quick run-through of what you need to do!


You can also take a look at a basic example at the following Github repo: https://github.com/wdziemia/Nightmode

Many Google Apps…

Sourced via Pixabay

Making logs a little more useful with Timber and Android Studio.

Question: How can we make logs more useful?
Answer: Lil Bit O’ Magic

Hiding Timber behind an interface

Let’s say we have an app that is using Timber for logging. We don’t want to call Timber directly so we hide Timber behind an interface. We do this so we can swap out the implementation depending on the environment. We’ll have an Android implementation and a Java implementation. We’ll inject, via Dagger, the Java Impl when running JUnit test and the Android Impl for everything else. So to summarize:

As some may know, I like working and experimenting with UI. This latest experiment is working on a Hacker News concept. It’s not fully fleshed out, just an idea to put out into the universe!


96 x 96

Nothing crazy here. We use the vibrant orange from the website as our background. We then create a lower case h using 8 pixels as the size of our stems & bar, the length of the bar being 12 pixels. Simple!


The introduction of API 26 brought a lot of great features to the Android OS. One specific feature that has been lacking (and a thorn in my side) is proper font support. If you were lucky enough to just need legacy support, like Roboto, then something like johnkil/Android-RobotoTextView would suffice. However, different projects have unique design languages which translates to various typefaces. These same typefaces are not bundled with the Android OS by default, finding yourself in a situation with having to roll your own solution. …

Wojciech Dziemianczyk

Senior Software Engineer @nytimes

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store