<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: omnicognate</title><link>https://news.ycombinator.com/user?id=omnicognate</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sat, 18 Apr 2026 09:28:38 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=omnicognate" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by omnicognate in "Coding agents have replaced every framework I used"]]></title><description><![CDATA[
<p>What point have we reached? All I see is HN drowning in insufferable, identical-sounding posts about how everything has changed forever. Meanwhile at work, in a high stakes environment where software not working as intended has actual consequences, there are... a few new tools some people like using and think they may be a bit more productive with. And the jury's still out even on that.<p>The initial excitement of LLMs has significantly cooled off, the model releases show rapidly diminishing returns if not outright equilibrium and the only vibe-coded software project I've seen get any actual public use is Claude Code, which is riddled with embarrassing bugs its own developers have publicly given up on fixing. The only thing I see approaching any kind of singularity is the hype.<p>I think I'm done with HN at this point. It's turned into something resembling moltbook. I'll try back in a couple of years when maybe things will have changed a bit around here.</p>
]]></description><pubDate>Sat, 07 Feb 2026 17:44:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=46925796</link><dc:creator>omnicognate</dc:creator><comments>https://news.ycombinator.com/item?id=46925796</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46925796</guid></item><item><title><![CDATA[New comment by omnicognate in "Invention of DNA "page numbers" opens up possibilities for the bioeconomy"]]></title><description><![CDATA[
<p>> using complementary overhangs and toehold sequences to generate a 3-way heteroduplex, ligate knick, and then remove barcode duplex<p>At first I thought this was about olympic figure skating, but after a bit of googling I <i>think</i>:<p>Complementary overhang - <a href="https://en.wikipedia.org/wiki/Sticky_and_blunt_ends" rel="nofollow">https://en.wikipedia.org/wiki/Sticky_and_blunt_ends</a><p>Toehold sequences: <a href="https://en.wikipedia.org/wiki/Toehold_mediated_strand_displacement" rel="nofollow">https://en.wikipedia.org/wiki/Toehold_mediated_strand_displa...</a><p>Ligate (ligase?) knick (nick?) - <a href="https://en.wikipedia.org/wiki/Nick_(DNA)" rel="nofollow">https://en.wikipedia.org/wiki/Nick_(DNA)</a><p>Barcode - <a href="https://en.wikipedia.org/wiki/DNA_barcoding" rel="nofollow">https://en.wikipedia.org/wiki/DNA_barcoding</a><p>Heteroduplex - <a href="https://en.wikipedia.org/wiki/Heteroduplex" rel="nofollow">https://en.wikipedia.org/wiki/Heteroduplex</a></p>
]]></description><pubDate>Fri, 06 Feb 2026 19:31:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=46917093</link><dc:creator>omnicognate</dc:creator><comments>https://news.ycombinator.com/item?id=46917093</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46917093</guid></item><item><title><![CDATA[New comment by omnicognate in "Claude Code's renderer is more complex than a game engine"]]></title><description><![CDATA[
<p>This accepts the idea that the flickering problem (which is what that comment was about) is to do with slow rendering. It isn't.<p>The solution to the flickering is almost certainly trivial and it's in the open source Ink library that Claude Code uses. I outlined it in [1].<p>Basically, Ink clears lines before rendering the page. That's not how you render TUIs if you don't want them to flicker. All you have to do is write the lines, and include a clear to end-of-line at the end of each one. That means you overwrite what's there and only erase what is removed. Where nothing changes, nothing visibly happens. My comment [1] contains links to the source that needs changing, and I think it would probably be a single-digit line PR to fix it. I'm not going to do so because I neither use Claude Code nor really approve of it.<p>It's hilarious that the quoted comment framed the issue as if it's rendering to a vsynced framebuffer and only has 16ms to do so, and everyone went with it. That's not how TUIs work at all. It's writing to stdout, ffs.<p>[1] <a href="https://news.ycombinator.com/item?id=46853395">https://news.ycombinator.com/item?id=46853395</a></p>
]]></description><pubDate>Tue, 03 Feb 2026 12:15:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=46870026</link><dc:creator>omnicognate</dc:creator><comments>https://news.ycombinator.com/item?id=46870026</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46870026</guid></item><item><title><![CDATA[New comment by omnicognate in "What I learned building an opinionated and minimal coding agent"]]></title><description><![CDATA[
<p>Great, so probably a pretty straightforward fix, albeit in a dependency. Ink does indeed write ansiEscapes.clearTerminal [1], which does indeed "Clear the whole terminal, including scrollback buffer. (Not just the visible part of it)" [2]. (Edit: even the eraseLines here [4] will cause flicker.)<p>Using alternate screen might help, and is probably desirable anyway, but really the right approach is not to clear the screen (or erase lines) at all but just write out the lines and put a clear to end-of-line (ansiEscapes.eraseEndLine) at the end of each one, as described in [3]. That should be a pretty simple patch to Ink.<p>Likening this to a "small game engine" and claiming they need to render in 16ms is pretty funny. Perhaps they'll figure it out when this comment makes it into Claude's training data.<p>[1] <a href="https://github.com/vadimdemedes/ink/blob/e8b08e75cf272761d63782179019d052e4410545/src/ink.tsx#L277" rel="nofollow">https://github.com/vadimdemedes/ink/blob/e8b08e75cf272761d63...</a><p>[2] <a href="https://www.npmjs.com/package/ansi-escapes" rel="nofollow">https://www.npmjs.com/package/ansi-escapes</a><p>[3] <a href="https://stackoverflow.com/a/71453783" rel="nofollow">https://stackoverflow.com/a/71453783</a><p>[4] <a href="https://github.com/vadimdemedes/ink/blob/e8b08e75cf272761d63782179019d052e4410545/src/ink.tsx#L260" rel="nofollow">https://github.com/vadimdemedes/ink/blob/e8b08e75cf272761d63...</a></p>
]]></description><pubDate>Mon, 02 Feb 2026 07:28:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=46853395</link><dc:creator>omnicognate</dc:creator><comments>https://news.ycombinator.com/item?id=46853395</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46853395</guid></item><item><title><![CDATA[New comment by omnicognate in "What I learned building an opinionated and minimal coding agent"]]></title><description><![CDATA[
<p>I figured they were doing something <i>like</i> Ink, but interesting to know that they're actually using Ink. Do you have any evidence that's the case?<p>It doesn't answer the question, though. Ink throttles to <i>at most</i> 30fps (not 60 as the 16ms quote would suggest, though the <i>at most</i> is far more important). That's done to prevent it churning out vast amounts of ASCII, preventing issues like [1], not as some sort of display sync behaviour where missing the frame deadline would be expected to cause tearing/jank (let alone flickering).<p>I don't mean to be combative here. There must be some real explanation for the flickering, and I'm curious to know what it is. Using Ink doesn't, on it's own, explain it AFAICS.<p>Edit: I do see an issue about flickering on Ink [2]. If that's what's going on, the suggestion in one of the replies to use alternate screen sounds reasonable and nothing to do with having to render in 16ms. There are tons of TUI programs out there that manage to update without flickering.<p>[1] <a href="https://github.com/gatsbyjs/gatsby/issues/15505" rel="nofollow">https://github.com/gatsbyjs/gatsby/issues/15505</a><p>[2] <a href="https://github.com/vadimdemedes/ink/issues/359" rel="nofollow">https://github.com/vadimdemedes/ink/issues/359</a></p>
]]></description><pubDate>Sun, 01 Feb 2026 23:19:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=46850411</link><dc:creator>omnicognate</dc:creator><comments>https://news.ycombinator.com/item?id=46850411</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46850411</guid></item><item><title><![CDATA[New comment by omnicognate in "What I learned building an opinionated and minimal coding agent"]]></title><description><![CDATA[
<p>That's what they said, but as far as I can see it makes no sense at all. It's a console app. It's outputing to stdout, not a GPU buffer.<p>The whole point of react is to update the real browser DOM (or rather their custom ASCII backend, presumably, in this case) only when the content actually changes. When that happens, surely you'd spurt out some ASCII escape sequences to update the display. You're not constrained to do that in 16ms and you don't have a vsync signal you could synchronise to even if you wanted to. Synchronising to the display is something the tty implementation does. (On a different machine if you're using it over ssh!)<p>Given their own explanation of react -> ascii -> terminal, I can't see how they could possibly have ended up attempting to render every 16ms and flickering if they don't get it done in time.<p>I'm genuinely curious if anybody can make this make sense, because based on what I know of react and of graphics programming (which isn't nothing) my immediate reaction to that post was "that's... not how any of this works".</p>
]]></description><pubDate>Sun, 01 Feb 2026 19:29:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=46848623</link><dc:creator>omnicognate</dc:creator><comments>https://news.ycombinator.com/item?id=46848623</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46848623</guid></item><item><title><![CDATA[New comment by omnicognate in "Designing a Passively Safe API"]]></title><description><![CDATA[
<p>Idempotence of an operation means that if you perform it a second (or third, etc) time it won't do anything. The "action" all happens the first time and further goes at it do nothing. Eg. switching a light switch on could be seen as "idempotent" in a sense. You can press the bottom edge of the switch again but it's not going to click again and the light isn't going to become any more on.<p>The concept originates in maths, where it's functions that can be idempotent. The canonical example is projection operators: if you project a vector onto a subspace and then apply that same projection operator again you get the same vector again. In computing the term is sometimes used fairly loosely/analogistically like in the light switch example above. Sometimes, though, there is a mathematical function involved that is idempotent in the mathematical sense.<p>A form of idempotence is implied in "retries ... can't produce duplicate work" in the quote, but it isn't the whole story. Atomicity, for example, is also implied by the whole quote: the idea that an operation always either completes in its entirety or doesn't happen at all. That's independent of idempotence.</p>
]]></description><pubDate>Sat, 31 Jan 2026 14:22:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=46836939</link><dc:creator>omnicognate</dc:creator><comments>https://news.ycombinator.com/item?id=46836939</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46836939</guid></item><item><title><![CDATA[New comment by omnicognate in "How AI assistance impacts the formation of coding skills"]]></title><description><![CDATA[
<p>I didn't say it did. I just pointed out that learning effectively isn't only a concern for "inexperienced developers still gaining knowledge".</p>
]]></description><pubDate>Fri, 30 Jan 2026 15:16:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=46825371</link><dc:creator>omnicognate</dc:creator><comments>https://news.ycombinator.com/item?id=46825371</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46825371</guid></item><item><title><![CDATA[New comment by omnicognate in "How AI assistance impacts the formation of coding skills"]]></title><description><![CDATA[
<p>I agree the title should be changed, but as I commented on the dupe of this submission learning is not something that happens as a beginner, student or "junior" programmer and then stops. The job is learning, and after 25 years of doing it I learn more per day than ever.</p>
]]></description><pubDate>Fri, 30 Jan 2026 08:06:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=46821751</link><dc:creator>omnicognate</dc:creator><comments>https://news.ycombinator.com/item?id=46821751</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46821751</guid></item><item><title><![CDATA[New comment by omnicognate in "How AI assistance impacts the formation of coding skills"]]></title><description><![CDATA[
<p>An important aspect of this for professional programmers is that learning is not something that happens as a beginner, student or "junior" and then stops. The <i>job</i> is learning, and after 25 years of doing it I learn more per day than ever.</p>
]]></description><pubDate>Fri, 30 Jan 2026 08:02:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=46821720</link><dc:creator>omnicognate</dc:creator><comments>https://news.ycombinator.com/item?id=46821720</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46821720</guid></item><item><title><![CDATA[New comment by omnicognate in "AI’s impact on engineering jobs may be different than expected"]]></title><description><![CDATA[
<p>> AI can code as well as Torvalds<p>He used it to generate a little visualiser script in python, a language he doesn't know and doesn't care to learn, for a hobby project. It didn't suddenly take over as lead kernel dev.</p>
]]></description><pubDate>Thu, 29 Jan 2026 20:07:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=46815835</link><dc:creator>omnicognate</dc:creator><comments>https://news.ycombinator.com/item?id=46815835</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46815835</guid></item><item><title><![CDATA[New comment by omnicognate in "Mozilla is building an AI 'rebel alliance' to take on OpenAI, Anthropic"]]></title><description><![CDATA[
<p>It's like watching the standards-based web commit suicide.</p>
]]></description><pubDate>Thu, 29 Jan 2026 17:06:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=46812997</link><dc:creator>omnicognate</dc:creator><comments>https://news.ycombinator.com/item?id=46812997</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46812997</guid></item><item><title><![CDATA[New comment by omnicognate in "Lennart Poettering, Christian Brauner founded a new company"]]></title><description><![CDATA[
<p>As the immediate responder to this comment, I claim to be the next guy. I love systemd.</p>
]]></description><pubDate>Tue, 27 Jan 2026 19:12:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=46784804</link><dc:creator>omnicognate</dc:creator><comments>https://news.ycombinator.com/item?id=46784804</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46784804</guid></item><item><title><![CDATA[New comment by omnicognate in "Porting 100k lines from TypeScript to Rust using Claude Code in a month"]]></title><description><![CDATA[
<p>Like a couple of others here I tried checking out this project [1] and running these 2.3  million random battles. The README says everything needs to be run in docker, and indeed the test script uses docker and fails without it, but there are no docker/compose files in the repo.<p>It's great that the repo is provided, but people are clamouring for <i>proof</i> of the extraordinary powers of AI. If the claim is that it allowed 100 kloc to be ported in one month by one dev and the result passes a gazillion tests that prove it actually replicates the desired functionality, that's really interesting! How hard would it be, then, to actually have the repo in a state where people can run those tests?<p>Unless the repo is updated so the tests can be run, my default assumption has to be that the whole thing is broken to the point of uselessness.<p>[1] Link buried at the end: <a href="https://github.com/vjeux/pokemon-showdown-rs" rel="nofollow">https://github.com/vjeux/pokemon-showdown-rs</a></p>
]]></description><pubDate>Tue, 27 Jan 2026 15:18:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=46781112</link><dc:creator>omnicognate</dc:creator><comments>https://news.ycombinator.com/item?id=46781112</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46781112</guid></item><item><title><![CDATA[New comment by omnicognate in "Porting 100k lines from TypeScript to Rust using Claude Code in a month"]]></title><description><![CDATA[
<p>It also says "Passed: 0".<p>I probably got wooshed here. Anyway, the tests definitely aren't run. I checked it out and tried myself. The test script [1] outputs "ALL SEEDS PASSED!" when the number of failures is zero, which of course is the case if the entire thing just fails to run.<p>[1] <a href="https://github.com/vjeux/pokemon-showdown-rs/blob/605247d012383c896edf7c2a83c55f5aaa2bccef/tests/test-unified.sh#L96" rel="nofollow">https://github.com/vjeux/pokemon-showdown-rs/blob/605247d012...</a></p>
]]></description><pubDate>Tue, 27 Jan 2026 14:36:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=46780515</link><dc:creator>omnicognate</dc:creator><comments>https://news.ycombinator.com/item?id=46780515</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46780515</guid></item><item><title><![CDATA[New comment by omnicognate in "Heathrow scraps liquid container limit"]]></title><description><![CDATA[
<p>> Average people have never heard of them because they aren’t in popular lore.<p>Everything I know about liquid explosives I learned from Die Hard 3.</p>
]]></description><pubDate>Tue, 27 Jan 2026 07:30:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=46776590</link><dc:creator>omnicognate</dc:creator><comments>https://news.ycombinator.com/item?id=46776590</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46776590</guid></item><item><title><![CDATA[New comment by omnicognate in "Ask HN: DDD was a great debugger – what would a modern equivalent look like?"]]></title><description><![CDATA[
<p>Sounds like you want a time travel debugger, eg. rr.<p>Sophisticated live debuggers are great when you can use them but you have to be able to reproduce the bug under the debugger. Particularly in distributed systems, the hardest bugs aren't reproducible at all and there are multiple levels of difficulty below that before you get to ones that can be reliably reproduced under a live debugger, which are usually relatively easy. Not being able to use your most powerful tools on your hardest problems rather reduces their value. (Time travel debuggers do record/replay, which expands the set of problems you can use them on, but you still need to get the behaviour to happen while it's being recorded.)</p>
]]></description><pubDate>Mon, 26 Jan 2026 07:34:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=46762839</link><dc:creator>omnicognate</dc:creator><comments>https://news.ycombinator.com/item?id=46762839</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46762839</guid></item><item><title><![CDATA[New comment by omnicognate in "On the Methodology of Actual Physics [video]"]]></title><description><![CDATA[
<p>Half an hour into a 2hr 47m video and I really must go to bed and resume tomorrow, probably in more than one instalment.<p>This is wonderful stuff so far, and I'm glad I caught its brief appearance on the front page. Thank you for posting it!</p>
]]></description><pubDate>Mon, 26 Jan 2026 00:13:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=46760119</link><dc:creator>omnicognate</dc:creator><comments>https://news.ycombinator.com/item?id=46760119</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46760119</guid></item><item><title><![CDATA[New comment by omnicognate in "The coming war on car ownership?"]]></title><description><![CDATA[
<p>I want car ownership to end. I want the road network to eventually become a giant, fully automated public transport system. I don't want it to be owned by silicon valley, though.</p>
]]></description><pubDate>Sun, 25 Jan 2026 09:26:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=46752287</link><dc:creator>omnicognate</dc:creator><comments>https://news.ycombinator.com/item?id=46752287</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46752287</guid></item><item><title><![CDATA[New comment by omnicognate in "Doing gigabit Ethernet over my British phone wires"]]></title><description><![CDATA[
<p>I've been using this for a couple of years in my home now, with the same German Gigacopper devices. It's rock solid, very much unlike my attempts at power-line ethernet in the past. I used ethernet over coax in my last house too, which was also great.<p>I think many (most?) UK houses could get gigabit ethernet to at least some rooms without any new wiring. It's strange that the devices for doing it reliably are hard to get, but powerline ethernet modems are sold everywhere despite barely working in most houses.</p>
]]></description><pubDate>Sat, 24 Jan 2026 12:29:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=46743022</link><dc:creator>omnicognate</dc:creator><comments>https://news.ycombinator.com/item?id=46743022</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46743022</guid></item></channel></rss>