Past Webinar
Live Dev Setup Demo: Terminal, Worktrees, Caddy & Custom Tooling
A live demo session covering my full development setup — philosophy on tool independence, terminal workflow with neovim and tmux, CLI tools that save hours, vim motions everywhere, and working with AI agents effectively.
Sunday, Feb 22, 2026
21:00 (IST) · 90 min

Your Host
Alex Raihelgaus
Founder, Sashka Ltd
Feb 22, 202621:00 · 90 minLive Stream
About This Webinar
What We Covered
A live demo session — no slides, just real tools in a real codebase. Streamed on X to ~22 concurrent viewers.
Philosophy & Approach
- Don't marry your tools — stay agnostic, keep configuration and knowledge in markdown files so you can switch tools without losing anything
- AI as cognitive offloading — the real gain isn't the model or benchmarks, it's offloading the mental work of remembering context, searching docs, and holding complex state in your head
- Fault tolerance with AI — don't fight mistakes, invest in guardrails and boundaries instead. Same approach as linters and type systems for human developers
- Session management — managing all work through markdown files for context continuity across AI sessions and tools
- Why Claude Code over Cursor — Cursor's $20/mo model requires aggressive heuristics and abstractions that lead to unpredictable behavior. Claude Code runs in the terminal, doesn't lock you into an IDE
Terminal Ecosystem
- Terminal emulators — Ghostty and Wezterm, chosen for easy configuration. [Ghostty] [Wezterm]
- Shell — zsh with rich prompt showing git branch, status, directory, timestamps. [zsh] [bash] [fish] [oh-my-zsh] [oh-my-posh] [starship]
- The CLI vs GUI mindset — why CLI tools are lighter on system resources, faster to operate, and compound over time
Vim Motions Everywhere
- Vimium — vim navigation in the browser. No mouse needed to click links, scroll, go back/forward. [Vimium]
- Obsidian — markdown editing with full vim motions. [Obsidian]
- Claude Code — has built-in vim mode. [Claude Code]
- Colemak keyboard layout — adopted due to RSI injuries from intensive coding, reduces finger travel. [Colemak]
- Recommendation: start with vim motions in your current editor before switching to neovim
tmux
Terminal multiplexer — run multiple terminal sessions inside a single window, split panes, detach and reattach. [tmux]
- Session management — create named sessions per project, switch between them instantly
- Window and pane splits — horizontal, vertical, navigate by number
- Focus mode — zoom into a single pane when you need to concentrate
- Persistence — sessions survive terminal restarts, can reconnect to remote machines
Neovim
Hyperextensible Vim-based text editor. [Neovim]
- Oil — file management as a text buffer. Create, move, copy, delete files using vim motions instead of a file explorer. "Changed how I work with computers". [Oil.nvim]
- Markdown preview — opens rendered markdown in the browser, live-updating. [markdown-preview.nvim]
- Buffer management — quick save, switch between files
CLI Tools
- atuin — shell history with SQLite database and fuzzy search. Filter by directory, search across sessions. [atuin]
- zoxide — directory jumping. Remembers recent directories, fuzzy matches. "I never remember where things are, and I don't want to". [zoxide]
- bat — better
catwith syntax highlighting. [bat] - fzf — fuzzy finder for everything. [fzf]
- gh — GitHub CLI. Create PRs, view repos, open in browser — all without leaving the terminal. [gh]
- Husky — pre-commit hooks. Catches failures locally before burning CI/CD minutes. Example: saved ~$90K/year for a 5-person team by cutting wasted CI time. [Husky]
- xh — friendlier curl. Cleaner syntax for HTTP requests, less boilerplate than raw
curl. [xh]
JSON Processing with jq
- jq — a query language for JSON. "It's a whole world" — endlessly powerful for filtering, transforming, and analyzing JSON from the command line. [jq]
- jqp — interactive jq playground. Pipe JSON into it (
cat data.json | jqp) and build queries with live preview of results. [jqp] - AI tool tip — Claude Code and similar CLI tools support
--format jsonoutput, which you can pipe straight into jq
Live Demo: Earthquake Data
Fetched ~199 earthquakes from the USGS API (last 24 hours) using xh, saved to a local file, then explored interactively with jqp. Built up from simple to complex — a progression that mirrors real debugging:
- Orient — what are we looking at? —
.metadata— first thing you always do, understand the shape of the data - How many events? —
.features | length— 199 earthquakes in the last 24 hours - Flatten to what matters —
.features[].properties | {mag, place, type, sig}— strip away 90% of fields you don't care about - Top 10 strongest quakes —
sort_by(.mag) | reverse | .[0:10]— 7.1 in Malaysia leading - Only significant ones —
select(.properties.mag > 4)— severity filter. "Show me only the P0s" - Group by alert level —
group_by(.alert) | map({alert, count: length})— 193 null, 6 green. How many events per severity, one line - Tsunami warnings —
select(.properties.tsunami == 1)— the "oh shit" filter - Geographic breakdown — split place strings, group by region, sort by count. California 68, Alaska 53. "This is your 'which microservice is on fire' equivalent"
- Depth analysis —
.features[].geometry.coordinates[2] | {min, max, avg}— min, max, average depth across hundreds of events, instant - Full incident report — one query that builds a complete summary object: total events, significant count, tsunami warnings, strongest quake, top 5 hotspot regions. "Full situational report. One command. While someone else is still logging into Datadog"
Why This Matters for Teams
- Save expensive queries locally — fetch logs once from your monitoring service, save to a file, query locally with jq. Avoids burning money on repeated log queries — some services charge hundreds of dollars per query
- Makefile-powered debugging — put common jq queries in a Makefile so junior devs can run complex data analysis without learning jq syntax
- Tool-agnostic debugging — doesn't matter what logging/monitoring service a client uses. If you can curl the endpoint, you can work with the data locally
Bonus Tools
- CleanShot X — screenshot and screen recording tool for macOS. Pin feature keeps floating screenshots on screen — useful for watching logs or reference data while working in the terminal. [CleanShot X]
- tmux copy mode —
prefix + [enters copy mode, turning your terminal pane into a vim buffer. Navigate with vim motions,Spaceto start selecting,Enterto copy,/to search,n/Nfor next/previous match. Means you can search, select, and copy from terminal output without touching the mouse
Developer Experience Philosophy
- 7 years consulting with 30+ startups (fintech, cyber, seed to $100M+ raises)
- Focus on creating environments where developers enjoy working — happier devs write fewer bugs and ship faster
- Example: Webpack to Vite migration cutting
npm devfrom ~60s to ~1s, eliminating phone-scrolling context switches - Building shared language between design and dev teams to eliminate pixel-pushing friction
Related Reading
- Taming Localhost Ports with Caddy — blog post covering part of the Caddy + worktrees setup
Topics Covered
TerminalNeovimtmuxVim MotionsGit WorktreesCaddyCLI ToolsAIClaude CodeDeveloper Experience