• Tracing Gradle task execution

    Gradle provides two built-in mechanisms for tracing your build: –profile and –scan. The former produces a simple HTML report of task execution times. You can get a rough idea of where time was spent but are unlikely to glean any real insights. The latter sends a detailed report to Gradle’s servers (or to a Gradle…

    Read More

  • Java Interoperability Policy for Major Version Updates

    Major version updates to libraries solve the API warts of old and bring shiny new APIs to address previous shortcomings—often in a breaking fashion. Updating an Android or Java app is usually a day or two affair before you reap the benefits. Problems arise, however, when other libraries you depend on have transitive dependencies on…

    Read More

  • Just Say mNo to Hungarian Notation

    Every day new Java code is written for Android apps and libraries which is plagued with an infectious disease: Hungarian notation. The proliferation of Hungarian notation on Android is an accident and its continued justification erroneous. Let’s dispel its common means of advocacy: “The Android Java style guide recommends its use“ There is no such…

    Read More

  • Forcing bytes downward in Okio

    Okio’s BufferedSink is a high-level abstraction for writing binary and character data as bytes. Its design stems from frustrations with the JDK’s java.io.* and java.nio.* libraries. At Droidcon Montreal last year I gave a presentation comparing it with the former, but also showcased Okio’s concept of a segment and how it enables the library to…

    Read More