Background

  • I started with Android app development in 2017, out of the curiosity to run ‘my own app on my phone’. Starting with simpler apps like a flashlight, battery-full alarm, a TODO app, I levelled up by learning Firebase, RecyclerView and new Jetpack components by the beginning of 2019. This was at our home in Thane, India.

  • In the mid of 2018, I saw this video by ColdFusion titled What is Artificial Intelligence Exactly? and was mind-blown by the concept of AI. I started exploring ML, eventually discovering scikit-learn and TensorFlow through Josh Gordon’s Machine Learning Recipes playlist on YT. I dived deep into ML and TensorFlow, until 2019, when I realized: “Why not build an Android app that uses my text-classifier built with TF?”

  • This led me into on-device ML, specifically, TensorFlow Lite at the moment. TF Lite was pretty young back then, and didn’t even support RNN/LSTM operations. To execute my models on live camera-feed, I learnt the newly introduced CameraX library. In 2020, I built my first popular on-device ML project, FaceRecognition_With_FaceNet_Android which now has the highest number of ⭐ across my GitHub repos.

  • Now in 2020, our schools shut down due to COVID, and I got an opportunity to intern at AjnaLens. The experience was novel, as for the first time, an hobbyist programming kid was working with employees of a startup, and getting paid! The year went on, with me getting my first freelancing project from Daniel Vadranapu in which I had to modify some parts of my face-recognition project. I got many gigs following that, for the same project. In 2021, I had my JEE and CET exams that are important in getting admission to a undergrad course at a good university in India. I managed to pass those exams with good marks (above-average kind of) and started my undergraduate course in CS at a college in Pune, India in December 2021.

  • Fast forward to 2023, at college, I formally studied subjects like OOP (with C++), DBMS, CN and DSA that strengthened my knowledge and allowed me to think outside of the Android-ML world in which I had lived for the past 4 years. Understanding how memory-management and operating-systems worked, got me into low-level programming. I was now able to understand what GCC, ABIs, CPU architectures, VMs meant and how compilation strategies of languages like C/C++ and Java were different from each other. With the knowledge of databases and CN, backend development felt interesting, and I used FastAPI and Ktor to build some toy projects for myself.

Motivation

  • I like the way we make computer learn things that we as humans may or not learn, and solve some unbelievable problems with those capabilities. The Math behind ML, which I call The Mathematics of Intelligence is fascinating as it backs theoretical assumptions and inner workings of all learning. The process of modelling the process of learning with mathematics is equally fascinating to me.

  • For me, on-device ML started as an intersection of two things that I liked, but eventually, I believe that is the end-product of a much obvious process that happens in tech all the time, miniaturization. Making things work in smaller settings and with the same or enhanced power is fascinating to me. On-device ML or mobile-ML is a great way of achieving miniaturization of larger ML models.