Hi there 👋

👋 Welcome to my blog

  • Academically a software developer who occasionally blabbers here

  • My learnings just as a note to my future self. Maybe it helps someone else too.

A rant about Play Store policies for individual developers

This is the fifth post on building Arrow, an Android puzzle game. The first four are Learnings from building Arrow, a mobile game, Setting up a Flutter project for Claude Code, Making a puzzle game more accessible and Automating the release to the Play Store. This one is a rant. It’s about the Play Store’s policies for individual developers, and how long they keep a finished app away from the people it’s for....

November 6, 2026 · 3 min

Automating the release to the Play Store

This is the fourth post on building Arrow, an Android puzzle game. The first three are Learnings from building Arrow, a mobile game, Setting up a Flutter project for Claude Code and Making a puzzle game more accessible. Releasing often Arrow’s first release was tagged on 13 September 2026. Build 20, version 2.2.3, was tagged on 2 November. That’s a release every few days. Done by hand, every one of those is a chance to get something wrong....

November 6, 2026 · 3 min

Making a puzzle game more accessible

This is the third post on building Arrow, an Android puzzle game. The first two are Learnings from building Arrow, a mobile game and Setting up a Flutter project for Claude Code. Where this started Some time back I watched an episode, Why are Indian cities still inaccessible to people with disabilities? It isn’t about apps. The people on it talk about disability rights, and about how our cities and infrastructure aren’t built with disabled people in mind....

November 6, 2026 · 5 min

Setting up a Flutter project for Claude Code

This is the second post on building Arrow, an Android puzzle game. The first, Learnings from building Arrow, a mobile game, covers why I built it and what I learned. Posts on releases, accessibility and the Play Store are coming soon. How it got built I’m a backend developer. I work with Python, Django and databases. Claude Code wrote nearly all of Arrow’s code. Arrow is built with Flutter, and I didn’t write the Dart....

November 5, 2026 · 6 min

Learnings from building Arrow, a mobile game

Arrow is a puzzle game for Android. There are no ads, no in-app purchases, no accounts and no tracking. It works offline, and the code is open source. In the first two weeks after it was published, it had about 1.4K installs (at the time of writing). I haven’t run any ads or done any marketing for it. This is the first of a few posts on building Arrow. The others, on the project setup, releases, accessibility and the Play Store, are coming soon....

November 5, 2026 · 5 min

Piping my watch data to an LLM, without the intermediaries

The screenshot ritual I was training for a marathon and had settled into a routine. Finish a run, open Gadgetbridge (an open-source app I use in place of the watch maker’s own app), take three or four screenshots of pace, heart rate and splits, paste them into Claude, ask “how did that go?”. It worked, more or less. But two things kept bugging me. First, it was tedious. Every run meant a handful of screenshots and an LLM squinting at pixels to read numbers that were sitting in a database a few taps away....

October 5, 2026 · 10 min

Synchronize panes in tmux

So, you want to run the same command over different terminals? By the end of this blog, hopefully you will know about this neat trick/hack to solve this problem. Hopefully, you’re familiar with tmux. If not, basically it is a tool that is used as terminal multiplexer. You can create, access, control multiple terminals from a single screen(and many more things). So, we will be using it to run the same command in different terminals....

May 9, 2021 · 2 min

Speeding up your django tests

Running tests can become troublesome, if your tests take too long to execute. Ideally, you want an instant feedback from them. Lets us discuss some ways through which we can speed up the run time for our tests. Move data creation to setUpTestData setUpTestData is pretty much like setUpClass in unittest. This method is run once before the test class runs. One of the main reasons, tests can be slow is if data creation in done in setUp method or inside individual tests....

March 1, 2021 · 4 min

Writing unit tests for migrations in django

Writing tests for migration can be a bit tricky because all of your migrations are generally run before any of your test. In case you want to test your code for a particular migration, you will have to revert the database to that particular state. Make sure you don’t forget to revert to the latest state after this test ends. In this post, we will see who we can do this....

March 1, 2021 · 3 min

Add tests to verify registry of models to django admin

In the last post, we learned how to automate registration of models to the django-admin. In this post, we will try to see how we can add tests to verify that all our models have been registered. Why do we need it? Even though the admin.py module is run internally when running the tests, it doesn’t actually verify whether all models have been registered or not. It is a very common thing to forget registering your model to the admin, especially when you aren’t really customizing them....

July 1, 2021 · 2 min