I productionalize AI/ML systems and build terminal-native tools for communication, scheduling, backup, and publishing.
Snapshot
Builder. I turn browser sludge into shell-native tools.
Updated March 2026My Story
- Married my wife – very beautiful indeed.
- Relearned high-school math while building gvim and sharpening tutor tools.
- Rebuilt my personal infra into a shell stack for mail, calendar, Drive backup, publishing, and reply drafting.
- Started a terminal-first Android workflow from Arch Linux with Kotlin, Compose, `adb`, and a scriptable release path.
- Kept coding taste sharp with rt and its companion tutor apps.
Posting is easy; writing replies worth posting is the part that burns time. I wanted one local rant to turn into usable drafts without the feed pulling me in.
- Vim-first CLI that turns one local rant into copy-paste-ready reply suggestions plus an archived muse.
- Runs drafting in the background through the local `codex` CLI, then reports completion through `notify-send`.
- Keeps live state in XDG directories so the public repo stays clean and the workflow stays local-first.
LinkedIn punishes brevity with layers of form fields and recruiter varnish; I wanted a small CLI that just posts the thing.
- Posts text, images, or video from the command line with Vim compose mode and a direct `main.py` flow.
- Handles OAuth token storage at `~/.linkedin/oauth2_token.json` and can auto-start login when no valid token exists.
- Waits for LinkedIn media asset processing before creating the post so uploads do not race and fail halfway.
Posting clips across platforms was repetitive ceremony; I wanted one CLI to record, trim, caption, and publish to X plus LinkedIn.
- Publishes text or media to multiple platforms from one command, with `$EDITOR` compose mode and XDG-configured per-platform argument templates.
- Includes built-in screen recording, stop-and-trim flow, local test renders, sync diagnostics, and recorder cache cleanup.
- Treats x and linkedin as composable backends instead of making me retype the same post twice.
Google's browser maze turns simple mail, scheduling, and backup into ceremony; I wanted one shell-native layer instead.
- gmail handles send, reply, attachments, contacts, spam cleanup, and thread audits with preset-based accounts.
- gcal creates, lists, deletes, and reschedules events across accounts, with timezone-aware timestamps and Meet links on create.
- gdrive makes local folders authoritative, syncing backups to Drive with OAuth presets, XDG state, and hourly timers.
Linux audio settings are click-heavy nonsense; I wanted pactl-driven sink switching from the terminal.
- CLI for listing and switching PulseAudio/PipeWire output devices with direct sink and sink:port targeting.
- Supports interactive selection, fast `--list` inspection, and explicit device jumps for headphones vs speakers.
- Keeps Bluetooth pairing manual through `bluetoothctl`, then hands device switching back to one clean command.
GUI music players feel mushy and overlit; I wanted local playback, ffplay speed, and an ASCII visualizer in the terminal.
- Curses-based local music player with keyboard-first controls, playlist reordering, search, shuffle, and command bar actions.
- Uses `ffmpeg`/`ffplay` for playback and rendering, plus `yt-dlp` for pulling YouTube audio straight into the music directory.
- Stores only a small XDG config for music dir and FPS, then gets out of the way.
Slack is fine until I need one fast direct message; I wanted a CLI that messages people as me without tab-hopping.
- Sends Slack DMs from the terminal using a user token, addressed by user ID, email, or saved labels.
- Supports `$EDITOR` compose mode plus CLI label creation for repeat contacts.
- Keeps the permissions narrow: `chat:write`, `im:write`, and `users:read` only when email lookup is needed.
WhatsApp Web makes a two-line message feel like a small pilgrimage; I wanted one command and done.
- Minimal CLI that drives WhatsApp Web through Playwright, with persisted login stored in `~/.whatsapp-web` after the first QR scan.
- Supports direct numbers, contact labels in XDG config, profile clearing, and send timeouts for flaky sessions.
- Installer sets up a private virtualenv plus Playwright browser binaries so the runtime stays boxed in.
X is useful and distractingly awful at the same time; I wanted a CLI that posts text or media without dragging me into the feed.
- Minimal command-line publisher with Vim compose mode, media attach support, and automatic 280-character guardrails.
- Uses OAuth2 PKCE user login by default, with OAuth1 fallback for text-only posts when needed.
- Built around the official Python XDK for v2 media upload and post creation.
Microsoft Word-style editors are bloated; I wanted a block-based doc editor that respected my Vim muscle memory and made notes easy to publish like a personal Wikipedia.
- Built to avoid bloated Word-style tools while keeping a block-based workflow and real Vim navigation.
- GTK4 editor that preserves Vim movement across document blocks and rich note structures.
- Renders Python graphs and ThreeJS inline, stores git-friendly `.gvim` files, and makes publishing notes to the web straightforward.
I wanted to study Responses vs Completions and prove a pure CLI aesthetic.
- Built to study the Responses API vs. Completions using a pure CLI (no TUI).
- Rebuilt opencode as a terminal-first assistant for editing, diff audits, Q&A, and repo analysis.
- Includes Git safeguards, sandboxed shell commands, and secure API key storage.
To-dos reward busywork; I wanted JTBD outcomes that compound progress.
- Built to force JTBD outcomes instead of busywork checklists.
- Vim-first terminal task tracker with North Star scores (p/q/r) for value, impact, embodiment.
- Pure Python (curses + CSV) with instant setup for clarity-driven creators.
I wanted AI answers without context switching, triggered straight from the clipboard.
- Clipboard watcher swaps ai{{ prompt }} with OpenAI responses in real time.
- CLI mode pipes answers straight into your buffer for scripts and automations.
- Wayland-native service built on wl-clipboard with a systemd user unit for persistence.
File managers force arrows/mouse; I wanted hjkl-only navigation for the filesystem.
- Built to eliminate arrow-key/mouse strain with Vim's hjkl-only navigation.
- Python curses file browser with modal nav, yank/cut/paste/delete, and picker modes.
- Matrix-inspired rain display keeps context while you move fast.
AI code slop dulls intuition; I wanted drills that embed expert patterns.
- Built to counter AI code slop by drilling expert snippets into muscle memory.
- CLI tutor with rote/jump modes, 90%+ accuracy gates, and in-place editing.
- Parses .md courses into structured lessons with bookmarks and search.
- Built LegalTech apps, burned savings, learned from a startup crash.
- Joined Wiom's mission; shipped HAPPY and GENIE.
- Deepened craft in Bash, PHP, Python, JS, and Gospel piano.
- Explored Rust for a year before returning to Python's pragmatism.
- Proved build-in-production with Python, JS, and SQLite for Wiom's internal CRM.
- Rode out COVID disruption while practicing law.
- Learned PHP; rekindled piano disciplines and builder mindset.
- Worked as an IP and technology lawyer, observing how labor-driven businesses scale.
- Joined a LegalTech startup.
- Ran email marketing campaigns; learned basic HTML.
- Fell in love with the idea that computers can do whatever you tell them to—provided you ask nicely.
- Joined RMLNLU in Lucknow, grounding discipline in dialect and rhetoric.
- Walked away from DU commerce to find deeper learning paths.
- Silent-quit CBSE science, refusing assembly-line thinking.
- Imagined life as a mad scientist, Liverpool midfielder, and pianist.
- Baptized Catholic.