I’ve been using OpenCode a lot lately. New projects, side experiments, untangling a codebase I haven’t touched in months. Tried different providers, swapped plugins, reset my opencode.json more times than I care to admit. I finally settled on something that stuck. This is the config I actually ship with every session. Compaction, rules, providers, plugins. The real opencode.json ,…
You just gave your AI agent full bash access and watched it run rm -rf on your project directory. 🤡 This isn’t hypothetical. Matt Shumer’s GPT-5.6-Sol accidentally deleted almost all the files on his Mac . A subagent’s cleanup command expanded $HOME incorrectly and wiped his dev directory. Stories like that make you wonder: what if it happens to you 🤔? Agents with unrestricted…
I was poking around my agent configs the other day and noticed something. Claude Code had one set of rules. Codex had another. There was a copy in .opencode/ that was three months stale. One agent kept pushing the v2 API and another kept generating v1 code. They were not arguing because they disagreed. They were arguing because I handed them different playbooks. The fix is straightforward. One…
You know how it goes. “fix stuff” in the git log. Again. Commit Pilot runs locally, reads your diff, and writes conventional commits. Pick your LLM provider. No data leaves your machine. I hate writing git commit messages. Always have. “fix stuff”, “wip”, “changes”. That’s what my git log looks like. I tell myself I’ll clean it up later.…
Read about how I found a nice privacySensitive() modifier available under SwiftUI and went on to implement it in Jetpack Compose. Note As seen in I was casually scrolling through Linkedin when I came across this nice post by Vincent Pradeilles . The post showcases how SwiftUI has this inbuilt modifier .privacySensitive() that lets you hide sensitive information by adding a single line of code.…
Automate the tedious task of uninstalling Android apps from multiple devices using adb. This guide provides shell functions to list connected devices, search for packages, and uninstall them efficiently, saving Android devs time and frustration. When developing for Android platform you usually would need to deploy your app on multiple devices. This works fine when you use Android Studio as it…
Want to use your local LLM on your phone? This post shows you how to easily share your local web app with the internet using LocalTunnel. Plus, we’ll look at running smaller LLMs directly on your device with PocketPal AI – all offline and private! 🎉 Another one in the series, this time we’ll be looking at how to use local GPTs on your mobile device. I had this desire to extend using a local…
One of the requirements for an app I was working on, was to have a text field that can be expanded to show more text. The pattern seemed to be common in other apps too. This post shows how to build one. Using a 3rd party library is always an option, but this is simple enough that one can create a custom Compose component. This is also just my take at creating such a compose component. Let’s…
When working with Enum serialization using Moshi, it is important to have fallbacks in case the enum value returned in response is not present in the predefined list of enum values. In this post, you will see how to achieve this. Suppose you have an Enum class defined as: enum class Status { ACTIVE , INACTIVE } and the domain model class (with Moshi wired in) is defined as: @JsonClass (…
I wanted to have the ripple effect gone from a composable clickable component. As it turns out the API has changed and often times the first solution that popups when you search for it, is deprecated 🤡 Lets figure out how to remove the ripple effect from a clickable component in 2025! When you create a clickable compose component i.e Button, you will notice that it comes with its own on-click…
Incase you wanted to setup a Follow me on Bluesky or a Share on Bluesky badge in your project’s Readme file or maybe on blog/website, there is a way. Using static badge from Shields.io plus a simple Markdown-foo, you can do so quite easily. Example: Readme.md Web App This post assumes you know how to work with Markdown. Follow me on Bluesky Badge To setup a Follow me on Bluesky badge, you…
Looking for a private, local AI coding assistant? Tabby lets you run a powerful code completion tool entirely on your own machine, no sharing your code. Coding assistants are all the rage nowadays, all thanks to Github Copilot . Coding assistants as basically LLM models that help the developer in writing code. They are trained on code so can predict a lot of logic that developers write daily. Most…
This post is part of a series. TLDR; I want to build cross-platform CLI utility tools that can be compiled on my laptop and run seamlessly on other platforms. Ask anyone what progamming language should a beginner start with and the answer would almost certainly include Python . Python is a very popular programming language with a very mature ecosystem. It is also very easy to learn and to use. It…
This post is part of a series. TLDR; I want to build cross-platform CLI utility tools that can be compiled on my laptop and run seamlessly on other platforms. It is well known that C is an excellent programming language for systems programming, particularly when working with low-level hardware interactions. Its efficiency and flexibility make it a popular choice for developing operating systems,…
This post is part of a series. TLDR; I want to build cross-platform CLI utility tools that can be compiled on my laptop and run seamlessly on other platforms. Rust has been on my radar for picking up as a new programming language to learn for some time now. It is said to be comparable to C/C++ in memory footprint and performance while providing robust memory safety. Rust was initially written for…
This post is part of a series. TLDR; I want to build cross-platform CLI utility tools that can be compiled on my laptop and run seamlessly on other platforms. It is quite obvious for someone reading the blog posts in this series, that the author (me) loves using a lot of CLI tools. Afterall I am going to extents of exploring programming languages that fit my usecase in the best possible manner.…
This post is part of a series. TLDR; I want to build cross-platform CLI utility tools that can be compiled on my laptop and run seamlessly on other platforms. I have some experience working with Flutter, so I have been keeping track of Dart programming language for sometime. Dart in the initial days introduced something called Dart Native, which they eventually rolled back into the dart compiler.…
This post is part of a series. TLDR; I want to build cross-platform CLI utility tools that can be compiled on my laptop and run seamlessly on other platforms. I am an Android Engineer by profession, so my goto language is Kotlin . While looking at other programming languages, I also wanted to take a look at building a CLI tool using Kotlin. Thankfully, there exists Kotlin/Native that does exactly…
This post is part of a series. TLDR; I want to build cross-platform CLI utility tools that can be compiled on my laptop and run seamlessly on other platforms. I like working inside the Terminal app. So obviously I am using a lot of Terminal CLI (Command Line Interface) tools 🧰. To work with these CLI tools, for every usecase there is a small set of shell (bash/zsh) aliases/functions that I have…
Want to ditch the tech giants and control your own AI? This post guides you through running a private, offline GPT model on your local machine using Ollama and Docker. Take back your data and experience AI on your terms! Are you tired of the tech giants having access to your personal data? Are you concerned about snooping and telemetry? Then it’s time to take matters into your own hands by…
Every few years I upgrade my personal device to the next Android phone in the market. Since I do not want to just throw the last device out, I usually keep them around. They are also useful for development purposes. Back in 2017 one of the devices to launch with Android One program was Xiaomi Mi A1 , which was built with joint efforts from Google and Xiaomi. I remember being so hyped up and…
Have you ever wanted to emphasize some console log output with colors? Well, I thought I never would have needed to, but while tinkering with some side project, I found a trick to colorize my console log output. The magic trick is using ANSI Escape Codes . My use-case was to highlight some part of my Groovy task’s output as a yellow colored warning and some errors as red, while working with…
As an Android Engineer, I have to sign Android apps whenever making a public release. The steps are quite simple and well documented on the official website . However the one thing that always comes up how do you provide your signing credentials and keystore file. Lets find out! There 2 common ways this can be done: Using ENV vars (Recommended) Inside your ~/.zshrc or ~/.bashrc file, declare the…
Kotlin Synthetics for Views is deprecated! You can read about it here . That means if you have been using them in your project then you need to replace them with a more recommended approach i.e ViewBindings . There is a migration guide too. But before you can start the migration you need to track down the files where Kotlin Synthetics are being used. Lets find out. Run the below command at the…
Once in a while I notice space occupied in my dev machine to be considerable. Since I am an Android Engineer, I mostly work with Gradle build tool . Gradle maintains a cache of all dependencies it downloads as well as other artifacts such as downloaded wrappers at the path ~/.gradle . Now you’ll be surprized to know how much space this .gradle directory occupies. Lets try to find out.…
Writing documentation is part of almost all developer jobs. Although writing code is the primary focus for any developer, the core understanding/reasoning of the implementation can only be captured in a well-written human-readable documentation. I put emphasis on human-readable because this documentation needs to be understood by, well humans. If we throw in a lot of jargon words, acronyms and…
App Privacy Policy Generator is a simple web app to generate a generic privacy policy for your Android/iOS apps. Backstory It was built with a core idea and vision, to enable indie developers from having to jump through the weeds of legality around putting up a Privacy Policy or Terms & Conditions in their applications. I built this web app because I wanted to do the same and every other…
I have been contributing to the tutorials/infographics/podcasts at Kodeco.com (formerly known as Raywenderlich.com) since 2018. I joined them initially as an Author on the Android team, but since then have now jumped into different roles such as being a Technical Editor, a Final Pass Editor, Co-Host for a season of Kodeco Podcast. I also had the opportunity to join and work as as Final Pass Editor…
Executing tasks and processes is pretty common in the Terminal. Having them run and then pipe the output into another one, transforming the output, triggering a sub-process/task, etc. are some of the usual ways of working with them. That implies that they will most probably won’t finish immediately. Now that is an not much of an issue, but more of an annoyance because you sometimes have to…
TL;DR: I used Google Sheets + Translate + AppScript to build a completely free and robust Automated Android Localization Tool! 🐼 So this started when I found the below tweet: TIL: You can use Google Sheets to translate your strings to multiple languages. *Mind blown* 😮 Seems super handy for indie Android devs when considering simple localization! #google #translate #sheets #localization…
This isn’t a click-bait article! I will explain how to make your Android build time shorter than the reading time of this post (hopefully) 🏃🏻 Android build times are really slow, Ugh. I get it. Especially if you own a low spec machine with 4GB RAM. TL;DR: Build your Android Project via terminal with gradle assembleDebug Read on for the longer version describing how I got to this. Also, make sure…
Lifecycle events in Android. It has been a pain point for Android developers all over the world. It is no brainer that, most of the times the main cause of a memory leak in the codebase is because an invalid state is accessed which is out of sync with the lifecycle of the activity/fragment of the app. What this means is that as an Android Developer you are forced to put up a lot of checks in…
DISCLAIMER: If you consider yourself a beginner, intermediate, expert or a ninja in the Android realm, this secret sauce still applies to you. TL;DR: Build Something No really! I am not kidding here. Hear me out on this. The secret to becoming better at Android development, with all the new shiny stuff being released every year and making you go through the fear of missing out and what not is just…
It all starts when some android developer tries to figure out a solution to a problem he/she is having while building their “Awesome Android App” . During the process, most developers would encounter a couple of issues and in tandem, to those, they would come up with possible solutions. Now here is a thing, if you are like me, who believes that if the problem was big enough for me to…
While working on various projects, there have been times when I have had to implement various gesture-based events. Every time I have had to do that I had to write the whole code for getting the SensorManager and getting access to the SensorEvent , plus the extra logic to detect the gesture. At first, it was just fine to do that since I was a beginner around that time. Then soon I got weary of the…
Most of us are engineers and at the end of the day humans. So basically we all are bound to make mistakes. As an Engineer we make such mistakes in code quite often and even if we do not admit it , they do exist. How many times have you published your code to a public VCS such as Github/Bitbucket with the credentials and then pulled down the repository only to reset the whole history and re-publish…
Lets face it we all have been there , trying to fiddle with managing our emulators and dev devices. And at max we would do is try to manually manage it. Let me make this clear I am not talking about tests here as that’s all related to the code. My focus here is on managing the device/emulator that’s paired with your dev environment/system (..and to your IDE - Android Studio , if you…
If I give you the code of an android app and ask you to provide me information regarding the android app like minSdkVersion , targetSdkVersion , permissions, configurations, almost anyone who knows how to code an android app would provide it to me in a few minutes. But what if I gave you an android apk file and then ask you to answer for the same 🤔 Its tricky if you try to think at the very first…
Agree or not agree, but on an average consensus pretty much every android dev goes through the loop of Update Dependencies.Code.Repeat. for each of his/her android project. Its frustrating, a waste of time and super annoying when you would want to have the same version across all projects. One of such situations that I recently got into was trying to keep all my apps under Android-Examples…
Ok so you already know how to build your android library and publish it to JCenter/MavenCentral. This post is third in parts of a series. P.S. : If you dont know how to , go ahead and have a look Guide to publishing your Android Library via Jcenter/Bintray Guide to publishing your Android Library via MavenCentral Guide to publishing your Android Library via JitPack The very first question that…
If you come from the java world, you would already be knowing about MavenCentral in a big way. MavenCentral is the central repository which hosts all the maven artifacts and one can reference them from anywhere in the world. Android artifacts can also be hosted on MavenCentral in a similar manner. Here I am going to document the process to publish an android library to MavenCentral, as I followed…
NOTE : Jcenter has been sunset . It is encouraged to publish to MavenCentral . You checkout the other guide: Guide to publishing your Android Library via MavenCentral Developers are a different kind of people altogether. They tend to be lazy but strive to be super efficient at the same time . A lot of this can be seen in the Android world where a certain library pops up everyday to solve a…
I am pretty sure you would agree to the fact that the usual javadoc is not a something everyone likes. The colors are what makes it superrrrrrr boring. Yeah , I actually despise those weird colors and the fact that its been around for so long , made me think how to solve this. Also if you try looking it up on the internet there aren’t any solutions that basically solved this in a…
If I were to ask a question to a room filled with android developers “How many of you have been in that place of sheer helplessness and panic when your gradle build fails because of a version conflict in dependencies?” ..I am pretty sure a lot of them would raise their hand or agree to being in that state and the very first action would be to hop onto stackoverflow and search for…
The world of artifacts and the way they make the life of a developer simpler, fascinates me to a great extent. For the same reason I have gone through a lot of good articles online, which explain how the whole process works. However most of the documentation is either not up to date or lacks proper explanation. Personally all I care about is how does it work and how can I make it simpler. Hence I…
Have you ever thought how the central repository works like Maven Central or JCenter? Is it possible to own one for yourself? Do you want to host your artifacts in your own private repository? If your answer is YES , well you are in the right place. I am going to walk you through basic steps involved in setting up your own maven repository where you can publish your artifacts, using all but your…
JACK & JILL are part of the new tool chain for android and in the words of Android Developer Blog they are designed to improve build times and simplify development by reducing dependencies on other tools In case you are curious, JACK stands for Java Android Compiler Kit and JILL stands for Jack Intermediate Library Linker . Woa ..woa..wooaaaa ..thats sounds too technical ..lets slow this down,…
Tired of being tied to your laptop/desktop while debugging your android apps ? Well let me break it to you – You are NOT the FIRST person bugged by this issues. Its a common practice to tether your device via a USB cable to the host machine and debug android apps.Well here is something for you that is going to set you free. Yes literally. You can run adb over WiFi (period) Yes , you read that…