hk

Harsh Kr Gupta

Software and data engineer, Delhi

I build small tools whenever something slows me down twice. Away from the keyboard it's mostly music, and training to find out how far my body can go.

This page runs pounce, a tool I made. Press / and type.

This page runs pounce, a tool I made. Tap the orange button.

What I do most days

I move data from where it's made to where it's useful.

APIs, production databases and flat files in; BigQuery, Snowflake and Redshift out. Batch when that's enough, a live change stream when it isn't. I care most about the parts that keep a pipeline alive: schema drift, retries, bad records quarantined instead of breaking the run, and alerts before anyone has to ask where the data went.

  • 3+years building data infrastructure
  • 50+connectors written, Salesforce and HubSpot to Amazon SP-API
  • CDClive replication from MySQL, Postgres and SQL Server

Data stuck somewhere, late, broken, or copied by hand? Write to me, I can help.

Python · SQL · TypeScript · Debezium · Kafka Connect · BigQuery · Snowflake · Redshift · AWS Lambda · Docker

change stream → warehouseillustration
0rows
0 mslag
0quarantined

pounce

Click anything on a Linux desktop by typing.

A shortcut puts a two-letter code on every button, link and menu on screen, in every window, the top bar and the dock. Type the code or the start of a name and press Enter. It's what you just used on this page, only for the whole desktop.

The hard part was Wayland. It gives no program global screen coordinates, and toolkits disagree about what the accessibility bus reports: GTK4 measures from the window frame, Electron from its buffer. pounce matches each window's size against its frame, buffer and client rectangles to find where to draw, and I checked the alignment against screenshots taken inside GNOME Shell, never by eye.

gitdiffer

Share a git diff by link, not by branch.

Send a teammate your local changes as a private link instead of pushing a throwaway branch or pasting code into Slack. They apply it with one command. It's now used across the company I work at.

There's no database to run. Diffs sit in Netlify Blobs and expire on their own, and because anyone can upload, links are 131-bit random and the API is rate-limited per IP.

Away from the keyboard

Music. It's where most of my free time goes.

Training. I'm trying to find out how far my body can go, one session at a time.

Write to me

hgupta7629@gmail.com

WhatsApp Resume PDF