dahlia
Upyo 0.6.0: MIME composition, streaming attachments, and calendar invitations
I added ActivityPub to this blog
Optique 1.2.0: fluent modifiers, deferred values, and new integrations
Why implementing ActivityPub is hard, and why it doesn't have to be
Optique 1.1.0: Command discovery, value parsers, and ordered grammars
I wish Deno would keep doing what it does best
LogTape 2.1.0: Throttling, logfmt, and smarter redaction
The Myriad Project: A separator for ten-thousands
Building a Threadiverse Community Platform
From five optional fields to a discriminated union: CLI parsing with Optique 1.0
Optique 1.0.0: environment variables, interactive prompts, and 1.0 API cleanup
The argument collapses every social and structural explanation into a single move: the individual chose it. This is the classic libertarian reduction, and it has a well-known failure mode. Under this framework, there is no coherent distinction between a choice made under duress and a choice made freely. If a developer uses LLM coding assistants because their livelihood depends on keeping pace with colleagues who do, and the author's response is that no one forced them, well, no one forces a person at gunpoint to hand over their wallet either. The gun is still there.
The author acknowledges, mid-essay, that the system “can change incentives and tradeoffs.” But this is precisely what a structural analysis is. Once you admit that incentives can be arranged such that a person has no viable path except the one the system rewards, you have already conceded the core Marxian point. Calling it “alienation” or not is just terminology.
What the alienation framework actually claims is not that individuals don't choose. It's that the conditions under which those choices are made matter morally and analytically. My own essay is careful about this: I noted explicitly that the tension between craft and efficiency doesn't vanish under different political arrangements. The question survives capitalism; capitalism just answers it harshly. Dismissing this as a “denial of the craftsman” misreads the argument.
On LLM capabilities: the claim that none of these problems can be solved by LLMs (understanding systems, architecture decisions, debugging) reads as confident as of roughly two years ago. The frontier has moved. Coding agents are already handling non-trivial architectural reasoning in constrained domains, and the trajectory is visible. Anchoring the argument to current limitations, stated as permanent ones, is a move that ages badly.
[1]: https://writings.hongminhee.org/2026/03/craft-alienation-llm...
Why craft-lovers are losing their craft
I maintain an open source project funded by the Sovereign Tech Fund. Getting there wasn't easy: the application process is long, the amounts are modest compared to a VC round, and you have to build community trust before any of that becomes possible. But the result is a project that isn't on anyone's exit timeline.
I'm not saying the startup path is without its own difficulties. But structurally, it offloads the costs onto the community that eventually comes to depend on you. By the time those costs come due, the founders have either cashed out or the company is circling the drain, and the users are left holding the bag. What's happening to Astral fits that pattern almost too neatly.
The healthier model, I think, is to build community first and then seek public or nonprofit funding: NLnet, STF, or similar. It's slower and harder, but it doesn't have a built-in betrayal baked into the structure.
Part of what makes this difficult is that public funding for open source infrastructure is still very uneven geographically. I'm based in Korea, and there's essentially nothing here comparable to what European developers can access. I had no choice but to turn to European funds, because there was simply no domestic equivalent. That's a structural problem worth taking seriously. The more countries that leave this entirely to the private sector, the more we end up watching exactly this kind of thing play out.