<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: kstenerud</title><link>https://news.ycombinator.com/user?id=kstenerud</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sun, 21 Jun 2026 08:47:23 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=kstenerud" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by kstenerud in "Palmier-Pro: macOS video editor built for AI"]]></title><description><![CDATA[
<p>$50 a month subscription (temporarily lowered to $30).<p>Allows you to generate 3-7 minutes of video.<p>Per month.</p>
]]></description><pubDate>Sun, 21 Jun 2026 04:23:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=48615658</link><dc:creator>kstenerud</dc:creator><comments>https://news.ycombinator.com/item?id=48615658</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48615658</guid></item><item><title><![CDATA[New comment by kstenerud in "AI demands more engineering discipline. Not less"]]></title><description><![CDATA[
<p>This has been my experience with AI.<p>Writing software begins with a solid design that is defensible. If you don't have that, the AI will produce slop.<p>Once you're happy with the design, you need a solid plan. If you don't have that, the AI will produce slop.<p>Once you're happy with the plan, you can set the AI loose, but don't get too complacent! Anything that you missed in the previous phases could very well lead to slop (although likely localized).<p>And then then, as your project matures and you gain more understanding of the space, you start to notice deficiencies in your model. This is where AI really shines: design and code changes to adapt to reality.</p>
]]></description><pubDate>Wed, 17 Jun 2026 15:35:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=48571923</link><dc:creator>kstenerud</dc:creator><comments>https://news.ycombinator.com/item?id=48571923</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48571923</guid></item><item><title><![CDATA[New comment by kstenerud in "It used to be hard"]]></title><description><![CDATA[
<p>I remember C compilers becoming affordable, and GCC actually getting good.<p>I remember Java coming along, and how much easier it was to build compared to all the crazy linking and cryptic error messages my C compiler gave me once you went beyond a toy program. And god forbid you wanted it to run on BOTH Borland and visual C!<p>I remember CGI, and then PHP making it trivial to write web apps, and then less trivial webapps, and then webapps that people actually used in serious business.<p>Then I watched the same thing happen with Javascript.<p>All those rebuilds of the same foundations, making the same fundamental design mistakes again and again like a wheel of karma, but with prettier UX and less vendor lock-in.<p>And now, AI makes it even easier to re-make those mistakes. It's gotten "easier", but it's actually gotten harder. Making something that runs has never been more trivial. Making something with a solid architecture and disciplined hygiene has never been harder.<p>And so we begin round 4 of re-learning the lessons of the 1960s-1970s.</p>
]]></description><pubDate>Mon, 15 Jun 2026 14:48:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=48542120</link><dc:creator>kstenerud</dc:creator><comments>https://news.ycombinator.com/item?id=48542120</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48542120</guid></item><item><title><![CDATA[New comment by kstenerud in "What happened to nerds?"]]></title><description><![CDATA[
<p>> Nerds used to have a internet to discuss tech in, you were allowed to make an argument based on logic and reasoning.<p>I don't remember this internet. Ever since I got my first modem, I remember the kinds of vitriolic posts that led to the publication of IEN 137 (On Holy Wars and a Plea for Peace).<p>Whether it was endianness or RISC vs CISC or ZModem vs Kermit or Microsoft or Kirk vs Picard or Kimagure Orange Road, flame wars erupted everywhere. The smaller the stakes, the bigger the war.</p>
]]></description><pubDate>Mon, 15 Jun 2026 10:38:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=48539331</link><dc:creator>kstenerud</dc:creator><comments>https://news.ycombinator.com/item?id=48539331</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48539331</guid></item><item><title><![CDATA[New comment by kstenerud in "Show HN: Trace – Offline Mac meeting transcripts you can flag mid-call"]]></title><description><![CDATA[
<p>For crash resilient data, you have a few options:<p>- Journaling file structures (telegraph what you're about to write, then write it, then signal completion)<p>- memmap your important data structures to a file (they will be flushed to disk no matter how your app dies - short of a power loss)<p>- post-crash dump (put last-minute writers in a crash handler to save it to disk)<p>A journaling file structure is the most secure, because it's designed with the assumption that writing will eventually fail. memmapped structs are easy and cheap, and get you 99% of the way there (only power loss will lose your data). Crash-time writing is doable with a crash handler like KSCrash, but there are many ways an app can crash without triggering a crash handler (thermal kill, exceeding quota, memory jetsam, etc). You also need to write your data in a signal-safe manner.</p>
]]></description><pubDate>Mon, 15 Jun 2026 05:22:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=48536946</link><dc:creator>kstenerud</dc:creator><comments>https://news.ycombinator.com/item?id=48536946</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48536946</guid></item><item><title><![CDATA[New comment by kstenerud in "Ask HN: What are you working on? (June 2026)"]]></title><description><![CDATA[
<p>A tool that creates sandboxes (docker, podman, orbstack, seatbelt, tart, containerd, kata, firecracker) and then sets up an agent (claude, codex, gemini, aider, opencode) inside it with max permissiveness (no annoying permission prompts).<p>It creates its own copy of your workdir for the agent to play in, and then you pull changes out ala git diffs or commits.<p><pre><code>    $ yoloai new mybugfix . -a # launch default sandbox in . and also attach the terminal

    # Work with the agent...

    $ yoloai diff mybugfix  # See what it did
    $ yoloai apply mybugfix # Bring out commits and/or uncommitted changes.
    $ yoloai destroy mybugfix
