Blog posts

Empowering Personal AI: A journey with GPT, LLMs, and Beyond

Are you fed up with tech giants hoarding your personal data? Do you worry about being spied on or having telemetry tracking every move you make online? Itโ€™s time to reclaim control over your digital life by running a fully offline GPT model on your own local machine.

Read more โ†’

March 3, 2024

Cross Compilation Adventures

As someone who spends most of their time inside the Terminal app, Iโ€™ve come to appreciate the convenience of using custom CLI tools to streamline my workflow. However, Iโ€™ve always had one major gripe - remembering shell aliases and functions specific to each operating system ( macOS or Linux) is just not a good developer user experience. Thatโ€™s why Iโ€™ve been itching to build my own cross-platform CLI tools that can work seamlessly across different systems.

Read more โ†’

February 18, 2024

Upgrading Xiaomi Mi A1 to Lineage OS

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.

Read more โ†’

August 6, 2022

Signing Android Apps

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!

Read more โ†’

March 3, 2022

Rainbow console logs in Groovy

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 my Android project. The code is quite simple, so lets dive into its implementation right away!

Read more โ†’

March 3, 2022

Hunting Kotlin Synthetics For Views

Kotlin Synthetics for Views is deprecated! You can read about it here.

Read more โ†’

March 2, 2022

Reducing mammoth gradle caches

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.

Read more โ†’

March 1, 2022

How to convert Markdown to PDF

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.

Read more โ†’

April 9, 2021

My Projects: Behind the Scenes

As a Software Engineer, Iโ€™ve had the privilege of working on various projects that have helped shape my skills and interests. In this series of blog posts, Iโ€™ll be taking you behind the scenes to explore some of these projects, share updates, and provide insights into what goes on when building and maintaining open-source software.

Read more โ†’

October 29, 2020

Contribution to Kodeco.com (formerly known as Raywenderlich.com)

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 in the Flutter team ๐Ÿ™‚

Read more โ†’

July 5, 2020

Terminal Foo: Triggering Notifications from CMDLine ๐Ÿ“Ÿ

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 wait for the task to finish to start another one. Ofcourse you can open new terminal windows to execute multiple tasks, however the feedback loop is still missing. I wanted to personally fix this issue for myself. So I set out to find a solution for this.

Read more โ†’

March 1, 2020

Building an automated Android Localization Tool today

TL;DR: I used Google Sheets + Translate + AppScript to build a completely free and robust Automated Android Localization Tool! ๐Ÿผ

Read more โ†’

March 28, 2019

How I reduced my Android build times by 89%

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 to check Bonus section at the end where I reduce the whole build+deployment to device into one command!

Read more โ†’

April 6, 2018

I could not find a simple Gesture Detection android library, so I built one

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 whole boilerplate.

Read more โ†’

February 12, 2017

Rewriting GIT History

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 the new repository with the credentials cleaned out.

Read more โ†’

November 18, 2016

Guide to publishing your Android Library via JitPack

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 people would have is

Read more โ†’

July 29, 2016

Guide to publishing your Android Library via MavenCentral

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 it.

Read more โ†’

July 17, 2016

Guide to publishing your Android Library via Jcenter/Bintray

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 specific problem or to make the complex processes simpler.

Read more โ†’

July 12, 2016

The curious case of dependency conflicts

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 possible solutions in this type of a situation.

Read more โ†’

May 2, 2016

Own a maven repository, like a boss! โ€“ Part 2

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.

Read more โ†’

February 16, 2016

Own a maven repository, like a boss! โ€“ Part 1

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 terminal, git and a public remote repository hosting service of your choice ( i.

Read more โ†’

August 3, 2015

Meet JACK & JILL , Androidโ€™s experimental toolchain

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, right. JACK & JILL were released as an experimental tool chain in the Android SDK 21.

Read more โ†’

July 21, 2015

Life without wires : ADB over WiFi

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)

Read more โ†’

July 9, 2015