I am a full stack developer with a backend focus at Josh Software in Pune, working on a production IoT water-metering and utility-billing platform. Meter readings arrive over MQTT into a Go service, a Ruby on Rails API turns them into bills, and React apps serve admins and residents, all on AWS. I own the billing module and built site onboarding end to end. My best stories come from production debugging, so I write them up.
Joined as an intern in January 2026 and converted to full-time in six months. B.Tech in Computer Engineering (Honours in Cyber Security), CGPA 9.26.
| Languages | |
| Backend | |
| Frontend | |
| Data | |
| Cloud and DevOps |
Mostly easy and medium problems in C++, updated daily from my LeetCode profile.
Upstream fixes, each reproduced before claiming it, with the evidence in the PR.
- Failure: when SimpleFIN returned a maintenance page, the sync banner showed "An internal error occurred". The server had since learned to answer
SERVER_DOWN, but the client had no mapping for it. - Fix: a new
server-downsync status carried through the account model, the database type and the error mapping, with its own banner message. No migration was needed because the column is free text. - Result: three tests, one per layer, that fail without the change and pass with it; typecheck clean. PR #9299
CopyQ: a frameless window and a hidden menu bar
- Failure: users wanted a compact clipboard manager; the frameless option existed in code with no way to turn it on.
- Fix: proved dragging and resizing work on Wayland with a throwaway Qt window first, then built the checkbox, resize grip and drag-from-body; the menu bar collapses to zero height so its shortcuts still work.
- Result: eight review rounds across two PRs, both merged. PR #3733, #3732
- Reuse: the menu bar commit is indexed in the XERJ Corpus Hub as a worked reference for AI coding agents, under CopyQ's GPL-3.0 licence with attribution.
- Failure: the operator accepted duplicate time intervals and credential-less Webex receivers that Alertmanager then refused, and its Azure discovery silently dropped settings.
- Fix: validation for both API versions, and the missing Azure fields written with the generator's own helpers.
- Result: every change pinned by tests that fail without it, including a golden-file case combining environment, authorization, proxy and redirects. PR #8896, #8897, #8898
| # | Project | What it is | Merged PRs | Stars |
|---|---|---|---|---|
| 1 | actual | Local-first personal finance and budgeting app (TypeScript) | #9299 | |
| 2 | CopyQ | Clipboard manager with advanced features (C++, Qt) | #3732 #3733 | |
| 3 | invoiceninja | A source-available invoice, quote, project and time-tracking app built with Laravel | #13402 | |
| 4 | Prometheus Operator | Kubernetes operator for Prometheus and Alertmanager | #8896 #8897 #8898 | |
| 5 | Kepler | Energy use per Kubernetes pod and container, as Prometheus metrics | #2584 #2591 #2592 #2641 | |
| 6 | community-platform | Precious Plastic community platform (React, TypeScript) | #4946 #4950 #4954 |
Every merged PR of mine outside my own repos: see the full list on GitHub.
The CopyQ menu bar commit is indexed in the XERJ Corpus Hub as reference code for AI coding agents.
Open now: ollama, litellm, rclone, tidb, chatwoot, temporal and 7 more. GitHub lists them under "Contributed to" on this profile.
Production bugs, written as stories with the measured fix.
- The Water That Flowed Backwards: one line of Go made meters report negative consumption.
- The Restart Command That Only Worked When a Human Typed It: the command was right; the shell was not.
- The Fix That Only Reached Half the Server: one feature recovered after a config fix while the other failed for a day and a half.
I am happy to talk about backend systems, IoT data pipelines and open source. The fastest way is LinkedIn.

