I recently switched my shell from Bash to Zsh, and after installing my new favorite extensions (Powerlevel10k and Meslo Nerd Font), I realized I was missing a key component from Bash: Git completion.
Since we don’t all have the luxury of running brew install bash-completion
and following the associated directions, I’ll discuss how I manually installed the shell scripts necessary to support Git completion in Zsh.
The Git community maintains all the shell completion scripts in their repository on GitHub. Navigating to this folder reveals scripts for a variety of shells, including Bash and Zsh.
Sometimes, you have to say it straight: Google does not build Android with unit testing in mind. Even as recently as API 30, the platform continues to evolve in this unfortunate direction, making critical components of your app increasingly challenging to test. Thus, if you want to build an app with 95% or higher code coverage, then the burden lies with the app developer to make this a reality.
Yet is it such a burden to achieve such a respectable amount of code coverage? …
Git is full of useful commands, powerful capabilities, and often overlooked features. One of its hidden gems is its ability to sign commits and tags with a key. For this job, Git turns to GPG, a widely-adopted and open-source program designed for tasks such as this.
The team behind GPG, or the GNU Privacy Guard, describes it as a program that “allows you to encrypt and sign your data and communications.” This tool is useful for securing and cryptographically validating data sent via messaging applications, emails, and version-control systems, such as Git. …
When it comes to setting up the Android emulator on a computer, most online tutorials start with “Download Android Studio.” Subsequent steps explain how to use the interface to pick the API and device profile before finally creating the AVD.
Point and click solutions often work well for the visual user or in cases where a one-time setup is all that is necessary to bootstrap a configuration for later use. Unfortunately, running UI tests on a CI or setting up a host of CIs for your team’s use, caters neither to the visual user nor to the prospect of doing…
You can find a Gradle plugin to do just about anything with Java. If you have ever worked on any modern Java application with this build tool, then you are no doubt accustomed to importing and applying plugins to the top of your .gradle
files before you can build.
However, in some cases, you’ll encounter a missing link that cannot be adequately addressed by anything on the web. I have encountered this situation several times and was surprised how easy it was to mend this discrepancy.
There are a few concepts I’ll discuss which do not readily appear in the…
With the introduction of Android Jetpack, developers now have a marvelous new set of libraries which offer an unprecedented level of simplicity and reusability. Before Jetpack’s debut, fragment and activity-based navigation often proved to be complicated, fragile, and nearly unique to each app on the market. Google has heard our pleas for help and given us the Navigation Component.
Since the preliminary release of the navigation component in May 2018, much of its functionality has improved, changed, and expanded. As of November 2020, the current state of this library offers native support for these destination types:
Gradle is a powerful build tool that reigns as the dominant choice among Android developers. Despite its popularity, the complexity of fine-tuned optimizations can sometimes baffle newer engineers.
One circumstance had me and my team at UPMC Enterprises scratching our heads for weeks. We needed to conditionally include or exclude entire plugins and their associated configurations from our build based on the selected type or product flavor.
Anyone who uses Gradle should know that most builds include at least one plugin. For Android, at least, it is common to see these plugins applied at the top of a configuration file:
I’m connecting people with technology, seamlessly. Since 2008, I’ve been a software architect and a leading engineer, delivering smart and intuitive software.