Skip to content
View tanistheta's full-sized avatar

Block or report tanistheta

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
tanistheta/README.md

Portfolio

Tanishk Gangwar B.Tech CSE (Data Science) · Manipal University Jaipur · Batch '28

Portfolio LinkedIn Email


I study how information behaves in code: in commits, in adoption curves, in systems that look chaotic until you measure them properly. Most of what's below started as a clean hypothesis. Some of it ended with the data winning instead of me. I think that's the more interesting outcome to publish.


research

difference-in-differences quasi-experimental git mining 638k commits

Does GitHub Copilot change how people commit, causally rather than just correlationally?

flowchart LR
    A[GH Archive<br/>10 repos, 2018-2024] --> B[Commit extraction<br/>638,000+ commits]
    B --> C[Feature engineering<br/>files / churn / inserts]
    C --> D[Panel: repo x week<br/>fixed effects]
    D --> E[Pre-trend F-test]
    D --> F[DiD + event study]
    D --> G[Commit-message DiD<br/>mechanism check]
    E --> H[Result]
    F --> H
    G --> H
Loading
Metric Effect Inference
Mean files/commit -28% 16/16 headline tests significant under HC3; directionally consistent, decisive on 2/8 headline cells under wild cluster bootstrap
Mean insertions/commit -37% Survives WCB (repo-clustered, 9999 reps)
Large-commit fraction -2.4pp Survives HC3, few-cluster inference caveat disclosed
Fix-commit fraction β = -0.030, p < 0.001 Cleared pre-trend, message-label precision 83% (hand-validated, 100 samples)
Refactor-commit fraction β = +0.007, p = 0.006 Cleared pre-trend, message-label precision 88% (hand-validated, 100 samples)
Pre-trend joint F-test passes on all 4 headline features n/a

Effect concentrates in existing contributors, not newcomers: people write smaller, more atomic commits once an assistant is doing the typing. A commit-message DiD adds the mechanism check, with fix-commit share falling and refactor share rising post-adoption. Full review pass added multiple-testing correction (BH-FDR), a wild cluster bootstrap given only 8-10 repo clusters, a COVID-era falsification test, a bot-commit robustness check, and hand-validated message labeling, with the paper's headline claim honestly downgraded from "robust across specs" to "directionally consistent, not decisive under conservative few-cluster inference." IEEEtran-to-ACM sigconf paper (11 pages) drafted, targeting MSR 2027.

Relation to prior work - Xu et al. 2025 (arXiv:2510.10165, Tilburg)

Xu et al. find Copilot adoption increases PR-level rework and review volume. Sekivara looks one level down, at the commit itself, and finds atomicity decreasing post-adoption. Together the two tell one story: more, smaller, more frequent commits. Sekivara supplies the commit-level mechanism underneath their PR-level result, and its clean pre-trend F-test and outlier-filtered control set are the methodological additions.


staggered-adoption DiD sun-abraham estimator bigquery 89 repos

Does adding a CODEOWNERS file causally change how fast pull requests get reviewed?

flowchart LR
    A[GH Archive<br/>~21TB via BigQuery] --> B[89-repo panel<br/>staggered adoption]
    B --> C[Sun-Abraham<br/>event-study DiD]
    C --> D{Result by<br/>horizon}
    D -->|0-18mo| E[Null on<br/>PR closing time]
    D -->|23-24mo| F[Signal, flagged<br/>as confounded]
    B --> G[CODEOWNERS coverage<br/>parsed at treatment date]
    G --> H[Bimodal split:<br/>14 repos ≤10% / 8 repos ≥90%]
Loading
Window Finding Confidence
0-18 months Null effect on PR closing time Clean
23-24 months Two coefficients turn significant Confounded: only 17/28 repos reach this horizon, no later-adopting comparison cohort at same horizon
Coverage split 14 repos ≤10% coverage, 8 repos ≥90% Low-coverage subset reproduces the null; high-coverage subset violates parallel trends, so coverage is a likely moderator
Relation to prior work - Lulla, Kula & Treude 2025

A directly competing paper was found mid-analysis and incorporated rather than ignored. Their fixed RDD design structurally cannot observe the 18-24 month window Ikiru covers. The two studies are complementary in the horizons they can each speak to, not redundant.


shannon entropy leave-one-repo-out CV honest null result

Does Shannon entropy in commit histories predict upcoming software releases?

