I am Tony Narlock#

This is my professional website, I’ve been a software developer for 15 years. If you’re not one, what I do likely won’t make sense to you.

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

In my spare time I plan, develop, and maintain a fleet of developer tools. For example, tmuxp constructs tmux sessions from a JSON or YAML file. To that end, I’ve also written a book about tmux a few years ago, The Tao of tmux. Another tool I’ve created is cihai, which is built around Unicode’s UNIHAN dataset for Chinese, Japanese, and Korean languages.

I contribute to open source software projects; find me on GitHub, GitLab, OpenHub.

My CV tracks everything I’ve ever done - work, my projects, and open source (I’m a polyglot, there is some C++ in there).

What’s going on in my life as a programmer#

What am I busy with outside of work?

  • September 2023 - More quality improvements

  • August 2023 - Continued quality improvements

    As a continuance of July 2023’s ruff improvements, these additional projects have been revitalized:

  • August 2023 - CV Website updated

    • Dark mode

    • Renewed design with CSS variables

  • July 2023 - Improved quality standards

    Python projects using ruff, a python linter / fixer written in Rust are now updating to more stringent code standards. This further improves maintainability of projects.

  • June 2023 - social-embed moved to vite.

    P.S. cihai updates ongoing (updated below)

  • May-June 2023 - cihai is being revamped

    After 5+ years of inactivity, the suite of packages is being dusted off.

    cihai updates:

    cihai-cli updates:

    • June 4th, 2023: 0.17.0: mypy --strict compliant typings and migrate from SQLAlchemy 1.3 to SQLAlchemy 2.0

    unihan-etl updates:

    unihan-db updates:

    • June 10th, 2023: 0.9.0: mypy --strict compliant typings and migrate from SQLAlchemy 1.3 to SQLAlchemy 2.0

    In the future, cihai projects will have:

    • SQLAlchemy updated to 1.4, then 2.0+ Completed

    • Typings, for improved maintainability and completions

    • Doctests for tested examples

    • unihan-etl and cihai will have their own pytest plugins for bootstrapping a UNIHAN.zip and reusing it throughout the test session.

    • In the medium to longterm: Simpler and stable APIs

  • December 2022 - I’m not giving up being successful

    In 2023:

    • Snappable, expressive configurations will enliven tmuxp and vcspull

      Dataclasses will resemble the structure of the:

      • libtmux: tmux session, and

      • libvcs: the file paths of the user’s repository checkouts

    • My oldest library - libtmux - will be renewed with dataclasses, documentation, and improve tests

  • September 2022 - One more thing on doctest

    I wrote a doctest module that can parse reStructuredText and markdown:

    Doctest w/ docutils

    It also has a pytest plugin

    On that note, I also made a pytest plugin for libtmux and libvcs:

  • Mid August 2022 - Promises keep coming

    Additionally, test and quality infrastructure has been improved across all projects:

    • libtmux now has comprehensive typings (--strict mypy compliance) as of 0.13.0

    • All projects except vcspull now have basic mypy and doctest support.

  • Early August 2022 - Promises kept (and keep coming)

    libvcs 0.14.0 released w/ typing annotations and doctests.

    Also, added a URL Parser (compare to urlparse) for git, hg, and svn URLs. Extensible using framework tools. Built on dataclasses and uses doctest.

    In the process, “side inventions” (License MIT):

  • June 2022

    • libvcs and vcspull are being rebuilt from the ground up. This will be a fresh take on one of my earliest python projects. What they’ll be using:

      • doctest: actual code demo in documentation which also function as tests

      • mypy: type checking through annotations (PEP 484, PEP 526)

      • dataclasses (experimental): As a library creator, I will put these to the test

      The projects will be a proving ground for quality standards and patterns I’ll adopt across my other and future packages.

  • March 2022

    • All sites moved to new design.

  • June 2021

    • tmux-python (tmuxp + libtmux), vcs-python (vcspull + libvcs), cihai (cihai, cihai-cli, unihan-etl, unihan-db) moved to markdown

  • April 2021

    • Created @social-embed web component / library in TypeScript + LitElement: Homepage, GitHub

  • Feb 2021

See more

Publications#

The Tao of tmux

The Tao of tmux

Available on Leanpub and Kindle (Amazon). Read the book for free on the web.

Language Projects#

cihai.git-pull.com

cihai

United front for creating open, permissive, standardized CJK datasets.

HSKFlashCards.com :height: 150

HSK FlashCards

Study chinese flashcards for Hànyǔ Shuǐpíng Kǎoshì, (New) Practical Chinese Reader and Integrated Chinese

Unix-like Utilities#

tmuxp

tmuxp (中文)

tmux session manager via JSON and YAML file

libtmux

libtmux

pilot tmux with python

vcspull

vcspull

manage and update multiple git / hg / svn projects via JSON or YAML file

libvcs

libvcs

pythonic API for version control systems

Coding around the web#

Porting (Linux-to-BSD)#

Scrapyard#

Experimental code / patches that never made it upstream:

kakoune branches: cmake build support, mini, new-cli (#693), observers, rm-server (serverless kakoune), pybind11 and Boost.Python integration

vis branches: cmake support, C++ support, python integration

sphinx branches: flexible-builder invocation

tmux branches: cmake build support

saltstack + fabric demo: gist

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#

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