I'm Giridhar, a systems and developer-tools engineer with an electrical-engineering background. I build tools that fix problems I actually hit, and when the bug is in someone else's project, I reproduce it, fix it in the smallest correct way, and get the fix merged upstream.
Open to software engineering roles in developer tooling, Linux and systems, embedded software, and AI-agent infrastructure. Remote or India-based.
| Project | What it does | Results |
|---|---|---|
| YT Curated Feed JavaScript · Manifest V3 |
Replaces the YouTube homepage with only the channels you chose. Hides Shorts, autoplay and recommendations. | Zero dependencies, no servers, no tracking |
| thermal-guard Python · systemd · i915 |
Software thermal throttle for old Intel laptops that overheat until they freeze. Lowers the i915 GPU clock step by step as temperature rises. | Under a GPU stress test, the laptop froze at 104 °C with no guard. With thermal-guard it ran the full 80 s, mostly below 92 °C |
| reddit-native-mcp Python · MCP |
MCP server that gives AI agents whole Reddit threads, including every collapsed reply. No API key needed. | Fetches a full 191-comment thread in 2.2 s; cached repeats in 40 ms |
| secure-klipper C++ · Qt6 · libsodium |
Fork of KDE Plasma's clipboard manager. Only the newest entries stay readable; older ones are encrypted on disk with Argon2id and a password. | Works on Plasma 6.7; covered by tests |
| Statsify TypeScript · Chrome extension · SQLite · site |
Private Spotify listening stats, with an optional desktop companion app. | All data stays on the device |
| windows-virtual-monitor-loopback C++ · D3D11 · Win32 |
Shows a virtual monitor in a window on the same PC, with input forwarding. Uses Windows Graphics Capture and keeps frames on the GPU. | No VM, network or video encoder involved |
| Persistent XPI Toolkit Firefox source patch · Python |
Source patch and verifier that keep unsigned WebExtensions installed in normal Firefox release builds. | Verified across browser restarts |
| claude-continue JavaScript · Manifest V3 |
A Chrome Extension that automatically resumes your Claude.ai chats the exact moment your message limit resets. chrome-extension, manifest-v3, claude-ai, automation, productivity, javascript | Updated 2026-07-11 |
23 merged pull requests across 18 organizations. The banner shows the 5 most widely used projects I've had a fix merged into, one PR each. 9 of the projects with a merged fix are established (5k+ stars and 2+ years old).
Counts only merged PRs to repositories I don't own that are not forks. Those projects' popularity belongs to their maintainers; my part is the linked PR.
AI-agent tooling · MCP (4 merged)
- agno-agi/agno #9078: fix: Expose FileTools directory parameter
- morluto/rea #1635: feat(ghidra): admit set_address_name and set_addresses_names
- lgazo/drawio-mcp-server #63: feat: add document title and save tools
- mixelpixx/KiCAD-MCP-Server #330: fix: update Eagle import headers for KiCad 10
Embedded & hardware tooling (9 merged)
- qmk/qmk_firmware #26356: Fix ChibiOS virtual serial short packet receive
- arduino/arduino-cli #3248: builder: handle ANSI-colored include diagnostics
- libusb/hidapi #831: cmake: provide generic hidapi pkg-config alias
- devbisme/skidl #323: Fix KiCad 8 library symbol grammar
- adafruit/Adafruit_CircuitPython_Display_Text #239: fix: avoid orphaning a final wrapped character
- adafruit/Adafruit_Blinka_Displayio #176: fix: add I2CDisplayBus deinit
3 more
- adafruit/Adafruit_CircuitPython_Pixelbuf #15: Allow one-color slice assignment
- adafruit/Adafruit_CircuitPython_Motor #79: Allow disabling continuous servos
- adafruit/Adafruit_CircuitPython_Register #61: Document alarm date placeholders
Linux, systems & developer tooling (10 merged)
- rclone/rclone #9648: http: add metadata defaults for --http-no-head
- syncthing/syncthing #10815: fix(gui): improve header and button color contrast (fixes #10488)
- bootandy/dust #589: Ignore empty path inputs
- pypa/pipx #1981: Fix Release Notes project URL
- python/typeshed #16097: Improve lib2to3 future_features annotation
- rclone/rclone #9649: lsf: document Google Drive shortcut IDs
4 more
- super-productivity/super-productivity #9183: test: reset global dialog state between specs
- kernelci/kernelci-core #3166: runtime: raise TemplateRuntimeError from kci_raise
- HeadshotInteractive/listening-stats #64: Fix Windows installer temporary cleanup
- Boeing/config-file-validator #602: feat(yamlfmt): add compact sequence indentation option
26 pull requests in review at rust-lang, spf13, arduino, prompt-toolkit, micropython, rclone and more
- rust-lang/mdBook #3169: Fix print output inheriting screen theme colors
- spf13/cobra #2466: Fix required Bash flag completion
- arduino/arduino-cli #3254: compile: preserve existing profile in dump
- prompt-toolkit/python-prompt-toolkit #2083: Fix redo after custom undo bindings
- micropython/micropython #19504: ports/esp32: Treat Pin mode -1 as unchanged.
- rclone/rclone #9645: filter: fix directory filters for brace path alternatives - fixes #3250
- elastic/kibana #279376: [Security Solution] Validate detection rule schedule ranges
- vercel-labs/agent-browser #2097: fix(cli): explain Playwright-only selectors instead of reporting element not found
- vercel-labs/agent-browser #2092: fix(mcp): don't repeat parsed stdout in structuredContent
- vercel-labs/agent-browser #2089: feat(tabs): identify each tab's browser profile with
tab list --profiles - abba23/spotify-adblock #213: Fall back to built-in default config
- abba23/spotify-adblock #212: Build into a fixed target directory
- newhinton/disky #53: Fix logging crash when external app-files directory is unavailable
- adafruit/Adafruit_nRF52_Bootloader #401: fix: list supported boards when BOARD is missing
- pyocd/cmsis-pack-manager #249: fix: handle relative index URLs without panicking
- browserpass/browserpass-extension #410: fix: generate RFC-compliant TOTP codes
- pyocd/pyOCD #2018: pack: return error when no devices match
- arduino/arduino-language-server #239: fix: handle unsupported inlay hint requests
- hardbyte/python-can #2081: Fix Systec error message lookup
- mozilla/web-ext #3782: Expose disabled linter rules
- Reproduce first. I don't change code until I can trigger the failure on demand.
- Smallest complete fix. I avoid broad rewrites; maintainers merge focused diffs.
- Regression tests where they matter. I add focused tests when they protect the behavior.
- Say what was and wasn't tested. Every PR states how it was verified.
Based in India · 217 contributions in the last 12 months · This page rebuilds itself weekly from live GitHub data (generator, Remotion banners) · Last refreshed 2026-10-19



