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:
- Documentation: Moved from docusaurus to starlight, an Astro-based documentation generator.
- Package manager: Moved from yarn classic to pnpm.
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
Updated to UNIHAN @ Revision 37.
October 2024Link to section
Faster test fixturesLink to section
- libvcs:
v0.33.0
(diff): 50% faster.
- vcspull: v1.32.0 (diff): 33% faster.
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
- v0.33.0 (diff): Improved new session creation and window splitting.
- v0.34.0-v0.35.0 (diff): Improved
.cmd()
in respect to targets.
Automated fixes via ruffLink to section
Machine-made refactors rendering consistent, tight python code:
- unihan-etl: v0.34.0 (diff)
- libvcs: v0.29.0 (diff)
- vcspull: v1.30.0 (diff)
- libtmux: v0.36.0 (diff)
- tmuxp: v1.45.0 (diff)
February 2024Link to section
Busman’s holidayLink to section
libtmuxLink to section
- 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
- v0.31.0 (diff): Support updated from UNIHAN at Unicode 11.0.0 (May 2018) to 15.1.0 (Sept 2023), via unihan-etl#309.
- v0.32.0 (diff): Highlight examples on the front page: unihan-etl#253, unihan-etl#314.
- v0.33.0 (diff): Lint improvements, fix CSV highlighting.
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:
- cihai: v0.30.0 (diff)
- cihai-cli: v0.25.0 (diff)
- unihan-db: v0.14.0 (diff)
- django-slugify-processor: v1.6.0 (diff)
- g: v0.0.3 (diff)
- vcspull: v1.26.0 (diff)
- tmuxp: v1.33.0 (diff)
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.
-
-
Renamed template tags / filters from
restructuredtext
torst
-
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:
- unihan-etl: v0.25.0 (diff)
- cihai: v0.26.0 (diff)
- cihai-cli: v0.21.0 (diff)
- unihan-db: v0.11.0 (diff)
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:
- May 25th, 2023 - 0.20.0: Adds mypy
--strict
compliant typings - June 3rd, 2023 - 0.21.0: Migrate from SQLAlchemy v1.3 to SQLAlchemy v2.0
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 viatyping.Protocol
. - June 17th, 2023: 0.22.0:
- Add
doctest
support - Configuration: Move options from
dict
to typeddataclasses.dataclass
object. - Docs: Split API documentation into multiple pages
- Move
unihan_etl.process
->unihan_etl.core
- Add
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:
-
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:
It also has a pytest plugin
On that note, I also made a pytest plugin for libtmux and libvcs:
- libtmux pytest plugin - bootstrap tmux sessions in your tests
- libvcs pytest plugin - setup and teardown git, mercurial and subversion repos in your tests.
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 ofdict
-like data.libvcs._internal.subprocess.SubprocessCommand
: Deferrablesubprocess
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
- All documentation moved to poetry, Amazon CloudFront and GitHub actions
- HSKFlashCards has been rewritten in Gatsby + TypeScript + chakra-ui
2019 UpdatesLink to section
2019 - AugustLink to section
- unihan-etl 0.10.3 released
- cihai 0.9 released
- cihai-cli 0.5 released, you can now install via
pip install cihai[cli]
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:
- tmux-python, for the tmuxp and libtmux projects.
- vcs-python, for the vcspull and libvcs projects.
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
New front-end appLink to section
New front-end app, “CV”, two versions:
- React Version: React + Redux + Reselect + webpack (source)
- Vue.js Version: Vue.js + Vuex + webpack (source)
See source code on GitHub at https://github.com/tony/cv.
2017 UpdatesLink to section
2017 - DecemberLink to section
New projectLink to section
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.