</code></pre>
And it's FOSS: <a href="https://github.com/kstenerud/yoloai" rel="nofollow">https://github.com/kstenerud/yoloai</a></p>
]]></description><pubDate>Sun, 14 Jun 2026 17:58:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=48530447</link><dc:creator>kstenerud</dc:creator><comments>https://news.ycombinator.com/item?id=48530447</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48530447</guid></item><item><title><![CDATA[New comment by kstenerud in "AI coding at home without going broke"]]></title><description><![CDATA[
<p>> I'm guessing the next thing I should probably look into is some sort of machine vm I can tunnel my codex-gui requests to so I don't have to deal with the sandbox approvals (I don't want to give it "dangerous" access to my entire mac).<p>This is what <a href="https://github.com/kstenerud/yoloai" rel="nofollow">https://github.com/kstenerud/yoloai</a> does.<p>Sandboxing using Docker, Podman, containerd (linux only), seatbelt (macos only), tart (macos only), apple container (macos 26+ only).<p>It takes a copy of your workdir, does its thing inside of the sandbox, and you pull the results back using git semantics:<p><pre><code>    $ yoloai new mybugfix . -a # launch default sandbox in . and also attach the terminal

    # Work with the agent...

    $ yoloai diff mybugfix  # See what it did
    $ yoloai apply mybugfix # Bring out commits and/or uncommitted changes.
    $ yoloai destroy mybugfix</code></pre></p>
]]></description><pubDate>Sun, 14 Jun 2026 12:48:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=48526736</link><dc:creator>kstenerud</dc:creator><comments>https://news.ycombinator.com/item?id=48526736</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48526736</guid></item><item><title><![CDATA[New comment by kstenerud in "Every Frame Perfect"]]></title><description><![CDATA[
<p>Or, just stop using so many animations.<p>In most UIs, it feels like they're animated for the sake of being animated. Very rarely do I say "Ah, I'm glad that was animated, because the transition would be confusing otherwise."<p>Things like this are part of the reason why operating systems that used to measure in the tens of megabytes now measure in the tens of gigabytes, and require chips 1000x more powerful in order to MAYBE reach the same level of snappiness (although usually not).</p>
]]></description><pubDate>Sun, 14 Jun 2026 12:38:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=48526659</link><dc:creator>kstenerud</dc:creator><comments>https://news.ycombinator.com/item?id=48526659</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48526659</guid></item><item><title><![CDATA[New comment by kstenerud in "Slightly reducing the sloppiness of AI generated front end"]]></title><description><![CDATA[
<p>TLDR: Once a design gets old enough that LLMs can reproduce them, they are now "slop".</p>
]]></description><pubDate>Fri, 12 Jun 2026 17:24:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=48506891</link><dc:creator>kstenerud</dc:creator><comments>https://news.ycombinator.com/item?id=48506891</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48506891</guid></item><item><title><![CDATA[New comment by kstenerud in "Claude Fable is relentlessly proactive"]]></title><description><![CDATA[
<p>> yet their sandboxed agent has access to all of their code, their github, and unrestricted web access.<p>Not in my sandbox. It gives no direct access to the workdir, no access to my github, my ssh keys, my security tokens or API keys. No access to my home dir or dotfiles. Nothing at all, except for what I explicitly tell it to give access to.<p>I can restrict network access. I can choose the isolation level: docker containers, Kata VMs, seatbelt, tart, even the new apple containers (which are VERY nice).<p>Not even ENV leaks through.<p>And it's FOSS: <a href="https://github.com/kstenerud/yoloai" rel="nofollow">https://github.com/kstenerud/yoloai</a></p>
]]></description><pubDate>Fri, 12 Jun 2026 14:38:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=48504776</link><dc:creator>kstenerud</dc:creator><comments>https://news.ycombinator.com/item?id=48504776</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48504776</guid></item><item><title><![CDATA[New comment by kstenerud in "AI agent bankrupted their operator while trying to scan DN42"]]></title><description><![CDATA[
<p>This reminds me so much of the "Spurious Logic" ability in the RPG "Paranoia"</p>
]]></description><pubDate>Fri, 12 Jun 2026 11:07:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=48502548</link><dc:creator>kstenerud</dc:creator><comments>https://news.ycombinator.com/item?id=48502548</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48502548</guid></item><item><title><![CDATA[New comment by kstenerud in "Workers are spending over 6 hours a week botsitting AI, fueling job frustration"]]></title><description><![CDATA[
<p>I do it with every project I go into. First step is setting up the documentation so that the agent can navigate it quickly, knows the idioms, knows the test gating procedure, design principles, coding standards, testing policies, etc.<p>Once that's set up, I spend time laying out the planning for whatever feature or fix is being worked on. For fixes the agent is pretty quick and usually needs little guidance. For new features it's best to have more of a hand on the tiller.</p>
]]></description><pubDate>Thu, 11 Jun 2026 16:08:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=48492279</link><dc:creator>kstenerud</dc:creator><comments>https://news.ycombinator.com/item?id=48492279</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48492279</guid></item><item><title><![CDATA[New comment by kstenerud in "Workers are spending over 6 hours a week botsitting AI, fueling job frustration"]]></title><description><![CDATA[
<p>Ah yes, the agents by default are very "implementation" oriented, which is why I instruct mine to never implement something without formulating a plan first for me to approve.<p>Another thing they tend to do is rely on their own context -> memories -> training data. And if that's wrong then they'll continue with it until you instruct them to research, after which they usually get the right answer.<p>I've noticed that the newer models keep track of what you type so as to anticipate what you're likely to say. For example, today Opus 4.8 said "You usually don't want me to commit until you've checked, so the change remains uncommitted."</p>
]]></description><pubDate>Thu, 11 Jun 2026 15:58:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=48492134</link><dc:creator>kstenerud</dc:creator><comments>https://news.ycombinator.com/item?id=48492134</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48492134</guid></item><item><title><![CDATA[New comment by kstenerud in "Workers are spending over 6 hours a week botsitting AI, fueling job frustration"]]></title><description><![CDATA[
<p>I never let it go into planning mode, other than to output a plan file that I can audit before giving it the go-ahead to implement. After that I don't want to be bothered, so --dangerously-skip-permissions keeps all but real questions out of the loop, and I can do something else while it works rather than babysit.</p>
]]></description><pubDate>Thu, 11 Jun 2026 14:29:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=48490863</link><dc:creator>kstenerud</dc:creator><comments>https://news.ycombinator.com/item?id=48490863</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48490863</guid></item><item><title><![CDATA[New comment by kstenerud in "Workers are spending over 6 hours a week botsitting AI, fueling job frustration"]]></title><description><![CDATA[
<p>Wow... Our experiences have been very different, then. I've found each upgrade of Opus to be a noticeable improvement in its complex reasoning and delegation capabilities over its predecessor.<p>To me, this feels in many ways like a technical manager or team lead's job, where I guide the process along using my knowledge and experience, and then let the agent fill in the rest (to the best of its ability).<p>The agent can't really learn from its mistakes (at least, not without consuming precious context), so I apply a blameless postmortem process, updating the guardrails whenever it goes astray in the same way more than once.<p>And really, I'd rather be contemplating the more difficult and interesting questions of architecture, environment, ergonomics and market fit, so it suits me fine.</p>
]]></description><pubDate>Thu, 11 Jun 2026 14:26:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=48490811</link><dc:creator>kstenerud</dc:creator><comments>https://news.ycombinator.com/item?id=48490811</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48490811</guid></item><item><title><![CDATA[New comment by kstenerud in "Workers are spending over 6 hours a week botsitting AI, fueling job frustration"]]></title><description><![CDATA[
<p>I've found that setting good guardrails, and running in a sandbox so that the agent doesn't keep asking tedious permission questions, makes things go a LOT smoother.<p>Generally, I spend anywhere between 15 mins and an hour setting things up (depending on how well the project is set up for AI work), and then set the agent going, coming back in a half-hour to an hour to check its progress. Generally, the tooling keeps it honest (for golang, forbidigo is AWESOME). 80% of the questions the agent asks me require a lot of thought. 20% of what it does needs correction.<p>The other thing to remember with LLMs is that they are NOT human, and won't react in a human way. So you'll see strikes of "brilliance" followed by the absolutely bizarre. But good guardrails keep that to a minimum.</p>
]]></description><pubDate>Thu, 11 Jun 2026 14:04:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=48490542</link><dc:creator>kstenerud</dc:creator><comments>https://news.ycombinator.com/item?id=48490542</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48490542</guid></item><item><title><![CDATA[New comment by kstenerud in "macOS Container Machines"]]></title><description><![CDATA[
<p>This is awesome! I just added this as a backend for yoloAI on Mac, and wow... super fast startup times now!</p>
]]></description><pubDate>Wed, 10 Jun 2026 17:07:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=48479381</link><dc:creator>kstenerud</dc:creator><comments>https://news.ycombinator.com/item?id=48479381</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48479381</guid></item><item><title><![CDATA[New comment by kstenerud in "European sentiments towards the US hit an all-time low"]]></title><description><![CDATA[
<p>> Worryingly, European populists are espousing more assertively anti-Ukrainian views. Viktor Orban focused his unsuccessful election campaign to remain Hungarian prime minister on that theme. Meanwhile ECFR’s polling shows that voters of the far-right Freedom Party in Austria (FPÖ), the AfD in Germany, two far-right parties in Poland, and the governing and populist Progressive Bulgaria all see Ukraine as chiefly a “rival” or “adversary”.<p>Yes, because Russia's propaganda, espionage and corruption arm has been focusing on the far-right parties for the past two decades, breaking from their previous focus on the far left.</p>
]]></description><pubDate>Wed, 10 Jun 2026 10:49:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=48474376</link><dc:creator>kstenerud</dc:creator><comments>https://news.ycombinator.com/item?id=48474376</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48474376</guid></item><item><title><![CDATA[New comment by kstenerud in "Grit: Rewriting Git in Rust with agents"]]></title><description><![CDATA[
<p>You won't get anywhere pressing your case here. This group has already found you guilty, and no argument will change their minds.<p>You've been caricatured into a blind AI-follower rust-rewriter-just-because type, and that's the surface they'll continually attack (you're wasting time, hurting the community, v2-itis, bikeshedding, premature optimization, copyright violation, moustache-twirling-evil-intent-rug-pull-later, etc etc etc).<p>Just continue in your work. It's good, and we need people like you.</p>
]]></description><pubDate>Wed, 10 Jun 2026 05:00:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=48471631</link><dc:creator>kstenerud</dc:creator><comments>https://news.ycombinator.com/item?id=48471631</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48471631</guid></item><item><title><![CDATA[New comment by kstenerud in "The beauty and simplicity of the good old C-style void* in C++"]]></title><description><![CDATA[
<p>Sure, if the function is expected to not treat the data as anything but bytes, then it might be acceptable in narrow circumstances.<p>But in such a case I'd argue FOR the ceremony, as a way of declaring from the API "The input is a sequence of bytes that I won't treat as anything other than a sequence of bytes", and declaring from each and every call site: "This is not a mistake; we really are 'converting' this struct to a series of bytes for this function to consume".<p>Then anyone auditing the code knows the intent by the shape of the types, and would quickly flag any typecasting shenanigans within the receiver function.<p>But even then, hashing a struct will rapidly bring you into the land of dragons and fairies. Abandon all hope if you have floats or UTF-8 (which have multiple representations for the same values).<p>Far better to remain type-aware if you value your sanity.</p>
]]></description><pubDate>Tue, 09 Jun 2026 16:24:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=48463214</link><dc:creator>kstenerud</dc:creator><comments>https://news.ycombinator.com/item?id=48463214</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48463214</guid></item></channel></rss>