<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>pig-monkey.com - general</title><link href="https://pig-monkey.com/" rel="alternate"></link><link href="https://pig-monkey.com/category/general/feed" rel="self"></link><id>https://pig-monkey.com/</id><updated>2026-04-24T21:19:50-07:00</updated><entry><title>Link Log 2026-04-24</title><link href="https://pig-monkey.com/2026/04/link-log-20260424/" rel="alternate"></link><published>2026-04-24T00:00:00-07:00</published><updated>2026-04-24T21:19:50-07:00</updated><author><name>Pig Monkey</name></author><id>tag:pig-monkey.com,2026-04-24:/2026/04/link-log-20260424/</id><content type="html">&lt;p&gt;&lt;a href="https://github.com/mpv-player/mpv/commit/1e70e82baa9193f6f027338b0fab0f5078971fbe"&gt;stream_libarchive: workaround various types of locale braindeath&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.davidabram.dev/musings/the-machine-didnt-take-your-craft/"&gt;The machine didn&amp;rsquo;t take your craft. You gave it up.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://library.osu.edu/site/copyright/2026/02/06/artificial-intelligence-and-the-public-domain/"&gt;Artificial Intelligence and the Public Domain&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.mkgandhi.org/nonviolence/phil8.php"&gt;Between Cowardice and Violence&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://citadeloutpost.substack.com/p/greco-futurism-long-post"&gt;Greco-futurism long post&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=fluSgAKaUnk"&gt;Apostate&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.flickr.com/photos/pigmonkey/55228928483/in/dateposted/" title="Marin Spin"&gt;&lt;img src="https://live.staticflickr.com/65535/55228928483_c15d44d6c8_c.jpg" width="800" height="600" alt="Marin Spin"/&gt;&lt;/a&gt;&lt;/p&gt;</content><category term="general"></category><category term="links"></category></entry><entry><title>Make VMs Great Again</title><link href="https://pig-monkey.com/2026/04/make-vms-great-again/" rel="alternate"></link><published>2026-04-19T00:00:00-07:00</published><updated>2026-04-19T16:56:20-07:00</updated><author><name>Pig Monkey</name></author><id>tag:pig-monkey.com,2026-04-19:/2026/04/make-vms-great-again/</id><summary type="html">&lt;p&gt;I have trust issues.&lt;/p&gt;
&lt;p&gt;When &lt;a href="https://claude.com/product/claude-code"&gt;Claude Code&lt;/a&gt; was released last year I was interested in playing with it, but struggled to find a way to run it in a secure, isolated manner. Trusting &lt;a href="https://code.claude.com/docs/en/sandboxing"&gt;its own sandbox&lt;/a&gt; was obviously not in the cards. I explored other people&amp;rsquo;s solutions &amp;ndash; mostly using …&lt;/p&gt;</summary><content type="html">&lt;p&gt;I have trust issues.&lt;/p&gt;
&lt;p&gt;When &lt;a href="https://claude.com/product/claude-code"&gt;Claude Code&lt;/a&gt; was released last year I was interested in playing with it, but struggled to find a way to run it in a secure, isolated manner. Trusting &lt;a href="https://code.claude.com/docs/en/sandboxing"&gt;its own sandbox&lt;/a&gt; was obviously not in the cards. I explored other people&amp;rsquo;s solutions &amp;ndash; mostly using things like &lt;a href="https://github.com/containers/bubblewrap"&gt;Bubblewrap&lt;/a&gt; and &lt;a href="https://www.docker.com/"&gt;Docker&lt;/a&gt; &amp;ndash; but none of them fully satisfied me. It also quickly became evident that most of the value from using Claude Code comes from the &lt;code&gt;--dangerously-skip-permissions&lt;/code&gt; argument, which gives it the ability to pursue a targeted task without constant permission requests. This requires even stricter isolation.&lt;/p&gt;
&lt;p&gt;Eventually I landed on a full virtual machine being the only viable option. I reinstalled &lt;a href="https://developer.hashicorp.com/vagrant"&gt;Vagrant&lt;/a&gt; for the first time in almost a decade and was off to the races.&lt;/p&gt;
&lt;p&gt;I was a heavy user of Vagrant in the twenty-teens. I still really like the interface. But when revisiting it today the software felt rather heavy and clunky. It defaults to using &lt;a href="https://www.virtualbox.org/"&gt;VirtualBox&lt;/a&gt;, which has its own set of issues. There is a &lt;a href="https://github.com/vagrant-libvirt/vagrant-libvirt"&gt;community provided libvirt plugin&lt;/a&gt;, but that seems largely abandoned. &amp;ldquo;Abandoned&amp;rdquo; seems to be the word for most of the Vagrant community &amp;ndash; probably caused in part by the &lt;a href="https://www.theregister.com/2023/08/11/hashicorp_bsl_licence/"&gt;license change&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;So for the past month I&amp;rsquo;ve been building &lt;a href="https://github.com/pigmonkey/migrant"&gt;Migrant&lt;/a&gt;, a lightweight VM management tool for running assumed-malicious AI agents in ephemeral environments. The heavy lifting is done by &lt;a href="https://libvirt.org/"&gt;libvirt&lt;/a&gt; and &lt;a href="https://www.qemu.org/"&gt;QEMU&lt;/a&gt;. Migrant started out as just a way to get a more Vagrant-like interface with modern tooling. I use &lt;a href="https://cloud-init.io/"&gt;cloud-init&lt;/a&gt; to initialize the image, &lt;a href="https://www.ansible.com/"&gt;Ansible&lt;/a&gt; to configure it, and libvirt for the VM management. But because the whole &lt;em&gt;raison d&amp;rsquo;être&lt;/em&gt; of the project is the fact that non-deterministic systems are inherently untrustworthy, Migrant expanded to have a suite of security features. It has network isolation, so the agent can&amp;rsquo;t compromise the rest of your LAN. It has shared folder isolation, so that the agent can&amp;rsquo;t exhaust the host disk or engage in any symlink traversal shenanigans. It has &lt;a href="https://www.wireguard.com/"&gt;WireGuard&lt;/a&gt; tunnel support, implemented host-side such that the VM cannot bypass it (because why wouldn&amp;rsquo;t you want to run all your agents through &lt;a href="https://mullvad.net/en"&gt;Mullvad&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;I think it&amp;rsquo;s pretty great. I use it regularly.&lt;/p&gt;
&lt;p&gt;Migrant also serves as my testament as to how agentic coding should work. I&amp;rsquo;ve written it using Claude Code (initially running in a Vagrant-managed VM, but since the first public commit I&amp;rsquo;ve been building Migrant-in-Migrant), but it is the antithesis of &amp;ldquo;vibe coding&amp;rdquo;. I design the systems. I tell the agent how things should work. I review every line of code it produces. Most of the time I reject its first attempts. I take ownership of and responsibility for commits. The result, I think, is a pretty reasonable looking codebase.&lt;/p&gt;
&lt;p&gt;My conclusion thus far is that coding agents are useful tools. They&amp;rsquo;re an accelerant. They&amp;rsquo;re great for exploring a problem space. There&amp;rsquo;s no going back to software development without them, but if they&amp;rsquo;re not being actively driven by an opinionated human with domain-knowledge and expertise, what they produce is mostly crap. Maybe that will change the future. For now, if you&amp;rsquo;re not challenging every line of output from the clankers, you&amp;rsquo;re doing it wrong. I suspect this applies equally to the application of LLMs in other areas, but personally I haven&amp;rsquo;t found LLMs to be useful for anything other than writing code.&lt;/p&gt;</content><category term="general"></category><category term="toolchain"></category><category term="linux"></category><category term="shell"></category><category term="llm"></category></entry><entry><title>Link Log 2026-03-05</title><link href="https://pig-monkey.com/2026/03/link-log-20260305/" rel="alternate"></link><published>2026-03-05T00:00:00-08:00</published><updated>2026-03-05T20:09:16-08:00</updated><author><name>Pig Monkey</name></author><id>tag:pig-monkey.com,2026-03-05:/2026/03/link-log-20260305/</id><summary type="html">&lt;p&gt;&lt;a href="https://andykirkpatrick.substack.com/p/death-to-trust"&gt;Death to Trust&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://om.co/2026/01/16/our-algorithmic-grey-beige-world/"&gt;Our Algorithmic Grey-Beige World&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://fireborn.mataroa.blog/blog/the-slow-death-of-the-power-user/"&gt;The Slow Death of the Power User&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.dedoimedo.com/computers/plasma-6-4-performance-wayland-x11-power-cpu-kernel.html"&gt;Plasma 6.4 Wayland vs X11, processor and power benchmarks&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://web.archive.org/web/20221110180414/https://minds.wisconsin.edu/bitstream/handle/1793/78760/ChracaSteven.pdf"&gt;Improving Visual Processing During Deadly Force Encounters and Recommendations for Office&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.sciencedirect.com/science/article/pii/S0001457523004657"&gt;The effect of rear bicycle light configurations on drivers&amp;rsquo; perception of cyclists&amp;rsquo; presence and proximity …&lt;/a&gt;&lt;/p&gt;</summary><content type="html">&lt;p&gt;&lt;a href="https://andykirkpatrick.substack.com/p/death-to-trust"&gt;Death to Trust&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://om.co/2026/01/16/our-algorithmic-grey-beige-world/"&gt;Our Algorithmic Grey-Beige World&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://fireborn.mataroa.blog/blog/the-slow-death-of-the-power-user/"&gt;The Slow Death of the Power User&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.dedoimedo.com/computers/plasma-6-4-performance-wayland-x11-power-cpu-kernel.html"&gt;Plasma 6.4 Wayland vs X11, processor and power benchmarks&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://web.archive.org/web/20221110180414/https://minds.wisconsin.edu/bitstream/handle/1793/78760/ChracaSteven.pdf"&gt;Improving Visual Processing During Deadly Force Encounters and Recommendations for Office&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.sciencedirect.com/science/article/pii/S0001457523004657"&gt;The effect of rear bicycle light configurations on drivers&amp;rsquo; perception of cyclists&amp;rsquo; presence and proximity&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=Cu4VGOi4188"&gt;LoFi Festival x Echo World (Elijah Nang, 2023)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.flickr.com/photos/pigmonkey/55130551307/in/dateposted/" title="Point Bonita"&gt;&lt;img src="https://live.staticflickr.com/65535/55130551307_28eeaeeb16_c.jpg" width="800" height="600" alt="Point Bonita"/&gt;&lt;/a&gt;&lt;/p&gt;</content><category term="general"></category><category term="links"></category></entry><entry><title>Tracking Investments with Ledger</title><link href="https://pig-monkey.com/2026/02/ledger-investments/" rel="alternate"></link><published>2026-02-12T00:00:00-08:00</published><updated>2026-02-12T20:37:00-08:00</updated><author><name>Pig Monkey</name></author><id>tag:pig-monkey.com,2026-02-12:/2026/02/ledger-investments/</id><summary type="html">&lt;p&gt;I have a few investment accounts I track with &lt;a href="https://www.ledger-cli.org/"&gt;Ledger&lt;/a&gt;. Ledger has &lt;a href="https://ledger-cli.org/doc/ledger3.html#Currency-and-Commodities"&gt;ways of tracking commodities&lt;/a&gt; that are too complex for me. My investments are index funds of different flavors. I neither know nor care to know what individual components they consist of. They mostly manage themselves. I do want …&lt;/p&gt;</summary><content type="html">&lt;p&gt;I have a few investment accounts I track with &lt;a href="https://www.ledger-cli.org/"&gt;Ledger&lt;/a&gt;. Ledger has &lt;a href="https://ledger-cli.org/doc/ledger3.html#Currency-and-Commodities"&gt;ways of tracking commodities&lt;/a&gt; that are too complex for me. My investments are index funds of different flavors. I neither know nor care to know what individual components they consist of. They mostly manage themselves. I do want to know their balance, but I do not care to think about them more than a few times per year, so the up-to-date-ness factor can be pretty low (which is the complete opposite of everything else that I track in Ledger).&lt;/p&gt;
&lt;p&gt;I represent these things in Ledger using an asset account for the fund, with subaccounts for contributions, earnings, and fees.&lt;/p&gt;
&lt;p&gt;Contributions into the accounts are entered as soon as they happen, since those contributions are being debited out of an account where the up-to-date-ness factor is critical. So a transfer from my bank account to my Roth IRA may look like this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="mf"&gt;2025&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;02&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;01&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Investment&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Company&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;Assets&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Invest&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;RothIRA&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="kr"&gt;Cont&lt;/span&gt;&lt;span class="n"&gt;ributions&lt;/span&gt;&lt;span class="w"&gt;     &lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="mf"&gt;1000.00&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;Assets&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Bank&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Checking&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Earnings and fees are tracked, but I only make those entries about once per quarter. However, the investment companies provide monthly statements. That level of granularity can be useful to have stored. So when I perform my quarterly updates, I&amp;rsquo;ll download each of the monthly statements from the past quarter and use them to make three sets of entries &amp;ndash; two per month for the three months in the quarter. For example, in January 2026 I might make entries for the 2025 Q4 activity such as:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="mf"&gt;2025&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;10&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;31&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Investment&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Company&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;Assets&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Invest&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;RothIRA&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Earnings&lt;/span&gt;&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="mf"&gt;79.05&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;Income&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Invest&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Earnings&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;

&lt;span class="mf"&gt;2025&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;10&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;31&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Investment&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Company&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nb"&gt;Exp&lt;/span&gt;&lt;span class="n"&gt;enses&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Fees&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Invest&lt;/span&gt;&lt;span class="w"&gt;                       &lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="mf"&gt;1.05&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;Assets&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Invest&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;RothIRA&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Fees&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;

&lt;span class="mf"&gt;2025&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;11&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;30&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Investment&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Company&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;Assets&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Invest&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;RothIRA&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Earnings&lt;/span&gt;&lt;span class="w"&gt;           &lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="mf"&gt;103.25&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;Income&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Invest&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Earnings&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;

&lt;span class="mf"&gt;2025&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;11&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;30&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Investment&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Company&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nb"&gt;Exp&lt;/span&gt;&lt;span class="n"&gt;enses&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Fees&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Invest&lt;/span&gt;&lt;span class="w"&gt;                       &lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="mf"&gt;2.20&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;Assets&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Invest&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;RothIRA&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Fees&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;

&lt;span class="mf"&gt;2025&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;12&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;31&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Investment&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Company&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;Assets&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Invest&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;RothIRA&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Earnings&lt;/span&gt;&lt;span class="w"&gt;           &lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;13.82&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;Income&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Invest&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Earnings&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;

&lt;span class="mf"&gt;2025&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;12&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;31&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Investment&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Company&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nb"&gt;Exp&lt;/span&gt;&lt;span class="n"&gt;enses&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Fees&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Invest&lt;/span&gt;&lt;span class="w"&gt;                       &lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="mf"&gt;1.31&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;Assets&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Invest&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;RothIRA&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Fees&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Before making the first entry, I will ask Ledger for the balance of &lt;code&gt;Assets:Invest:RothIRA&lt;/code&gt; as of 2025-10-01 and confirm that the value matches the October statement&amp;rsquo;s opening balance. I will then read the total earnings and fees from the October statement and make the two October entries in my journal. Then I ask Ledger for the balance of the account as of 2025-10-31 and make sure the reported value matches the statement&amp;rsquo;s closing balance. Rinse and repeat for the next two months. I can ignore any contributions mentioned on the statement because those entries were already entered in my journal whenever I made the contribution.&lt;/p&gt;
&lt;p&gt;These transactions are marked as cleared with the &lt;code&gt;*&lt;/code&gt; symbol as I write the entry because the data comes direct from the statement of past activity. There is no separate &lt;a href="/2020/08/reconciling-ledger/"&gt;reconciliation process&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The PDF statements themselves then get stored, but (unlike &lt;a href="/2020/08/receipts-ledger/"&gt;receipts, invoices, and checks&lt;/a&gt;) that happens in a different repository.&lt;/p&gt;
&lt;p&gt;Doing things this way allows me to query for the value of the accounts (as of the last quarter or so), have some idea of how they are performing, and keep track of fees. I don&amp;rsquo;t really care to know any more details than this, nor do I care to think about these accounts with any more frequency than this.&lt;/p&gt;</content><category term="general"></category><category term="finance"></category><category term="plaintextaccounting"></category></entry><entry><title>Tax Payments with Ledger</title><link href="https://pig-monkey.com/2026/02/tax-payments-ledger/" rel="alternate"></link><published>2026-02-11T00:00:00-08:00</published><updated>2026-02-11T20:37:31-08:00</updated><author><name>Pig Monkey</name></author><id>tag:pig-monkey.com,2026-02-11:/2026/02/tax-payments-ledger/</id><summary type="html">&lt;p&gt;How I record taxes in &lt;a href="https://www.ledger-cli.org/"&gt;Ledger&lt;/a&gt; is pretty simple. In my demonstration of &lt;a href="/2026/02/salary-ledger/"&gt;how I record salary payments&lt;/a&gt; the example entry included tax deductions that show the basic account structure.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="mf"&gt;2025&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;12&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;26&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Acme&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Inc&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;Assets&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Bank&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Checking&lt;/span&gt;&lt;span class="w"&gt;                    &lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="mf"&gt;1000.00&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nb"&gt;Exp&lt;/span&gt;&lt;span class="n"&gt;enses&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Tax&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Federal&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;FY2025&lt;/span&gt;&lt;span class="w"&gt;              &lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="mf"&gt;200.00&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nb"&gt;Exp&lt;/span&gt;&lt;span class="n"&gt;enses&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Tax …&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</summary><content type="html">&lt;p&gt;How I record taxes in &lt;a href="https://www.ledger-cli.org/"&gt;Ledger&lt;/a&gt; is pretty simple. In my demonstration of &lt;a href="/2026/02/salary-ledger/"&gt;how I record salary payments&lt;/a&gt; the example entry included tax deductions that show the basic account structure.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="mf"&gt;2025&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;12&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;26&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Acme&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Inc&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;Assets&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Bank&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Checking&lt;/span&gt;&lt;span class="w"&gt;                    &lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="mf"&gt;1000.00&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nb"&gt;Exp&lt;/span&gt;&lt;span class="n"&gt;enses&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Tax&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Federal&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;FY2025&lt;/span&gt;&lt;span class="w"&gt;              &lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="mf"&gt;200.00&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nb"&gt;Exp&lt;/span&gt;&lt;span class="n"&gt;enses&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Tax&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;State&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;FY2025&lt;/span&gt;&lt;span class="w"&gt;                 &lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="mf"&gt;50.00&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nb"&gt;Exp&lt;/span&gt;&lt;span class="n"&gt;enses&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Insurance&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Medical&lt;/span&gt;&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="mf"&gt;20.00&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;Income&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Salary&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;I pay state and federal taxes, so I have two main accounts: &lt;code&gt;Expenses:Tax:Federal&lt;/code&gt; and &lt;code&gt;Expenses:Tax:State&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Tax payments (and refunds for overpayments) can occur in years other than the tax years that the payments are related to. This requires some way to query transactions by tax years rather than just the posting date. You could do this by tagging the transactions, but I prefer to use a fourth account level to indicate the fiscal year. Thus my 2025 taxes live in &lt;code&gt;Expenses:Tax:Federal:FY2025&lt;/code&gt; and &lt;code&gt;Expenses:Tax:State:FY2025&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;If I pay an accountant to help me file taxes, I will log the payment against the &lt;code&gt;Expenses:Tax:Preparation&lt;/code&gt; account, which uses the same fiscal year subaccount.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="mf"&gt;2026&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;02&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;01&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;The&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Accountant&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nb"&gt;Exp&lt;/span&gt;&lt;span class="n"&gt;enses&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Tax&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Preparation&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;FY2025&lt;/span&gt;&lt;span class="w"&gt;          &lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="mf"&gt;100.00&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;Assets&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Bank&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Checking&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;If I receive a federal refund in March, I will debit it out of the appropriate tax account. I also tag these transactions with &lt;code&gt;refund-tax&lt;/code&gt; so I can easily query them later.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="mf"&gt;2026&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;03&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;15&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;IRS&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;2025&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Tax&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Refund&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;refund&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;tax&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;Assets&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Bank&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Checking&lt;/span&gt;&lt;span class="w"&gt;                    &lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="mf"&gt;1000.00&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nb"&gt;Exp&lt;/span&gt;&lt;span class="n"&gt;enses&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Tax&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Federal&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;FY2025&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;If instead I discover that I still owe federal taxes in March, I will credit the payment into the appropriate tax account. I tag these transactions with &lt;code&gt;final-tax&lt;/code&gt; so I can easily query them later.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="mf"&gt;2026&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;03&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;15&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;IRS&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;2025&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Federal&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Taxes&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;final&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;tax&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nb"&gt;Exp&lt;/span&gt;&lt;span class="n"&gt;enses&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Tax&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Federal&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;FY2025&lt;/span&gt;&lt;span class="w"&gt;             &lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="mf"&gt;1000.00&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;Assets&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Bank&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Checking&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Some years I have made quarterly estimated tax payments instead of having taxes withheld from my paycheck. These entries look as you would expect, but I tag them with &lt;code&gt;estimated-tax&lt;/code&gt; as well as the quarter number for future queries.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="mf"&gt;2025&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;09&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;02&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;IRS&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;2025&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Q3&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Estimated&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Tax&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;estimated&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;tax&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;q3&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nb"&gt;Exp&lt;/span&gt;&lt;span class="n"&gt;enses&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Tax&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Federal&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;FY2025&lt;/span&gt;&lt;span class="w"&gt;             &lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="mf"&gt;1000.00&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;Assets&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Bank&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Checking&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;The bottom line with all of this is that I can do a simple &lt;code&gt;ledger balance fy2025&lt;/code&gt; and see a complete and easy to understand picture of my 2025 taxes. Or I can run &lt;code&gt;ledger balance expenses:tax:federal&lt;/code&gt; to see what I&amp;rsquo;ve paid in federal taxes over the past 14 years, broken out by year.&lt;/p&gt;
&lt;p&gt;As with most things related to Ledger, this seems like pretty basic stuff when you&amp;rsquo;re doing it but becomes a superpower when you realize how most of the rest of the world lives.&lt;/p&gt;</content><category term="general"></category><category term="finance"></category><category term="plaintextaccounting"></category></entry><entry><title>Salary Tracking with Ledger</title><link href="https://pig-monkey.com/2026/02/salary-ledger/" rel="alternate"></link><published>2026-02-10T00:00:00-08:00</published><updated>2026-02-10T17:54:02-08:00</updated><author><name>Pig Monkey</name></author><id>tag:pig-monkey.com,2026-02-10:/2026/02/salary-ledger/</id><summary type="html">&lt;p&gt;In my previous &lt;a href="/tag/plaintextaccounting/"&gt;descriptions of how I perform plain text accounting&lt;/a&gt; I did not discuss logging salary income with &lt;a href="https://www.ledger-cli.org/"&gt;Ledger&lt;/a&gt;. My basic strategy is to create an entry with all the same data that appears on the paystub. The only number that actually matters to me is whatever amount ends …&lt;/p&gt;</summary><content type="html">&lt;p&gt;In my previous &lt;a href="/tag/plaintextaccounting/"&gt;descriptions of how I perform plain text accounting&lt;/a&gt; I did not discuss logging salary income with &lt;a href="https://www.ledger-cli.org/"&gt;Ledger&lt;/a&gt;. My basic strategy is to create an entry with all the same data that appears on the paystub. The only number that actually matters to me is whatever amount ends up in my bank account, but it is still important to have withholdings documented for later querying.&lt;/p&gt;
&lt;p&gt;A simplified entry would look like this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="mf"&gt;2025&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;12&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;26&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Acme&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Inc&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;Assets&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Bank&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Checking&lt;/span&gt;&lt;span class="w"&gt;                    &lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="mf"&gt;1000.00&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nb"&gt;Exp&lt;/span&gt;&lt;span class="n"&gt;enses&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Tax&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Federal&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;FY2025&lt;/span&gt;&lt;span class="w"&gt;              &lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="mf"&gt;200.00&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nb"&gt;Exp&lt;/span&gt;&lt;span class="n"&gt;enses&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Tax&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;State&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;FY2025&lt;/span&gt;&lt;span class="w"&gt;                 &lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="mf"&gt;50.00&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nb"&gt;Exp&lt;/span&gt;&lt;span class="n"&gt;enses&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Insurance&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Medical&lt;/span&gt;&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="mf"&gt;20.00&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;Income&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Salary&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;At the time of entry, I store a PDF of the paystub &lt;a href="/2020/08/receipts-ledger/"&gt;just like a receipt&lt;/a&gt;. (In Ye Olden Days this came from scanning a piece of paper, but now I just download the PDF from a web site.) This entry will be &lt;a href="/2020/08/reconciling-ledger/"&gt;reconciled&lt;/a&gt; and get cleared with the &lt;code&gt;*&lt;/code&gt; mark the next time I login to the bank account and verify the amount I received.&lt;/p&gt;
&lt;p&gt;If I want to know how much money the employer or a government thinks I made last year, I can just ask Ledger for the balance of the &lt;code&gt;Income:Salary&lt;/code&gt; account.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;$ ledger balance income:salary --period &lt;span class="m"&gt;2025&lt;/span&gt;
        &lt;span class="nv"&gt;$-&lt;/span&gt;&lt;span class="m"&gt;1270&lt;/span&gt;.00   Income:Salary
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;However, this number has no real bearing on my reality. What is much more useful to me is the ability to query how much money I actually received last year, e.g. my take-home pay. I can do this by asking Ledger to show the balance of the bank account, limiting it to postings that involved the &lt;code&gt;Income:Salary&lt;/code&gt; account.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;$ ledger balance assets:bank:checking -l &lt;span class="s2"&gt;&amp;quot;any(account =~ /Income:Salary/)&amp;quot;&lt;/span&gt; --period &lt;span class="m"&gt;2025&lt;/span&gt;
        &lt;span class="nv"&gt;$1000&lt;/span&gt;.00    Assets:Bank:Checking
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;If the only financial relationship you have with your employer is them giving you money in the form of a salary, then you could simplify this by just asking Ledger for the balance of transactions in the bank account from that payee.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;$ ledger balance assets:bank:checking and &lt;span class="s2"&gt;&amp;quot;@Acme Inc&amp;quot;&lt;/span&gt; --period &lt;span class="m"&gt;2025&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;However, my employer sells stuff, and sometimes I buy that stuff, so for me the above query would show me my salary less my employee purchases. Which is mostly worthless.&lt;/p&gt;
&lt;p&gt;When I receive a W-2 after the end of the year, I check all of its entries &amp;ndash; gross pay, pre- and post-tax deductions, etc &amp;ndash; against Ledger with a simple &lt;code&gt;ledger balance "@Acme Inc" --period 2025&lt;/code&gt;. Having all this data stored locally in queryable plain text, rather than needing to access some web portal or read through various PDFs like a prehistoric savage, is a key life strategy for me.&lt;/p&gt;</content><category term="general"></category><category term="finance"></category><category term="plaintextaccounting"></category></entry><entry><title>Night Moves</title><link href="https://pig-monkey.com/2026/01/night-moves/" rel="alternate"></link><published>2026-01-25T00:00:00-08:00</published><updated>2026-01-25T10:58:36-08:00</updated><author><name>Pig Monkey</name></author><id>tag:pig-monkey.com,2026-01-25:/2026/01/night-moves/</id><summary type="html">&lt;p&gt;After falling out of the habit for a few months, I resumed my &lt;a href="/2024/07/night-run/"&gt;night runs&lt;/a&gt; at the end of December. I&amp;rsquo;ve been back into it for about a month now. It&amp;rsquo;s great, speed-running &lt;a href="https://vogelmusic.bandcamp.com/track/night-city"&gt;night city&lt;/a&gt;, just me and the coyotes.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.flickr.com/photos/pigmonkey/55060498646/in/dateposted/" title="After Dark"&gt;&lt;img src="https://live.staticflickr.com/65535/55060498646_fd8091f84d_c.jpg" width="800" height="600" alt="After Dark"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;New to this cycle, I now stop at …&lt;/p&gt;</summary><content type="html">&lt;p&gt;After falling out of the habit for a few months, I resumed my &lt;a href="/2024/07/night-run/"&gt;night runs&lt;/a&gt; at the end of December. I&amp;rsquo;ve been back into it for about a month now. It&amp;rsquo;s great, speed-running &lt;a href="https://vogelmusic.bandcamp.com/track/night-city"&gt;night city&lt;/a&gt;, just me and the coyotes.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.flickr.com/photos/pigmonkey/55060498646/in/dateposted/" title="After Dark"&gt;&lt;img src="https://live.staticflickr.com/65535/55060498646_fd8091f84d_c.jpg" width="800" height="600" alt="After Dark"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;New to this cycle, I now stop at one of those outdoor fitness areas near the end of my run and knock out some pull-ups. (It turns out using a bar is in fact easier than my normal &lt;a href="/2025/07/pull-ups/"&gt;finger pull-ups&lt;/a&gt;.) There&amp;rsquo;s usually a couple other weirdos there.&lt;/p&gt;</content><category term="general"></category><category term="run"></category><category term="physical training"></category></entry><entry><title>Link Log 2026-01-21</title><link href="https://pig-monkey.com/2026/01/link-log-20260121/" rel="alternate"></link><published>2026-01-21T00:00:00-08:00</published><updated>2026-01-21T21:07:04-08:00</updated><author><name>Pig Monkey</name></author><id>tag:pig-monkey.com,2026-01-21:/2026/01/link-log-20260121/</id><content type="html">&lt;p&gt;&lt;a href="https://www.altcinc.com/work/chimera"&gt;Chimera&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://andykirkpatrick.substack.com/p/vbl-2023"&gt;VBL 2023&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.shibuya.film/series/white-rabbit"&gt;White Rabbit&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://om.co/2025/05/18/designing-a-life/"&gt;Designing a Life&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://tante.cc/2026/01/08/personal-computing/"&gt;Personal computing&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://obsoletearchive.substack.com/p/when-sega-built-the-most-extreme"&gt;When Sega Built the Most Extreme Arcade Cabinet&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.rollingstone.com/feature/beat-godfather-meets-glitter-mainman-william-burroughs-interviews-david-bowie-92508/"&gt;Beat Godfather Meets Glitter Mainman: William Burroughs Interviews David Bowie&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.flickr.com/photos/pigmonkey/55054892549/in/dateposted/" title="Tam Cruising"&gt;&lt;img src="https://live.staticflickr.com/65535/55054892549_877046309f_c.jpg" width="800" height="600" alt="Tam Cruising"/&gt;&lt;/a&gt;&lt;/p&gt;</content><category term="general"></category><category term="links"></category></entry><entry><title>I brush my teeth while standing on one foot.</title><link href="https://pig-monkey.com/2026/01/toothbrush-balance/" rel="alternate"></link><published>2026-01-10T00:00:00-08:00</published><updated>2026-01-10T10:43:27-08:00</updated><author><name>Pig Monkey</name></author><id>tag:pig-monkey.com,2026-01-10:/2026/01/toothbrush-balance/</id><content type="html">&lt;p&gt;It takes about two minute to &lt;a href="/2025/07/how-to-brush-teeth/"&gt;brush your teeth&lt;/a&gt;. These two minutes are an opportunity to improve balance and ankle strength. Sometimes I switch feet halfway through, other times I&amp;rsquo;m feeling more ambitious and will balance on one foot in the morning and the other that night.&lt;/p&gt;</content><category term="general"></category><category term="micro"></category></entry><entry><title>Better Living Through Getting Stomped</title><link href="https://pig-monkey.com/2026/01/thai-massage/" rel="alternate"></link><published>2026-01-07T00:00:00-08:00</published><updated>2026-01-07T17:13:11-08:00</updated><author><name>Pig Monkey</name></author><id>tag:pig-monkey.com,2026-01-07:/2026/01/thai-massage/</id><summary type="html">&lt;p&gt;Four years ago I started going to a &lt;a href="https://en.wikipedia.org/wiki/Traditional_Thai_massage"&gt;Thai massage&lt;/a&gt; parlor.&lt;/p&gt;
&lt;p&gt;This is the practice where they walk on your back, drive their elbows and the heel of their palms into you, and sometimes tie your limbs into knots. My findings are that the older and smaller the Thai lady …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Four years ago I started going to a &lt;a href="https://en.wikipedia.org/wiki/Traditional_Thai_massage"&gt;Thai massage&lt;/a&gt; parlor.&lt;/p&gt;
&lt;p&gt;This is the practice where they walk on your back, drive their elbows and the heel of their palms into you, and sometimes tie your limbs into knots. My findings are that the older and smaller the Thai lady, the more brutally she stomps on you. I spend much of the session attempting to practice the &lt;a href="https://en.wikipedia.org/wiki/Vipassana_movement#S._N._Goenka"&gt;Vipassana body sweep&lt;/a&gt; technique under duress and trying not to vocalize the pain. It&amp;rsquo;s great and I love it.&lt;/p&gt;
&lt;p&gt;They would of course lessen the pressure if asked, but this is both incompatible with my male ego and would go against the teachings of the Bodhisattva in the incarnation known as Patrick Swayze.&lt;/p&gt;
&lt;video width="1280" controls&gt;
    &lt;source src="/media/video/road_house-pain-dont-hurt.mp4" type="video/mp4"&gt;
    Your browser does not support the video tag.
&lt;/video&gt;

&lt;p&gt;If I were a rich man I would go monthly, but I am not, so I limit myself to three or four times per year. I consider this a component of my prana-bindu training.&lt;/p&gt;</content><category term="general"></category><category term="health"></category></entry><entry><title>Just Another Saturday</title><link href="https://pig-monkey.com/2026/01/power-outage/" rel="alternate"></link><published>2026-01-06T00:00:00-08:00</published><updated>2026-01-06T22:15:54-08:00</updated><author><name>Pig Monkey</name></author><id>tag:pig-monkey.com,2026-01-06:/2026/01/power-outage/</id><summary type="html">&lt;p&gt;Two weeks ago I &lt;a href="https://sfstandard.com/2025/12/22/san-francisco-blackout-what-we-know-pge/"&gt;lost power&lt;/a&gt; from about 14:00 till about 21:00. This had negligible impact on my day. I took out &lt;a href="https://www.sofirnlight.com/products/sofirn-lt1-anduril-2-0-rechargeable-camping-lantern"&gt;my lamp&lt;/a&gt; and continued with the itinerary. My time was spent:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Drinking tea&lt;sup class="footnote-ref" id="fnref:stove"&gt;&lt;a rel="footnote" href="#fn:stove" title="see footnote"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Lifting &lt;a href="/2025/10/resistance-regime/"&gt;Harambe&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Reading &lt;a href="https://en.wikipedia.org/wiki/Sentimental_Education"&gt;Flaubert&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Pursuing satori&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It was just another Saturday afternoon …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Two weeks ago I &lt;a href="https://sfstandard.com/2025/12/22/san-francisco-blackout-what-we-know-pge/"&gt;lost power&lt;/a&gt; from about 14:00 till about 21:00. This had negligible impact on my day. I took out &lt;a href="https://www.sofirnlight.com/products/sofirn-lt1-anduril-2-0-rechargeable-camping-lantern"&gt;my lamp&lt;/a&gt; and continued with the itinerary. My time was spent:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Drinking tea&lt;sup class="footnote-ref" id="fnref:stove"&gt;&lt;a rel="footnote" href="#fn:stove" title="see footnote"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Lifting &lt;a href="/2025/10/resistance-regime/"&gt;Harambe&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Reading &lt;a href="https://en.wikipedia.org/wiki/Sentimental_Education"&gt;Flaubert&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Pursuing satori&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It was just another Saturday afternoon.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.flickr.com/photos/pigmonkey/55028213606/in/dateposted/" title="Power Outage Leg Day"&gt;&lt;img src="https://live.staticflickr.com/65535/55028213606_1d717ca9b2_c.jpg" width="800" height="600" alt="Power Outage Leg Day"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I threw Lee and Brian at judo today. Lee is 14, and Brian is 13 but taller and heavier.&lt;/p&gt;
&lt;p&gt;I told Sibylla &amp;amp; she asked what my teacher had said. I said he had said it was very good.&lt;/p&gt;
&lt;p&gt;Sibylla said that didn&amp;rsquo;t sound very character-building. I said most authorities on child psychology said a child should be given encouragement and reinforcement. Sib said Bandura and who else? I said everybody else. I didn&amp;rsquo;t say that the authorities also said a parent had to be able to set limits because I was afraid she might suddenly decide to make up for lost time and set a lot of limits.&lt;/p&gt;
&lt;p&gt;Sibylla said: Well just remember Richie, becoming the great judo champion is not the end of the story.&lt;/p&gt;
&lt;p&gt;I said I didn&amp;rsquo;t think I was the great judo champion just because I could beat Lee and Brian at Bermondsey Boys Junior Judo.&lt;/p&gt;
&lt;p&gt;Sibylla said: It isn&amp;rsquo;t a question of beating X and Y. What if there&amp;rsquo;s no one you can&amp;rsquo;t beat? It&amp;rsquo;s a question of perfecting your skill and achieving satori. What on earth are they teaching you in this class?&lt;/p&gt;
&lt;p&gt;I said we mainly concentrated on learning how to throw people to the ground. Sib said: Must I do &lt;em&gt;everything&lt;/em&gt; myself? She was grinning from ear to ear.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Helen Dewitt, &lt;a href="https://en.wikipedia.org/wiki/The_Last_Samurai_(novel)"&gt;The Last Samurai&lt;/a&gt;&lt;/p&gt;
&lt;div id="footnotes"&gt;
    &lt;h2&gt;Notes&lt;/h2&gt;
    &lt;ol&gt;
        &lt;li id="fn:stove"&gt;&lt;a rev="footnote" href="#fnref:stove" class="footnote-return" title="return to article"&gt;&amp;crarr;&lt;/a&gt; Of course I had to boil water on my gas stove like a savage instead of using the electric kettle.&lt;/li&gt;
    &lt;/ol&gt;
&lt;/div&gt;</content><category term="general"></category><category term="admin"></category><category term="quote"></category></entry><entry><title>Concerning the Tawashi</title><link href="https://pig-monkey.com/2025/12/tawashi/" rel="alternate"></link><published>2025-12-29T00:00:00-08:00</published><updated>2025-12-29T16:58:28-08:00</updated><author><name>Pig Monkey</name></author><id>tag:pig-monkey.com,2025-12-29:/2025/12/tawashi/</id><summary type="html">&lt;p&gt;I scrub my dishes and kitchen counter tops with a &lt;a href="https://en.kamenoko-tawashi.co.jp/"&gt;Kamenoko Tawashi&lt;/a&gt;. The palm fiber of the Tawashi is stiff enough for a good scouring, but does not scratch anything. It doesn&amp;rsquo;t hold onto food scraps the way some other brushes do. It dries relatively quickly when hung from …&lt;/p&gt;</summary><content type="html">&lt;p&gt;I scrub my dishes and kitchen counter tops with a &lt;a href="https://en.kamenoko-tawashi.co.jp/"&gt;Kamenoko Tawashi&lt;/a&gt;. The palm fiber of the Tawashi is stiff enough for a good scouring, but does not scratch anything. It doesn&amp;rsquo;t hold onto food scraps the way some other brushes do. It dries relatively quickly when hung from its wire loop or placed in a two-piece soap dish, thus supporting &lt;a href="/2019/02/scouring/"&gt;my war on sponges&lt;/a&gt;. I use the #1 size, which is small enough to fit comfortably in my hand and to be shoved into drink ware. It is the perfect kitchen brush.&lt;/p&gt;
&lt;p&gt;I use the same brush for about two years before replacing it. Every few months I toss it in &lt;a href="/2019/12/pressure-cooker-sterilization/"&gt;the kitchen autoclave&lt;/a&gt;. I could keep them for longer, but I give my Tawashi enough unintentional haircuts when cleaning knives that I&amp;rsquo;m usually ready for a new one after a couple years.&lt;/p&gt;
&lt;p&gt;The only other brushes I use in the kitchen are a &lt;a href="https://www.oxo.com/bottle-brush.html"&gt;bottle brush&lt;/a&gt; and straw brush. I also have one of those &lt;a href="https://www.amazon.com/exec/obidos/ASIN/B00FKBR1ZG/"&gt;chainmail scrubbers&lt;/a&gt; for my cast iron, but the Tawashi gets used much more often.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.flickr.com/photos/pigmonkey/55013238595/in/dateposted/" title="Tawashi, Mamison, Sal Suds"&gt;&lt;img src="https://live.staticflickr.com/65535/55013238595_c36d7a532d_c.jpg" width="800" height="600" alt="Tawashi, Mamison, Sal Suds"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The Tawashi, &lt;a href="/2019/07/cleaner/"&gt;my Sal Suds spray&lt;/a&gt;, and my pink &lt;a href="https://nymag.com/strategist/2017/05/the-best-rubber-gloves-for-dishwashing-are-from-korea.html"&gt;Mamison gloves&lt;/a&gt; complete my kitchen ablution armaments. (The pink color is critical for maximum cleaning.)&lt;/p&gt;
&lt;p&gt;Tawashi are made by a number of manufacturers. Many are garbage. Those from Kamenoko are consistently good. I avoid it if it does not come in the orange wrapper with the picture of the turtle on it.&lt;/p&gt;</content><category term="general"></category><category term="review"></category><category term="ablution"></category></entry><entry><title>Link Log 2025-12-28</title><link href="https://pig-monkey.com/2025/12/link-log-20251228/" rel="alternate"></link><published>2025-12-28T00:00:00-08:00</published><updated>2025-12-28T21:42:37-08:00</updated><author><name>Pig Monkey</name></author><id>tag:pig-monkey.com,2025-12-28:/2025/12/link-log-20251228/</id><content type="html">&lt;p&gt;&lt;a href="https://www.libraryofuseless.com/"&gt;Library of Useless&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.everydaycommentary.com/www.everydaycommentary.com/2025/12/23/to-oil-or-not-to-oil"&gt;To Oil or not to Oil&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.persuasion.community/p/the-woke-right-stands-at-the-door"&gt;The Woke Right Stands At the Door&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://strengthaxis.substack.com/p/free-gift-the-smart-lifters-band"&gt;The Smart Lifter&amp;rsquo;s Band Training System&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.xda-developers.com/your-unpowered-ssd-is-slowly-losing-your-data/"&gt;The unpowered SSDs in your drawer are slowly losing your data&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.propublica.org/article/rx-inspector-prescription-drug-lookup"&gt;Rx Inspector: ProPublica&amp;rsquo;s New Tool Provides Drug Info the FDA Won&amp;rsquo;t&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.flickr.com/photos/pigmonkey/54865784752/" title="Fortune"&gt;&lt;img src="https://live.staticflickr.com/65535/54865784752_4f6961b9a1_z.jpg" width="480" height="640" alt="Fortune"/&gt;&lt;/a&gt;&lt;/p&gt;</content><category term="general"></category><category term="links"></category></entry><entry><title>The Hero We Need</title><link href="https://pig-monkey.com/2025/12/influencer/" rel="alternate"></link><published>2025-12-16T00:00:00-08:00</published><updated>2025-12-16T15:16:16-08:00</updated><author><name>Pig Monkey</name></author><id>tag:pig-monkey.com,2025-12-16:/2025/12/influencer/</id><summary type="html">&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Influencer_(film)"&gt;Influencer&lt;/a&gt; is mistakenly billed as a horror film, but is actually an inspirational story of a young woman using her murder island to try to make the world a better place by pruning the insta-face-twat-tok-tuber population.&lt;/p&gt;
&lt;p&gt;I eagerly awaited the sequel, and can now report that &lt;a href="https://en.wikipedia.org/wiki/Influencers_(film)"&gt;Influencers&lt;/a&gt; is even better …&lt;/p&gt;</summary><content type="html">&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Influencer_(film)"&gt;Influencer&lt;/a&gt; is mistakenly billed as a horror film, but is actually an inspirational story of a young woman using her murder island to try to make the world a better place by pruning the insta-face-twat-tok-tuber population.&lt;/p&gt;
&lt;p&gt;I eagerly awaited the sequel, and can now report that &lt;a href="https://en.wikipedia.org/wiki/Influencers_(film)"&gt;Influencers&lt;/a&gt; is even better than the first one. I am here for the Influencer Cinematic Universe.&lt;/p&gt;
&lt;p&gt;Whoever composed the score clearly spent a lot of time listening to &lt;a href="https://en.wikipedia.org/wiki/The_Girl_with_the_Dragon_Tattoo_(soundtrack)"&gt;The Girl with the Dragon Tattoo soundtrack&lt;/a&gt; (and who among us has not). Specifically they seem to be a big fan of &lt;a href="https://www.nin.wiki/Pinned_And_Mounted"&gt;track 4&lt;/a&gt;.&lt;/p&gt;</content><category term="general"></category><category term="media"></category><category term="influencer"></category></entry><entry><title>A Gentleman's Calling Card</title><link href="https://pig-monkey.com/2025/12/calling-card/" rel="alternate"></link><published>2025-12-04T00:00:00-08:00</published><updated>2025-12-04T18:05:01-08:00</updated><author><name>Pig Monkey</name></author><id>tag:pig-monkey.com,2025-12-04:/2025/12/calling-card/</id><summary type="html">&lt;p&gt;To my great surprise, my stock of calling cards is running low.&lt;/p&gt;
&lt;p&gt;I had a batch of calling cards printed last December. I explicitly wanted calling cards, not business cards. Something with just my name, telephone, and email address. Nothing else. I ordered samples from the typical on-demand business card …&lt;/p&gt;</summary><content type="html">&lt;p&gt;To my great surprise, my stock of calling cards is running low.&lt;/p&gt;
&lt;p&gt;I had a batch of calling cards printed last December. I explicitly wanted calling cards, not business cards. Something with just my name, telephone, and email address. Nothing else. I ordered samples from the typical on-demand business card printing websites, but I didn&amp;rsquo;t like any of them. Most were too glossy or printed on too thin a stock. I knew I wanted something I could write on with a fountain pen (for this is what separates us from savages), in case I desired to share information in addition to what was printed on the card.&lt;/p&gt;
&lt;p&gt;Eventually I realized that what I wanted was a letterpress printed card. I found a letterpress printer, requested samples, and confirmed they were perfect. Tasteful thickness, subtle off-white coloring. I placed an order.&lt;/p&gt;
&lt;p&gt;This was done mostly as a joke. Who actually needs calling cards today? I figured the batch would last me years. Two weeks ago, as I was restocking a jacket pocket before going out for the evening, I was shocked to find the box mostly empty. It turns out, as a gentleman, a man about town, a &lt;em&gt;bon vivant&lt;/em&gt;, calling cards are actually useful.&lt;/p&gt;
&lt;p&gt;Anyway, I have my calling cards printed by &lt;a href="https://hobancards.com/"&gt;Hoban&lt;/a&gt;. They sent out a holiday coupon today, so I reordered another batch.&lt;/p&gt;
&lt;p&gt;If you see me at a soiree, ask for a card.&lt;/p&gt;</content><category term="general"></category><category term="stationery"></category><category term="edc"></category></entry><entry><title>Link Log 2025-11-24</title><link href="https://pig-monkey.com/2025/11/link-log-20251124/" rel="alternate"></link><published>2025-11-24T00:00:00-08:00</published><updated>2025-11-24T20:15:05-08:00</updated><author><name>Pig Monkey</name></author><id>tag:pig-monkey.com,2025-11-24:/2025/11/link-log-20251124/</id><summary type="html">&lt;p&gt;&lt;a href="https://brainbaking.com/post/2025/11/thumbs-up/"&gt;Thumbs Up&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.bbc.co.uk/news/special/2014/newsspec_8703/index.html"&gt;Gunther, Christine and Otto&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.robinsloan.com/lab/all-that-is-solid/"&gt;All that is solid melts into code&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.theatlantic.com/technology/archive/2025/09/minneapolis-church-shooting-influencers/684083/"&gt;The Mass Shooters Are Performing for One Another&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://arstechnica.com/information-technology/2025/08/the-personhood-trap-how-ai-fakes-human-personality/"&gt;The personhood trap: How AI fakes human personality&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.theatlantic.com/ideas/archive/2025/09/unilateral-disarmament/684086/"&gt;America Surrenders in the Global Information Wars&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://old.reddit.com/r/AskHistorians/comments/12lwoi/the_respective_roles_of_ninja_and_shinobi/"&gt;The respective roles of Ninja and Shinobi&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=Q1DUvTm-eHo"&gt;This Corrosion (Lisa Cuthbert, 2012)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=wD4hB4o79w0"&gt;How to …&lt;/a&gt;&lt;/p&gt;</summary><content type="html">&lt;p&gt;&lt;a href="https://brainbaking.com/post/2025/11/thumbs-up/"&gt;Thumbs Up&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.bbc.co.uk/news/special/2014/newsspec_8703/index.html"&gt;Gunther, Christine and Otto&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.robinsloan.com/lab/all-that-is-solid/"&gt;All that is solid melts into code&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.theatlantic.com/technology/archive/2025/09/minneapolis-church-shooting-influencers/684083/"&gt;The Mass Shooters Are Performing for One Another&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://arstechnica.com/information-technology/2025/08/the-personhood-trap-how-ai-fakes-human-personality/"&gt;The personhood trap: How AI fakes human personality&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.theatlantic.com/ideas/archive/2025/09/unilateral-disarmament/684086/"&gt;America Surrenders in the Global Information Wars&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://old.reddit.com/r/AskHistorians/comments/12lwoi/the_respective_roles_of_ninja_and_shinobi/"&gt;The respective roles of Ninja and Shinobi&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=Q1DUvTm-eHo"&gt;This Corrosion (Lisa Cuthbert, 2012)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=wD4hB4o79w0"&gt;How to Dance Goth&lt;/a&gt;&lt;/p&gt;
&lt;video width="1280" controls&gt;
    &lt;source src="/media/video/audrey_hepburn-individual_rights.mkv" type="video/mp4"&gt;
    Your browser does not support the video tag.
&lt;/video&gt;</content><category term="general"></category><category term="links"></category></entry></feed>