flowchart LR
    A[Commit histories<br/>9 repos] --> B[Shannon entropy<br/>per commit window]
    B --> C[Naive train/test split]
    C --> D[72% accuracy]
    B --> E[Leave-one-repo-out CV]
    E --> F[AUC 0.47, chance level]
    B --> G[Confound check]
    G --> H[Commit volume vs entropy<br/>Spearman r = 0.817]
Loading
Evaluation Result Interpretation
Naive split 72% accuracy Looked promising
LORO-CV AUC 0.47 Indistinguishable from chance
Confound test Spearman r = 0.817, p = 0.007 Entropy was re-detecting commit volume, not release prep
Residual-entropy check Mean AUC 0.467 Null holds even after regressing out the volume confound

Status: Published as a negative result with a documented confound, not a quiet repo nobody talks about. The methodology is the part worth reading. Research direction pivoted toward testing whether entropy-flagged unusual commits predict bad downstream outcomes (fix-follows, reverts), a gap in prior anomaly-detection work.


fairness-aware ml demographic parity equal opportunity random forest

Does fixing bias in tabular ML cost accuracy, and do all mitigation strategies work equally well?

flowchart LR
    A[Tabular dataset] --> B[Bias audit<br/>12 modules]
    B --> C[Reweighting]
    B --> D[Feature suppression]
    B --> E[Post-processing]
    C --> F[Fairness metrics]
    D --> F
    E --> F
    F --> G[Random Forest<br/>accuracy check]
Loading
Strategy Demographic Parity Gap ↓ Equal Opportunity TPR Gap ↓ Accuracy
Reweighting Best of 3 Best of 3 Stable
Post-processing Middle Middle Stable
Feature suppression Worst of 3 Worst of 3 Stable
Overall 64.5% 47.8% Held stable throughout

The sharper finding: naive feature suppression, the most intuitive fix, was the least effective of the three, underperforming reweighting on every fairness axis tested. Built with Dr. Chirag Joshi; pending arXiv endorsement.


open source

