TWiStErRob

Sabbatical

After being slightly overworked in my last job, I took a short break for a few months. This break was very similar to my previous sabbatical. I wanted to learn a few new things, maintain my hobby projects. Most of the work I’ve done involved Android, Gradle, GitHub Actions, Notion, and many open-source projects on GitHub.

Technologies I up-skilled on:

  • Gradle
  • Android SDK
  • AndroidX libraries
  • Unified Test Platform
  • AGP 7 & 8 APIs
  • GitHub Actions
  • GitHub API
  • Copilot
  • Notion & API
  • GraphQL
  • JQ
  • IntelliJ IDEA & Android Studio plugin development
  • D3.js

Most notable projects completed over these few months:

  • Open Source contributions are too many to count, but based on some rough math, on average I dealt with 2 issues and 2 PRs a day during my sabbatical.
  • Notion: I started using Notion as Life management tool. This involved learning how to set up everything in Notion, from scratch. I also learned how to script Notion via its API, because I had some data points I wanted to import to Databases. I already had a few tasks in GitHub Projects (v2), so I migrated those by using API integrations.
  • Open Sourcing my Projects, I finally got a round tuit! I split out my major projects from my private SVN monorepo and published them on GitHub. Most of the repositories already existed, but they were used for issue tracking only. Sadly this doesn’t make them automatically better, most of the code is still many years old.
  • GitHub Actions, after getting my code published on GitHub, I was able to use GitHub Actions for Continuous Integration. These range from a few-line gradlew build job to running Android UI Tests to a huge compatibility matrix.
  • Renovate was integrated to my repositories to automatically keep them up to date as things are released. If the GitHub Actions workflow passes, it’s good to go! This helps me stay on top of latest dependencies and only occasionally need to step in to fix/migrate breaking changes. This also enables me to use some bleeding edge versions and discover/report issues early.
  • Development Environment I work in has finally started to become version controlled. This means I can easily set up a new machine, or just find and share things that will be helpful in some contexts. I still have ways to go, but it’s been long-overdue.
  • Gradle learnings and contrbutions
    • Learned more about Included builds, Version management (Version Catalogs, Platforms, Dependency Constraints), Precompiled Script Plugins, Settings Plugins, Init Scripts
    • I helped the Gradle Training team to develop training material for Android.
    • Android Gradle plugin
      is being maintained, I’ve fixed a few bugs, and fully migrated to new AGP 7-8 APIs.
    • Gradle Build graph visualization
      was revived, I upgraded legacy code from Gradle 2 to 8, and D3.js 3 to 7.
  • Detekt
    • Based on my contributions the team added me as a Maintainer.
    • I started writing some custom rules for fun to learn about the internals of Detekt.
  • British Citizenship I’ve finally went through to process to become an official Briton, after 11 years of living in the UK.
  • Paparazzi is a screenshot testing library that I contribute to regularly.
  • Razer Chroma: I got a new keyboard, with RGB LEDs, that’s no news, but I also played around programming those lights. See the project for more details.

During these projects I reported numerous bugs and issues at the appropriate places and contributed some PRs as well.

Most notable technologies: Gradle, Android, Kotlin, Detekt, JavaScript, D3.js, SVG, GitHub Actions, Renovate.

Most used tools: IntelliJ IDEA, Android Studio, git, Android Gradle Plugin, Notion

Go to top