What's going on in my life as a programmer

What am I busy with outside of work?

Browse by year

2025 | 2024 | 2023 | 2022 | 2021 | 2020 | 2019 | 2018 | 2017

2025 UpdatesLink to section

February 2025Link to section

libtmuxLink to section

libtmux: Support for context managers have landed in v0.44.0, enabling automatic cleanup of servers, sessions, windows, and panes in tmux.

January 2025Link to section

social-embedLink to section

social-embed: Began overhauling of embed providers to be extendable.

2024 UpdatesLink to section

December 2024Link to section

CVLink to section

CV overhauled

social-embedLink to section

social-embed: Experiment with new doc gen and package manager:

November 2024Link to section

Migrated Python projects from poetry to uv, a new Rust-based package and project manager.

It’s impressive to see Rust revitalizing tooling in Python and Node.js. What might come next?

unihan-etlLink to section

unihan-etl: v0.35.0 (diff)

Updated to UNIHAN @ Revision 37.

October 2024Link to section

Faster test fixturesLink to section

Additional improvements to pytest fixtures are expected, along with significant enhancements like new options and hooks support in libtmux.

June 2024Link to section

libvcsLink to section

libvcs: v0.30.1 (diff): Support for [AWS CodeCommit] URLs.

CVLink to section

CV: Added sidebar of years, track current year in top menu while scrolling.

April-June 2024Link to section

libtmuxLink to section

libtmux: Working on options and hooks: libtmux#516

March 2024Link to section

libtmux refactoring continuesLink to section

libtmux refactoring continues

Automated fixes via ruffLink to section

Machine-made refactors rendering consistent, tight python code:

February 2024Link to section

Busman’s holidayLink to section
libtmuxLink to section

libtmux: v0.31.0 (diff)

  • API streamlining (e.g., Pane.select_pane() -> Pane.select())
  • Up next: Options and hooks: libtmux#516
CVLink to section

CV: Add timeline to pull requests

unihan-etlLink to section

unihan-etl:

January 2024Link to section

CVLink to section

CV: Move to Tailwind (cv#1674, diff)

2023 UpdatesLink to section

2023 - DecemberLink to section

Moved projects to biome linterLink to section

Moved my CV and social-embed project to oxlint biome, a Rust-based linter and formatter:

Documented projects with pydocstyleLink to section

Documented even more projects w/ ruff’s pydocstyle linter:

2023 - NovemberLink to section

social-embedLink to section

social-embed: Upgraded website from docusaurus v2 to v3 (diff).

Linted project documentationLink to section

Linted project documentation with pydocstyle + ruff:

2023 - OctoberLink to section

Overhauled django-docutilsLink to section

django-docutils - a django package for reStructuredText - is being dusted off.

  • v0.15.0 (diff) introduces:

    • Renamed template tags / filters from restructuredtext to rst

    • Enabled template tags to accept block content, e.g.

      {% load django_docutils %}
      {% rst %}
      **my bold text**
      {% endrst %}
    • Added test coverage for template tags and template engine.

  • v0.19.0 (diff): Typings for settings, cleanup, documentation

This package, originally part of a blog that combined django ORM + django views + intersphinx, remained unused in the attic until last month. It is now known as django-docutils.

2023 - Late SeptemberLink to section

More mypy —strict compliant typingsLink to section

2023 - Early SeptemberLink to section

More quality improvementsLink to section

2023 - AugustLink to section

Continued quality improvementsLink to section

Building upon the improvements made to ruff in July 2023, the following additional projects have now been revitalized:

CV Website updatedLink to section

CV Website updated

  • Dark mode
  • Renewed design with CSS variables

2023 - JulyLink to section

Improved Quality StandardsLink to section

This enhances the maintainability of projects by employing ruff, a Python linter/fixer developed in Rust:

2023 - JuneLink to section

social-embed moved to viteLink to section

social-embed moved to vite.

P.S. cihai updates ongoing (updated below)

2023 - May-JuneLink to section

cihai is being revampedLink to section

cihai is being revamped

After over 5 years of inactivity, this suite of packages has been revived.

cihai updates:

cihai-cli updates:

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

unihan-etl updates:

  • June 12th, 2023: 0.21.0: Move to pathlib, type callbacks via typing.Protocol.
  • June 17th, 2023: 0.22.0:
    • Add doctest support
    • Configuration: Move options from dict to typed dataclasses.dataclass object.
    • Docs: Split API documentation into multiple pages
    • Move unihan_etl.process -> unihan_etl.core

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 plugin]s for bootstrapping a UNIHAN.zip and reusing it throughout the test session.
  • In the medium to longterm: Simpler and stable APIs