Contributions to libraries with real production surface area, not toy patches.

  • npm/cli - fixed a silent failure in npm audit fix by adding a securityDowngrade gate to CanPlaceDep (PR #9754), merged.
  • pandas - fixed a negative-slice indexer validation bug in core indexing logic using slice.indices() (PR #66101), merged with regression tests.
  • PyDriller - corrected Commit._stats() to respect the skip_whitespaces flag (PR #320), merged; added a Commit.patch property exposing full unified diffs, closing a long-standing feature request (PR #321), merged.
  • PyGithub - added a configurable max_rate_limit_wait cap to GithubRetry, with a new RateLimitExceededExceedsMaxWait exception, replacing unbounded rate-limit stalls (PR #3540), in review.

builds

go raft consensus deterministic simulation testing distributed systems

Can you make a distributed-consensus bug reproduce on demand, then run it live?

flowchart LR
    A[Raft nodes in Go<br/>leader election + log] --> B[Scheduler-driven delivery<br/>+ fault injection]
    B --> C[Deterministic sim testing<br/>2000-seed sweep]
    C --> D[Full log replication<br/>+ KV state machine]
    D --> E[Azure 3-node cluster<br/>Docker + gRPC]
    E --> F[Live dashboard<br/>chaos controls]
    E --> G[HTTPS via Caddy<br/>+ DuckDNS, reboot-safe]
Loading
Phase Scope Status
1-2 Leader election, scheduler-driven delivery, fault injection (drops, delays, partitions) Done
3 Full AppendEntries log replication, apply loop, KV state machine Done
4 Production deployment: WAL storage, gRPC transport, client API with leader-forwarding, Docker Compose 3-node cluster on Azure, toxiproxy chaos, kill-a-container failover demo Done
5 Live dashboard (cluster state, leader crown, live KV traffic feed, Kill/Start/Isolate/Heal chaos buttons), HTTPS via Caddy + DuckDNS, systemd reboot resilience Done
6 Empirical study on the deployed cluster Cuttable, not started

Deterministic simulation testing means every failure replays exactly: a 2000-seed stale-read sweep found 112 stale minority reads and zero linearizability violations. A full code audit turned up 11 numbered concurrency/correctness flaws post-deployment (stale vote replies, stale AppendEntries replies, missing no-op on election win, and more); the two most severe are fixed and verified clean under go test -race, the rest tracked as open findings. The deployed cluster survived an unattended sudo reboot and a live kill-the-leader demo (n2 killed via docker kill, n3 elected and kept serving writes) with no manual intervention.


Self-Calibrating Edge AI for Predictive Maintenance · Tata Technologies InnoVent-27

edge ai vibration/acoustic sensing MAD/IQR gating predictive maintenance

Can a machine flag a failing bearing on-device, before it fails, without drowning in false alarms?

flowchart LR
    A[Vibration/acoustic<br/>sensor stream] --> B[Two-stage MAD/IQR gate]
    B --> C[Small anomaly model]
    C --> D[Self-calibrating<br/>baseline]
    D --> E[CWRU Bearing Data Center<br/>benchmark, 15 fault conditions]
Loading
Test Result
Fault detection 100% across 15 seeded fault conditions (CWRU Bearing Data Center benchmark)
False positives 0% on held-out healthy data
Self-calibration vs static baseline False alarms on a legitimate operating-point change cut from 10.5% to 0%

Solo submission (team of 1) for InnoVent-27's Edge AI for Autonomous & Intelligent Heavy Machines category, motivated directly by vocational-training exposure to plant-floor sensor data at NTPC. Virtual PoC validated end-to-end against a public benchmark before the full form and presentation deck were submitted.


Industry tooling · NTPC Limited

html sheetjs offline-first statistical filtering

Vocational trainee with the APR/SCADA team (June-July 2026). Two shipped tools, both built around a no-pip/no-admin-rights office desktop constraint:

  • A fully offline, browser-based CSV/Excel trend-report converter (single HTML file, SheetJS + JSZip bundled inline, zero install) with batch folder processing, pre-flight validation, and a compound tag-editing UI: diff-by-example renaming, character-strip, and per-position removal.
  • An outlier-removal and feature-rejection pipeline for Pearson correlation analysis: a two-stage graph-level gap/leverage test ahead of point-level MAD- and IQR-based cleaning, with a PDF methodology summary produced for the team.

clip umap fastapi docker gcp

Can a machine read taste?

flowchart LR
    A[25-round quiz<br/>image comparisons] --> B[CLIP ViT-B/32<br/>embeddings]
    B --> C[Cosine similarity to<br/>16 aesthetic centroids]
    B --> D[3D UMAP projection]
    D --> E[kNN nearest-image<br/>retrieval]
    A --> F[Upload & classify<br/>any photo]
Loading
Engineering problem Root cause Fix
Docker image bloat pip dependency-resolution bug 9.2GB → 1.62GB
Session tracking silently broken Browser secure-context restriction Diagnosed via evidence, not guesswork
Slow classify response Assumed memory issue Actually e2-micro's documented 25% sustained CPU ceiling, measured directly
Repeated slow startup UMAP re-fit on every restart Cached fit to disk

Free-tier GCP VM (964MB RAM) by choice: the constraint is what makes the engineering real. Free HTTPS, a real domain, zero ongoing cost. Full writeup in the repo's README.


stack

Python Go C++ FastAPI Docker GCP Azure BigQuery scikit-learn statsmodels Pandas NumPy Git


achievements

  • 🎓 Amazon ML Summer School 2026 - selected among the top ~3,000 of 134,000+ applicants (~2.2% selection rate)
  • 🏆 Top 1,500 of 100,000+ participants - Google "The Big Code" competitive programming challenge
  • 🥇 Dean's Academic Excellence Award - Manipal University Jaipur, Semesters 2, 3, and 4

stats

GitHub Stats

GitHub Streak

Top Langs


CGPA 9.00/10 · Manipal University Jaipur · Batch '28 · tanishk7531@gmail.com

Pinned Loading

  1. sekivara sekivara Public

    Does GitHub Copilot leave a measurable fingerprint on how developers commit? A DiD study across 403K+ commits, 9 repos, 7 years.

    Python

  2. ikiru ikiru Public

    Does CODEOWNERS speed up PR reviews? A staggered-adoption DiD study on ~21TB of GH Archive data across 89 repos.

    Python

  3. kansei kansei Public

    Discover your aesthetic identity - CLIP embeddings + UMAP, scored against 16 aesthetic centroids. Live demo.

    HTML

  4. bias_awareness bias_awareness Public

    Measurement-first bias-mitigation pipeline for tabular ML - 64.5% Demographic Parity Gap reduction on Random Forest.

    Python

  5. entropic-fingerprint entropic-fingerprint Public

    Empirical study: does Shannon entropy in git histories predict software releases? Across 9 repos and 400k+ commits - it doesn't. Here's what does.

    Python

  6. portfolio portfolio Public

    Visit my portfolio here!

    HTML