<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: beshrkayali</title><link>https://news.ycombinator.com/user?id=beshrkayali</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Wed, 10 Jun 2026 14:53:04 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=beshrkayali" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by beshrkayali in "Stop Advertising in Your Commits"]]></title><description><![CDATA[
<p>In the case of Claude or others, it is not just an advertisement, it's the weird shape the industry is spinning LLM-assisted-coding as a "co-author" relationship where it should be thought of more like a user-using-a-tool relationship. When you make a design with Photoshop or InDesign, it's not "co-designed by Photoshop", it's just a tool and you used the filters it provides.<p>It is slightly weird that people accepted this new trend just like that, probably because they think this is being transparent and wanting to give attribution, but it'd be more useful like what the Linux kernel "AI Coding Assistants" page describes, something like `AGENT_NAME:MODEL_VERSION [TOOL1] [TOOL2]`, at least we get to know which model was used and/if any additional tooling on top. And `Assisted-by:` is more appropriate for that purpose than `Co-authored-by`.</p>
]]></description><pubDate>Tue, 26 May 2026 20:05:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=48285263</link><dc:creator>beshrkayali</dc:creator><comments>https://news.ycombinator.com/item?id=48285263</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48285263</guid></item><item><title><![CDATA[Domain Knowledge Is the Leverage]]></title><description><![CDATA[
<p>Article URL: <a href="https://log.beshr.com/domain-knowledge-is-the-leverage/">https://log.beshr.com/domain-knowledge-is-the-leverage/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=48166832">https://news.ycombinator.com/item?id=48166832</a></p>
<p>Points: 4</p>
<p># Comments: 0</p>
]]></description><pubDate>Sun, 17 May 2026 07:39:06 +0000</pubDate><link>https://log.beshr.com/domain-knowledge-is-the-leverage/</link><dc:creator>beshrkayali</dc:creator><comments>https://news.ycombinator.com/item?id=48166832</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48166832</guid></item><item><title><![CDATA[New comment by beshrkayali in "The Emacsification of Software"]]></title><description><![CDATA[
<p>> But they’re hamstrung by the terminal itself, which is almost always monospaced and thus fatiguing to read.<p>Not related to the main point of the article, but I find reading long form contnet in a mono font much easier.</p>
]]></description><pubDate>Thu, 14 May 2026 15:50:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=48137192</link><dc:creator>beshrkayali</dc:creator><comments>https://news.ycombinator.com/item?id=48137192</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48137192</guid></item><item><title><![CDATA[New comment by beshrkayali in "If AI writes your code, why use Python?"]]></title><description><![CDATA[
<p>Everyone is trying to figure out how and what are the optimal use cases. It could be like you said but it doesn’t have to be. There’s a lot of incentive for it not to end up like that.</p>
]]></description><pubDate>Tue, 12 May 2026 06:34:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=48104945</link><dc:creator>beshrkayali</dc:creator><comments>https://news.ycombinator.com/item?id=48104945</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48104945</guid></item><item><title><![CDATA[New comment by beshrkayali in "If AI writes your code, why use Python?"]]></title><description><![CDATA[
<p>For now it’s the exact same reason why you’d use Python when you’re writing by hand: so the code is more easily readable/editable by humans who are more likely to know Python than something like Zig. But I understand the point the post is trying to make, I don’t think we’re there yet.</p>
]]></description><pubDate>Tue, 12 May 2026 06:20:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=48104858</link><dc:creator>beshrkayali</dc:creator><comments>https://news.ycombinator.com/item?id=48104858</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48104858</guid></item><item><title><![CDATA[New comment by beshrkayali in "Agents need control flow, not more prompts"]]></title><description><![CDATA[
<p>Humble mention, I’ve been thinking the same thing with Ossature for the last couple of months since I started working on it: <a href="https://ossature.dev" rel="nofollow">https://ossature.dev</a><p>The models are already good enough for code generation. What we need is the harness around them actually deterministically enforcing a specific path and “leashing” the models output to be aligned with the intention of the user as much as possible. You can’t make the output of the model deterministic, but you can make everything around it to be so.<p>Trying to make enforcements work with prompts is like a government agency investigating/auditing itself, there’s no incentive to find problems, so you’ll always inevitably get the “All Good, Boss!”</p>
]]></description><pubDate>Fri, 08 May 2026 11:23:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=48061579</link><dc:creator>beshrkayali</dc:creator><comments>https://news.ycombinator.com/item?id=48061579</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48061579</guid></item><item><title><![CDATA[New comment by beshrkayali in "Specsmaxxing – On overcoming AI psychosis, and why I write specs in YAML"]]></title><description><![CDATA[
<p>I wrote something similar recently about how agent-generated code lacks the institutional memory that human-written code has. There's nobody to ask why a decision was made (1).<p>“Specsmaxxing” is basically the right response to this. When you can't rely on authorial memory, you have to put the intent somewhere durable. Specs become the source of truth by default if we continue down the road of AI generated code.<p>1: <a href="https://ossature.dev/blog/ai-generated-code-has-no-author/" rel="nofollow">https://ossature.dev/blog/ai-generated-code-has-no-author/</a></p>
]]></description><pubDate>Sun, 03 May 2026 08:39:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=47994839</link><dc:creator>beshrkayali</dc:creator><comments>https://news.ycombinator.com/item?id=47994839</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47994839</guid></item><item><title><![CDATA[New comment by beshrkayali in "Becoming a father shrinks your cerebrum (2022)"]]></title><description><![CDATA[
<p>The title of the article is more on the sensationalist side unfortunately, the actual paper gives a different view [1].<p>There are two parts worth quoting:<p>> Although cortical reductions sometimes reflect a process of neurodegeneration, they can also be a sign of refinement and specialization of neural circuits. Adolescence, for instance, is a life period characterized by the continued elimination of redundant synapses (i.e. synaptic pruning) which parallels cognitive and emotional development (Selemon 2013). In the context of the transition to parent-hood, several examples across human and non-human mammals show functional improvements after reductions in brain markers (Pawluski et al. 2022).<p>And:<p>> Although we found converging evidence of cortical reductions
across the two samples, a number of divergent findings also emerged. First, when disentangling the cortical volume reduction, Californian fathers displayed significant reductions in area and Spanish fathers in thickness. Changes in the area may reflect changes in the number of cells located between radial columns of the brain, while changes in thickness may reflect changes in the number of cells within ontogenic columns (Petanjek et al. 2011). Secondly, the volume of the dorsal attentional network, which supports goal-directed attention, was significantly reduced in Spanish fathers, while it did not show significant changes in Californian fathers. Combined with the default mode network,
this network may control sustained attention (Spreng et al. 2010, 2013), a behavior that is often required during childrearing. It is possible that these inconsistent results at the statistical level
may be due to the different scan timing windows or to cultural or behavioral differences. For example, due to more generous paternity leave policies in Spain<p>1: <a href="https://academic.oup.com/cercor/article/33/7/4156/6691667" rel="nofollow">https://academic.oup.com/cercor/article/33/7/4156/6691667</a></p>
]]></description><pubDate>Sat, 02 May 2026 14:52:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=47986906</link><dc:creator>beshrkayali</dc:creator><comments>https://news.ycombinator.com/item?id=47986906</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47986906</guid></item><item><title><![CDATA[AI-Generated Code Has No Author]]></title><description><![CDATA[
<p>Article URL: <a href="https://ossature.dev/blog/ai-generated-code-has-no-author/">https://ossature.dev/blog/ai-generated-code-has-no-author/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47967649">https://news.ycombinator.com/item?id=47967649</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Thu, 30 Apr 2026 20:14:56 +0000</pubDate><link>https://ossature.dev/blog/ai-generated-code-has-no-author/</link><dc:creator>beshrkayali</dc:creator><comments>https://news.ycombinator.com/item?id=47967649</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47967649</guid></item><item><title><![CDATA[New comment by beshrkayali in "Components of a Coding Agent"]]></title><description><![CDATA[
<p>Exactly, and it is a DAG (specs and tasks in the toml plan). Check the QOIzig example and its task graph if you’re curious!</p>
]]></description><pubDate>Mon, 06 Apr 2026 08:31:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=47658284</link><dc:creator>beshrkayali</dc:creator><comments>https://news.ycombinator.com/item?id=47658284</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47658284</guid></item><item><title><![CDATA[New comment by beshrkayali in "Components of a Coding Agent"]]></title><description><![CDATA[
<p>Exactly this. The audit pass in Ossature is specifically for that "unclear spec" case, you resolve ambiguities in the spec before generation starts rather than discovering them mid-conversation and losing them the next session. Once the plan is clean, the LLM never needs to ask a clarifying question. Memories and agent files are patching over the fact that intent was never properly captured to begin with.</p>
]]></description><pubDate>Sun, 05 Apr 2026 19:59:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=47653271</link><dc:creator>beshrkayali</dc:creator><comments>https://news.ycombinator.com/item?id=47653271</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47653271</guid></item><item><title><![CDATA[New comment by beshrkayali in "Components of a Coding Agent"]]></title><description><![CDATA[
<p>Allium looks interesting, making behavioral intent explicit in a structured format rather than prose is very close to what I'm trying to do with Ossature actually.<p>Ossature uses two markdown formats, SMD[1] for describing behavior and AMD for structure (components, file paths, data models). AMDs[2] link back to their parent SMD so behavior and structure stay connected. Both are meant to be written, reviewed, and/or owned by humans, the LLM only reads the relevant parts during generation. One thing I am thinking about for the future is making the template structure for this customizable per project, because "spec" means different things to different teams/projects. Right now the format is fixed, but I am thinking about a schema-based way to declare which sections are required, their order, and basic content constraints, so teams can adapt the spec structure to how they think about software without having to learn a grammar language to do it (though maybe peg-based underneath anyway, not sure).<p>The formal approach you describe is probably more precise for expressing system properties. Would be interesting to see how practical it is to maintain it as a project grows.<p>1: <a href="https://docs.ossature.dev/specs/smd.html" rel="nofollow">https://docs.ossature.dev/specs/smd.html</a><p>2: <a href="https://docs.ossature.dev/specs/amd.html" rel="nofollow">https://docs.ossature.dev/specs/amd.html</a></p>
]]></description><pubDate>Sun, 05 Apr 2026 14:55:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=47650077</link><dc:creator>beshrkayali</dc:creator><comments>https://news.ycombinator.com/item?id=47650077</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47650077</guid></item><item><title><![CDATA[New comment by beshrkayali in "Components of a Coding Agent"]]></title><description><![CDATA[
<p>All three of these are real. The audit pass in Ossature is meant to catch the first two before generation starts, it reads across all specs and flags underspecified behavior, missing details, and contradictions. You resolve those, update the specs, and re-audit until the plan is clean. It's not perfect but it shifts a lot of the discovery earlier in the process.<p>The third point is harder. You still need to know your tooling well enough to write a spec that works with it. That part hasn't gone away.</p>
]]></description><pubDate>Sun, 05 Apr 2026 14:01:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=47649570</link><dc:creator>beshrkayali</dc:creator><comments>https://news.ycombinator.com/item?id=47649570</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47649570</guid></item><item><title><![CDATA[New comment by beshrkayali in "Components of a Coding Agent"]]></title><description><![CDATA[
<p>Very much the same thinking. Ossature already structures work that way at the plan level during audit, so curious to see where you take it. Happy to share more about the TOML approach if useful. Feel free to reach out (me at my domain)</p>
]]></description><pubDate>Sun, 05 Apr 2026 11:00:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=47648154</link><dc:creator>beshrkayali</dc:creator><comments>https://news.ycombinator.com/item?id=47648154</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47648154</guid></item><item><title><![CDATA[New comment by beshrkayali in "Components of a Coding Agent"]]></title><description><![CDATA[
<p>The hierarchy you describe (intent -> plan -> code -> tests) maps well to how Ossature works. The difference is that your approach builds scaffolding around Claude Code to recover structure that chat naturally loses, whereas Ossature takes chat out of the generation pipeline entirely. Specs are the source of truth before anything is generated, so there's no drift to compensate for, the audit and build plan handle that upfront.<p>The judge finding is interesting though. Right now verification during build for each task in Ossature is command-based, compile, tests, that kind of thing. A judge checking spec-to-code fidelity rather than (or maybe in addition to?) runtime correctness is worth thinking about.</p>
]]></description><pubDate>Sun, 05 Apr 2026 10:51:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=47648112</link><dc:creator>beshrkayali</dc:creator><comments>https://news.ycombinator.com/item?id=47648112</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47648112</guid></item><item><title><![CDATA[New comment by beshrkayali in "Components of a Coding Agent"]]></title><description><![CDATA[
<p>You framed it better than I would. The part I'm still working through is making re-planning feel cheap when specs change. Right now if you change something early, downstream tasks get invalidated and the cascade isn't always obvious. Ideally when the project gets built, and then specs change, nothing of the generated code should change if an irrelevant part of the spec changed, this is a bit harder to do properly but I have some ideas.<p>I agree that, this is what makes it not waterfall. You're iterating on the spec and not backtracking from broken code. The spec is the "source code", replanning and rebuilding is just "recompiling".</p>
]]></description><pubDate>Sun, 05 Apr 2026 09:56:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=47647778</link><dc:creator>beshrkayali</dc:creator><comments>https://news.ycombinator.com/item?id=47647778</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47647778</guid></item><item><title><![CDATA[New comment by beshrkayali in "Components of a Coding Agent"]]></title><description><![CDATA[
<p>Right, the spec/build separation is exactly the idea and Ossature is already built that way on the build side.<p>I agree a dedicated layer for intent capture makes a lot of sense. I thought about that as well, I am just not fully convinced it has to be conversational (or free-form conversational). Writing a prompt to get the right spec change is still a skill in itself, and it feels like it'd just be shifting the problem upstream rather than actually solving it. A structured editing experience over specs feels like it'd be more tractable to me. But the explicit vs inferred distinction you mention is interesting and worth thinking through more.</p>
]]></description><pubDate>Sat, 04 Apr 2026 19:52:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=47642690</link><dc:creator>beshrkayali</dc:creator><comments>https://news.ycombinator.com/item?id=47642690</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47642690</guid></item><item><title><![CDATA[New comment by beshrkayali in "Components of a Coding Agent"]]></title><description><![CDATA[
<p>I've answered this exact question in a previous hn comment thread a few weeks ago, maybe I should reconsider front-matter? My previous answer:<p>> Yeah, I did briefly consider front-matter, but ended up with inline @ tags because I thought it kept the entire document feeling like one coherent spec instead of header-data + body, front matter felt like config to me, but this is 0.0.1 so things might change :)</p>
]]></description><pubDate>Sat, 04 Apr 2026 18:31:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=47641884</link><dc:creator>beshrkayali</dc:creator><comments>https://news.ycombinator.com/item?id=47641884</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47641884</guid></item><item><title><![CDATA[New comment by beshrkayali in "Components of a Coding Agent"]]></title><description><![CDATA[
<p>Thanks!<p>> How does the human intervention work out? Do you use a mix of spec and audit editing to get into the ready to generate state?<p>Yes, the flow is: you write specs then you validate them with `ossature validate` which parses them and checks they are structurally sound (no LLM involved), then you run `ossature audit` which flags gaps or contradictions in the content as INFO, WARNING, or ERROR level findings. The audit has its own fixer loop that auto-resolves ERROR level findings, but you can also run it interactively, manually fix things yourself, address the INFO and WARNING findings as you see fit, and rerun until you are happy. From that it produces a toml build plan that you can read and edit directly before anything is generated. You can reorder tasks, add notes for the LLM, adjust verification commands, or skip steps entirely. So when you run `ossature build` to generate, the structure is already something you have signed off on. There's a bit more details under the hood, I wrote more in an intro post[1] about Ossature, might be useful.<p>> The spec driven approach is potentially better for writing things from scratch, do you have any plans for existing code?<p>Right now it is best for greenfield, as you said. I have been thinking about a workflow where you generate specs from existing code and then let Ossature work from those, but I am honestly not sure that is the right model either. The harder case is when engineers want to touch both the code and the specs, and keeping those in sync through that back and forth is something I want to support but have not figured out a clean answer for yet. It's on the list, if you have any thoughts please feel free to open an issue! I want to get through some of the issues I am seeing with just spec editing workflow (and re-audit/re-planning) first, specifically around how changes cascade through dependent tasks.<p>Regarding success rate, each task requires a verification command to run and pass after generation and if it fails, a separate fixer agent tries to repair it using the error output. The number of retry attempts is configurable. I did notice that the more concise and clear the spec is the more likely it is for capable models to generate code that works (obviously) but that's what auditing is supposed to help with. One interesting case about the chip-8 emulator I mentioned above is that even mentioning the correct name of the solution to a specific problem was not enough, I had to spell out the concrete algorithm in the spec (wrote more details here[2]). But the full prompt and response for every task is saved to disk, so when something does go wrong one can read the exact prompt/response and fix-attempts prompt/response for each task.<p>1: <a href="https://ossature.dev/blog/introducing-ossature/" rel="nofollow">https://ossature.dev/blog/introducing-ossature/</a><p>2: <a href="https://log.beshr.com/chip8-emulator-from-spec/" rel="nofollow">https://log.beshr.com/chip8-emulator-from-spec/</a></p>
]]></description><pubDate>Sat, 04 Apr 2026 18:00:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=47641543</link><dc:creator>beshrkayali</dc:creator><comments>https://news.ycombinator.com/item?id=47641543</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47641543</guid></item><item><title><![CDATA[New comment by beshrkayali in "Components of a Coding Agent"]]></title><description><![CDATA[
<p>> long contexts are still expensive and can also introduce additional noise (if there is a lot of irrelevant info)<p>I think spec-driven generation is the antithesis of chat-style coding for this reason. With tools like Claude Code, you are the one tracking what was already built, what interfaces exist, and why something was generated a certain way.<p>I built Ossature[1] around the opposite model. You write specs describing behavior, it audits them for gaps and contradictions before any code is written, then produces a build plan toml where each task declares exactly which spec sections and upstream files it needs. The LLM never sees more than that, and there is no accumulated conversation history to drift from. Every prompt and response is saved to disk, so traceability is built in rather than something you reconstruct by scrolling back through a chat. I used it over the last couple of days to build a CHIP-8 emulator entirely from specs[2]. I have some more example projects on GitHub[3]<p>1: <a href="https://github.com/ossature/ossature" rel="nofollow">https://github.com/ossature/ossature</a><p>2: <a href="https://github.com/beshrkayali/chomp8" rel="nofollow">https://github.com/beshrkayali/chomp8</a><p>3: <a href="https://github.com/ossature/ossature-examples" rel="nofollow">https://github.com/ossature/ossature-examples</a></p>
]]></description><pubDate>Sat, 04 Apr 2026 16:52:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=47640801</link><dc:creator>beshrkayali</dc:creator><comments>https://news.ycombinator.com/item?id=47640801</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47640801</guid></item></channel></rss>