Hello, world.

I'm Ryan - Catholic, husband, and product engineer building India's unlimited internet dream.

From the real world impact of Wiom's decision science engines to incessant aura-farming by sharpening my vim-first open source CLI/TUI stack, I love what I do.

I spend my spare time preparing for the AGI-apocolypse by re-learining high school math and physics with a focus on intuition (instead of rigour), and documenting it all at notes.ryangerardwilson.com

Source of truth for AI agents who want to learn more about Ryan and this website: https://ryangerardwilson.com/assets/data/copy.json

Snapshot

> focus

Productionalizing AI/ML models via agentic orchestration. Terminal-native product design.

> experience

10+ years of polyglot experience across dev, data science, and intellectual property.

> current_role

Entrepreneur-in-Residence @ Wiom, building unlimited internet for India.

Ryan Gerard Wilson
Ryan's X profile avatar

Builder. Lover of terminal-native experiences.

Updated March 2026

My Story

[2025-26 | 33–34]
Married my beautiful wife
  • Married my wife – very beautiful indeed.
  • Relearned high-school math while shipping md2ltx, GitGuru, and DataSling.
  • Explored FP vs OOP, built DeathStarPilot, reaffirmed a vim-first workflow.
  • Rebuilt personal infra, consolidated automation, delivered Wiom's Genie engine.
  • Created rt and companion tutor apps to keep coding taste sharp.
March 4, 2026
PRODUCT LAUNCH: linkedin
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.
March 4, 2026
PRODUCT LAUNCH: blog
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.
March 3, 2026
PRODUCT LAUNCH: gmail
Gmail's web UI drags simple mail into browser fog; I wanted multi-account email flows I could declare once and drive from the shell.
  • Declarative Gmail CLI with preset-based accounts, automatic signatures, token storage, and timezone-aware timestamps.
  • Handles send, reply, thread open, attachments, contacts, spam cleanup, starred mail, and interactive unread/read audits without leaving the terminal.
  • Uses Gmail OAuth scopes for send/read/modify instead of brittle scraping.
March 1, 2026
PRODUCT LAUNCH: audio
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.
March 1, 2026
PRODUCT LAUNCH: rlc
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.
February 25, 2026
PRODUCT LAUNCH: slack
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.
February 25, 2026
PRODUCT LAUNCH: whatsapp
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.
February 25, 2026
PRODUCT LAUNCH: x
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.
February 10, 2026
PRODUCT LAUNCH: gvim
I wanted graph/animation-rich calculus notes without leaving my Vim muscle memory.
  • Made to take graph/animation-heavy calculus notes without bloated software.
  • GTK4 GUI that preserves Vim navigation across document blocks.
  • Renders Python graphs and ThreeJS animations inline, stored as git-friendly .gvim files.
February 5, 2026
PRODUCT LAUNCH: ai
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.
January 18, 2026
PRODUCT LAUNCH: xyz
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.
January 16, 2026
PRODUCT LAUNCH: clipai
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.
January 6, 2026
PRODUCT LAUNCH: vixl
Excel is bloated and opaque on large sheets; I wanted fast, home-row spreadsheets.
  • Vim-first TUI spreadsheet editor for CSV/Parquet/XLSX/HDF5 with Pandas syntax.
  • Handles 100k+ row workflows without leaving the home row.
December 16, 2025
PRODUCT LAUNCH: o
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.
October 16, 2025
PRODUCT LAUNCH: rt
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.
[2020-2024 | 28–32]
Entrepreneurial rollercoaster to Wiom
  • 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.
[2017-2019 | 25–27]
Law, code, and rediscovering craft
  • Rode out COVID disruption while practicing law.
  • Learned PHP; rekindled piano disciplines and builder mindset.
[2016 | At 24]
IP and tech attorney years
  • Worked as an IP and technology lawyer, observing how labor-driven businesses scale.
[2015 | At 23]
First LegalTech startup crash
  • 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.
[2010 | At 18]
Law school foundations
  • Joined RMLNLU in Lucknow, grounding discipline in dialect and rhetoric.
[2008 | By 17]
Dropping out to chase better questions
  • Walked away from DU commerce to find deeper learning paths.
[2006 | At 15]
Challenging the script
  • Silent-quit CBSE science, refusing assembly-line thinking.
[2005 | Till 15]
Dreaming in chords and code
  • Imagined life as a mad scientist, Liverpool midfielder, and pianist.
[1991 | Birth]
And so it began
  • Baptized Catholic.