2022 UpdatesLink to section

2022 - DecemberLink to section

I’m not giving up being successfulLink to section

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

2022 - SeptemberLink to section

One more thing on doctestLink to section

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

doctest_docutils

It also has a pytest plugin

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

2022 - Mid AugustLink to section

Promises keep comingLink to section

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.

2022 - Early AugustLink to section

Promises kept (and keep coming)Link to section

libvcs 0.14.0 released w/ typing annotations and doctests.

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

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

  • libvcs._internal.query_list.QueryList: Nested searching of dict-like data.
  • libvcs._internal.subprocess.SubprocessCommand: Deferrable subprocess commands.
  • libvcs._internal.dataclasses.SkipDefaultFieldsReprMixin: Exclude default fields (useful for clearer pytest assertions / printing). Thanks Pietro Oldrati.

2022 - JuneLink to section

libvcs and vcspull rebuildLink to section

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.

2022 - MarchLink to section

All sites moved to new design.

2021 UpdatesLink to section

2021 - JuneLink to section

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

2021 - AprilLink to section

social-embed web componentLink to section

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

2021 - FebruaryLink to section

Experimenting with new CV: cv-react-v2.git-pull.com

2020 UpdatesLink to section

2020 - AugustLink to section

2019 UpdatesLink to section

2019 - AugustLink to section

2018 UpdatesLink to section

2018 - JuneLink to section

Notes on common patterns in project structure / layout in git-pull python projects.

2018 - AprilLink to section

New organization mirrors on GitLab:

2018 - MarchLink to section

New organizationsLink to section

Two new organizations:

Working slogan: Permissively licensed. For the public good.

tmuxp CI fixedLink to section

Continuous integration fixed for [tmuxp] (#348)

2018 - FebruaryLink to section

Package updateLink to section

alagitpull, a Sphinx theme based off alabaster, learned to open external links in new tabs.

New articleLink to section

Working for equity

New front-end appLink to section

New front-end app, “CV”, two versions:

See source code on GitHub at https://github.com/tony/cv.

2017 UpdatesLink to section

2017 - DecemberLink to section

New projectLink to section

django-slugify-processor

New articleLink to section

Demystifying Django’s import strings

2017 - NovemberLink to section

New articlesLink to section

2017 - SeptemberLink to section

New articleLink to section

Pipenv: Holy Grail for Python Environments

2017 - AugustLink to section

The design and internals of HSKFlashCards have been refreshed.

2017 - JulyLink to section

New websiteLink to section

New website (in development): https://devel.tech

See devel.tech’s open source contributions and site updates

2017 - JuneLink to section

New articlesLink to section

Django vs Flask and About UNIHAN

New ProjectLink to section

unihan-db, database models and abstraction for UNIHAN.

2017 - MayLink to section

unihan-etlLink to section

unihan-etl, a tool to access UNIHAN, a dataset of Chinese, Japanese, and Korean character information, to a etl format, is now available. Supports customizable export to CSV, YAML, JSON, python, and Data Package format.

2017 - AprilLink to section

cihai, a project to open and standardize CJK datasets, is being restarted.

2017 - MarchLink to section

The Tao of tmux has been updated. See 2017-03-30 for more details.

2017 - FebruaryLink to section

HSKFlashCards has gotten a face lift. Take your study of chinese glyphs to the next level with its new search and directory functionality.

2017 - JanuaryLink to section

New bookLink to section

A new book, The Tao of tmux is available on Leanpub and Kindle (Amazon). Read and browse the book for free on the web.