Hello, world.

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

I productionalize AI/ML systems and build terminal-native tools for communication, scheduling, backup, and publishing.

> 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. I turn browser sludge into shell-native tools.

Updated March 2026

My Story

[2025-26 | 33–34]
Married my beautiful wife
  • 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.
March 10, 2026
PRODUCT LAUNCH: replyguy
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.
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|gcal|gdrive
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.
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
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.
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.