<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: riwsky</title><link>https://news.ycombinator.com/user?id=riwsky</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Mon, 01 Jun 2026 18:27:12 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=riwsky" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by riwsky in "Defeating Git Rigour Fatigue with Jujutsu"]]></title><description><![CDATA[
<p>git let me make changes to local files without fear, since version control let me undo those changes easily.<p>jj let me make changes to my git commits without fear, since version control of the git state itself let me undo those changes easily, too.</p>
]]></description><pubDate>Mon, 25 May 2026 15:40:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=48268129</link><dc:creator>riwsky</dc:creator><comments>https://news.ycombinator.com/item?id=48268129</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48268129</guid></item><item><title><![CDATA[New comment by riwsky in "Defeating Git Rigour Fatigue with Jujutsu"]]></title><description><![CDATA[
<p>That’s, uh, exactly how jj works!</p>
]]></description><pubDate>Mon, 25 May 2026 15:34:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=48268071</link><dc:creator>riwsky</dc:creator><comments>https://news.ycombinator.com/item?id=48268071</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48268071</guid></item><item><title><![CDATA[New comment by riwsky in "Regression: malware reminder on every read still causes subagent refusals"]]></title><description><![CDATA[
<p>I’ll just leave this here:
<a href="https://www.businessinsider.com/grok-ai-elon-musk-is-more-fit-than-lebron-james-2025-11" rel="nofollow">https://www.businessinsider.com/grok-ai-elon-musk-is-more-fi...</a></p>
]]></description><pubDate>Wed, 29 Apr 2026 03:13:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=47943790</link><dc:creator>riwsky</dc:creator><comments>https://news.ycombinator.com/item?id=47943790</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47943790</guid></item><item><title><![CDATA[New comment by riwsky in "Jujutsu megamerges for fun and profit"]]></title><description><![CDATA[
<p>With jj worktrees, you can even have agents working on each of those sub-megamerge branches in parallel.</p>
]]></description><pubDate>Tue, 21 Apr 2026 00:46:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=47843183</link><dc:creator>riwsky</dc:creator><comments>https://news.ycombinator.com/item?id=47843183</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47843183</guid></item><item><title><![CDATA[New comment by riwsky in "One interface, every protocol"]]></title><description><![CDATA[
<p>My gRPC point is that it already gives you a language for describing interfaces and support for generating client types from it, and already abstracts the connection management[1]. If OBI just generated a gRPC ClientConn implementation to map the Invoke calls to eg REST paths, it’d inherit the large existing gRPC client ecosystem. That ClientConn interface can already technically capture what OBI calls binding executors. People don’t do this though because it’s not worth it.<p>[1]: <a href="https://github.com/grpc/grpc-go/blob/06fc26a196350499dd0cf2dabdd5cf11bbee01a7/clientconn.go#L646" rel="nofollow">https://github.com/grpc/grpc-go/blob/06fc26a196350499dd0cf2d...</a></p>
]]></description><pubDate>Sun, 19 Apr 2026 04:04:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=47821709</link><dc:creator>riwsky</dc:creator><comments>https://news.ycombinator.com/item?id=47821709</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47821709</guid></item><item><title><![CDATA[New comment by riwsky in "One interface, every protocol"]]></title><description><![CDATA[
<p>You’re still not getting it. Duck typing comes from the phrase “if it looks like a duck, and quacks like a duck, then it must be a duck”. The Wikipedia page contrasts it with nominative typing that requires a declaration, and calls out that duck typing does not need the adapter pattern. What you are calling duck typing is just “interfaces”.<p>Also “tasks.create” is morally a route. Eg grpc has web transports and autogenerated CLIs too; even without those, there’s no particular reason why the OBI “client layer” couldn’t just be, say, gRPC under the hood, with the OBI specs just being used to codegen adapters from the source protocol to gRPC. It would then immediately have a much more widely understood and supported client layer, with better performance, while remaining as simple to implement as the adapters to this new custom OBI runtime protocol.</p>
]]></description><pubDate>Sat, 18 Apr 2026 02:48:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=47812735</link><dc:creator>riwsky</dc:creator><comments>https://news.ycombinator.com/item?id=47812735</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47812735</guid></item><item><title><![CDATA[New comment by riwsky in "Slop Cop"]]></title><description><![CDATA[
<p>Artificial intelligence predates computers.</p>
]]></description><pubDate>Sat, 18 Apr 2026 01:51:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=47812510</link><dc:creator>riwsky</dc:creator><comments>https://news.ycombinator.com/item?id=47812510</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47812510</guid></item><item><title><![CDATA[New comment by riwsky in "One interface, every protocol"]]></title><description><![CDATA[
<p>Ad-hoc duck typing—“if it looks like a duck[…]”—is the only kind that exists! The point of the term “duck typing” is that it doesn’t require explicit declaration of the contract by implementers, it’s not synonymous with polymorphism or with interfaces in general. Haskell type classes are not duck typed, nor are Swift protocols; Go interfaces are.<p>OBI is a boilerplate generator for the adapter pattern for service communication; its contracts are just another set of their own paths, payload shapes, and protocols. The distinction between “protocol” and “contract” in this context is nonsense.</p>
]]></description><pubDate>Fri, 17 Apr 2026 22:30:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=47811287</link><dc:creator>riwsky</dc:creator><comments>https://news.ycombinator.com/item?id=47811287</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47811287</guid></item><item><title><![CDATA[New comment by riwsky in "One interface, every protocol"]]></title><description><![CDATA[
<p>The web IS the duck typing equivalent at the network boundary! That’s why plenty of alternative service providers can and do implement eg object storage APIs that work with aws s3 client libraries, or LLM APIs that work with Claude Code. The reasons these use cases are standardized (while others remain fragmented) are economic, not technical (lock-in isn’t as profitable for these alt services as raw adoption)—and so a purely technical solution like this is unlikely to address the crux of the problem.<p>Even purely on the technical level, this seemingly hasn't internalized the lessons of <a href="https://xkcd.com/927/" rel="nofollow">https://xkcd.com/927/</a></p>
]]></description><pubDate>Thu, 16 Apr 2026 04:39:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=47788713</link><dc:creator>riwsky</dc:creator><comments>https://news.ycombinator.com/item?id=47788713</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47788713</guid></item><item><title><![CDATA[New comment by riwsky in "System Card: Claude Mythos Preview [pdf]"]]></title><description><![CDATA[
<p>Might makes right; brains hold reigns.</p>
]]></description><pubDate>Wed, 08 Apr 2026 01:10:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=47683479</link><dc:creator>riwsky</dc:creator><comments>https://news.ycombinator.com/item?id=47683479</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47683479</guid></item><item><title><![CDATA[New comment by riwsky in "A case against currying"]]></title><description><![CDATA[
<p>Sure—but that’s a property of the inferred types moreso than the mere application syntax. It can be hard to revisit or understand the type of JS or unannotated Python expressions, too—but unlike those cases, the unknown-to-the-reader type of the Haskell code will always be known on the compiler/LSP side.</p>
]]></description><pubDate>Mon, 23 Mar 2026 14:54:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=47490389</link><dc:creator>riwsky</dc:creator><comments>https://news.ycombinator.com/item?id=47490389</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47490389</guid></item><item><title><![CDATA[New comment by riwsky in "A case against currying"]]></title><description><![CDATA[
<p>The functional programming take is that “the result of foobinade-ing an and b” IS “foobinade applied to two of its arguments”. The application is not some syntactic pun or homonym that can refer to two different meanings—those are the same meaning.</p>
]]></description><pubDate>Sun, 22 Mar 2026 17:18:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=47479760</link><dc:creator>riwsky</dc:creator><comments>https://news.ycombinator.com/item?id=47479760</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47479760</guid></item><item><title><![CDATA[New comment by riwsky in "Anthropic, please make a new Slack"]]></title><description><![CDATA[
<p><i>cries in google wave</i></p>
]]></description><pubDate>Fri, 06 Mar 2026 21:17:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=47281191</link><dc:creator>riwsky</dc:creator><comments>https://news.ycombinator.com/item?id=47281191</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47281191</guid></item><item><title><![CDATA[Show HN: Iosef, an iOS simulator CLI designed for agents]]></title><description><![CDATA[
<p>Iosef is an iOS simulator CLI designed for agents, inspired by simonw/rodney, facebook/idb, and joshuayoes/ios-simulator-mcp.<p>For those familiar with idb, some of iosef’s agent-oriented features include:<p>Directory-level sessions, so agents in different worktrees don’t interfere with each other’s simulators.<p>Automatic scaling of screenshots into the same coordinate space as the accessibility trees and interaction tools.<p>Selector-based interactions, to save LLMs from needing to re-consult accessibility trees or screenshots each turn.<p>Skills and MCP support.<p>=====<p>iosef’s absence from the pre-training corpus means agents need a little nudge (either via the skill or user prompt) to use it over idb or simctl—but once they’re using it, they have a easier time than they do with other tools. While written in swift, it’s packaged via pypi for easy running and installation via uv (eg “uvx iosef --help” or “uv tool install iosef”).<p>Is it nearly entirely vibe-coded? Yes—but I’ve found it helpful for my own use, so I share it in case others will, as well. And this post is entirely human-written, so at least there’s that.</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47203961">https://news.ycombinator.com/item?id=47203961</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Sun, 01 Mar 2026 05:20:15 +0000</pubDate><link>https://github.com/riwsky/iosef</link><dc:creator>riwsky</dc:creator><comments>https://news.ycombinator.com/item?id=47203961</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47203961</guid></item><item><title><![CDATA[New comment by riwsky in "The #1 most downloaded skill on OpenClaw marketplace was malware"]]></title><description><![CDATA[
<p>In fairness to the skill author, this is indeed what Elon did to the US government with DOGE</p>
]]></description><pubDate>Fri, 20 Feb 2026 04:06:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=47083595</link><dc:creator>riwsky</dc:creator><comments>https://news.ycombinator.com/item?id=47083595</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47083595</guid></item><item><title><![CDATA[New comment by riwsky in "America has a tungsten problem"]]></title><description><![CDATA[
<p>Am I the only one who finds this material rather dense?</p>
]]></description><pubDate>Mon, 09 Feb 2026 23:15:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=46952955</link><dc:creator>riwsky</dc:creator><comments>https://news.ycombinator.com/item?id=46952955</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46952955</guid></item><item><title><![CDATA[New comment by riwsky in "Ask HN: What are you working on? (February 2026)"]]></title><description><![CDATA[
<p>1. The collaboration and notation app for rock bands that I’d wished existed already: <a href="https://bandwith.rocks/about" rel="nofollow">https://bandwith.rocks/about</a><p>2. A “runtime scheduler for humans” that I wished existed, too (think morning routines, travel checklists, and pomodoros in the same abstraction—but also a lot of support for ad-hoc rearrangement and addition of the task queue).</p>
]]></description><pubDate>Mon, 09 Feb 2026 07:03:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=46942401</link><dc:creator>riwsky</dc:creator><comments>https://news.ycombinator.com/item?id=46942401</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46942401</guid></item><item><title><![CDATA[New comment by riwsky in "A Broken Heart"]]></title><description><![CDATA[
<p>I agree that the font and emoji hops aren’t great for complexity or performance, but the problem in the post was in the rendering of a tiny SVG; serving it directly would not have avoided the problem.</p>
]]></description><pubDate>Thu, 05 Feb 2026 14:52:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=46900273</link><dc:creator>riwsky</dc:creator><comments>https://news.ycombinator.com/item?id=46900273</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46900273</guid></item><item><title><![CDATA[New comment by riwsky in "Extremophile molds are invading art museums"]]></title><description><![CDATA[
<p>Damn, wait: you mean the random HN commenter <i>didn’t</i> magically solve a difficult problem that has long-confounded experts, simply by bringing their unique insights and thirty seconds to bear?</p>
]]></description><pubDate>Wed, 28 Jan 2026 03:36:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=46790750</link><dc:creator>riwsky</dc:creator><comments>https://news.ycombinator.com/item?id=46790750</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46790750</guid></item><item><title><![CDATA[New comment by riwsky in "The lost art of XML"]]></title><description><![CDATA[
<p>> What's missing is a widespread replacement for XSLT<p>jq says hello!</p>
]]></description><pubDate>Sat, 24 Jan 2026 07:10:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=46741686</link><dc:creator>riwsky</dc:creator><comments>https://news.ycombinator.com/item?id=46741686</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46741686</guid></item></channel></rss>