I am Tony Narlock

This is my professional website. I’ve been a software developer for over 17 years. If you’re not in the field, what I do might not make much sense to you.

I work at tech startups, building web-based applications. On the frontend, I use React, TypeScript, and Relay (GraphQL), and on the backend, Python and Amazon Web Services.

In my spare time, I plan, develop, and maintain a suite of developer tools. For instance, tmuxp, which constructs tmux sessions from a JSON or YAML file. A few years ago, I also wrote a book about tmux, titled “The Tao of tmux”. Another tool I’ve created is cihai, based on Unicode’s UNIHAN dataset, which supports Chinese, Japanese, and Korean languages.

I actively contribute to open-source software projects. You can find me on GitHub, GitLab, and OpenHub.

My CV documents everything I’ve ever done - professional work, my projects, and open-source contributions (I’m a polyglot; there’s even some C++ in there).

Hello, I’m Tony Narlock

This is my professional website. I’ve been a software developer for over 17 years, currently working from Texas.

I build web-based applications at tech startups. On the frontend, I work with React, TypeScript, and Relay (GraphQL); on the backend, Python and Amazon Web Services.

Outside of work, I maintain a collection of developer tools. tmuxp builds tmux sessions from JSON or YAML configuration. I’ve also written “The Tao of tmux”, a practical guide to the terminal multiplexer. cihai provides programmatic access to Unicode’s UNIHAN dataset for Chinese, Japanese, and Korean characters.

I contribute to open-source projects and you can find my work on GitHub, GitLab, and OpenHub.

My CV has the details — professional work, personal projects, and contributions across various languages and technologies.

What's going on in my life as a programmer

What am I busy with outside of work?

2026

February 2026

vcspull

vcspull shipped two feature releases:

v1.55.0 adds vcspull import for bulk-importing repositories from remote hosting services into your vcspull configuration:

  • 6 services: GitHub (gh), GitLab (gl), Codeberg (cb), Gitea, Forgejo, and AWS CodeCommit (cc)
  • 3 modes: user (default), organization, and search
  • Filtering: --language, --topics, --min-stars, --archived, --forks
  • Self-hosted support: --url for GitHub Enterprise, GitLab, Gitea, and Forgejo instances
  • GitLab subgroups: Nested group hierarchies map to workspace roots automatically; --flatten-groups to collapse them
  • SSH clone URLs by default; --https to switch

No new dependencies — HTTP is handled with stdlib urllib.

v1.56.0 adds vcspull worktree for declarative git worktree management. Configure worktrees per-repo in YAML targeting tags, branches, or commits, then list, sync, and prune them. Dirty worktrees are reported as BLOCKED (never force-updated), and --include-worktrees on vcspull sync handles repositories and their worktrees in one pass.

January 2026

tmuxp

tmuxp v1.63.0 modernizes the CLI with semantic colors and new commands:

  • Semantic colors: New --color flag (auto/always/never) with NO_COLOR/FORCE_COLOR support per no-color.org
  • tmuxp search: Find workspace files with field-scoped search (name:, session:, path:, window:, pane:), matching options (-i, -S, -F, -w), and --json/--ndjson output
  • Enhanced tmuxp ls: --tree for grouped display, --full for complete config, --json/--ndjson for automation, local workspace discovery from cwd
  • tmuxp debug-info --json: Structured output for issue reporting
  • Beautiful --help: Usage examples with syntax highlighting
  • PrivatePath: Masks home directory as ~ in output for privacy

Documentation now features enhanced CLI command pages via a new pretty_argparse Sphinx extension with syntax-highlighted usage blocks.

See release notes.

social-embed

social-embed received a major site overhaul:

  • Interactive playgrounds on homepage: Try the web component and library directly from the front page with live code editing
  • Migrated from Starlight to pure Astro: Custom layouts, mobile navigation, and full control over styling
  • New React search modal: Keyboard navigation, Algolia-style breadcrumbs, and title/excerpt highlighting
  • Custom Aside component: Callout/admonition component with multiple styling variants

2025

December 2025

libtmux

libtmux shipped two releases in December:

v0.51.0 enforces deprecations: Legacy API methods (deprecated since v0.16-v0.33) now raise DeprecatedError instead of DeprecationWarning. See the migration reference table for old-to-new method mappings.

v0.52.0 enhances capture_pane() with 5 new parameters exposing tmux capture-pane flags:

  • escape_sequences (-e): Include ANSI escape sequences for colored output
  • escape_non_printable (-C): Escape non-printable chars as octal \xxx
  • join_wrapped (-J): Join wrapped lines back together
  • preserve_trailing (-N): Preserve trailing spaces at line ends
  • trim_trailing (-T): Trim trailing empty positions (tmux 3.4+)
social-embed

social-embed has moved from social-embed.git-pull.com to its new home at social-embed.org.

This release adds an interactive Playground for testing embeds (#49):

  • Live code editor with syntax highlighting for HTML and JavaScript
  • Real-time preview with sandboxed iframe execution
  • CDN source picker: Switch between local builds, cdn.social-embed.org, jsDelivr, unpkg, esm.sh, or custom URLs
  • Provider presets: One-click examples for YouTube, Spotify, Vimeo, DailyMotion, Loom
  • Shareable links: URL state serialization for sharing playground configurations

The CDN picker makes it easy to test compatibility across different delivery networks and verify embeds work with production CDN sources.

Trusted Publisher attestations

Three packages now publish with PyPI Trusted Publisher and build attestations:

This replaces long-lived PyPI API tokens with OpenID Connect (OIDC) authentication from GitHub Actions, and enables cryptographic verification that packages were built from their claimed source repository.

OIDC documentation deployment

All open source project docs now deploy via GitHub Actions OIDC authentication. This eliminates long-lived AWS credentials in favor of short-lived tokens issued per workflow run, improving security posture across projects.

See more

Publications

Language Projects

Unix-like Utilities

Web Projects

Featured content

Coding around the web

Porting (Linux-to-BSD)

#893

#136

#147

  • pyston - An open-source Python implementation using JIT techniques #1072, #1073,

#1085

  • libpypa - Python parser implemented in pure C++ #50

Scrapyard

Experimental code / patches that never made it upstream:

Project templates

Permissively licensed starter templates you can use to bootstrap your projects.

These are mostly outdated

Frontend
Cookiecutter

Presentations

Industry and Press

Code Exploration

Other

  • Leather - PSA on why leather is cool

Donate

Like my open source projects and learning resources? Your support is appreciated!

Emboldening virtue, the Junzi

  • To be a righteous person (君子 jūn zǐ), as opposed to (小人 xiăorén)

What makes a good gentleman-scholar in Confucius' eyes?

  • Be coherent: "How did we get here?", "How do these things connect?"
  • Tolerate ambiguity
  • Treat matters in proportion to the issue
  • Secure attachment