<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: klauserc</title><link>https://news.ycombinator.com/user?id=klauserc</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sun, 21 Jun 2026 09:41:14 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=klauserc" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by klauserc in "OpenAI Privacy Filter"]]></title><description><![CDATA[
<p>Was my first thought as well, but this is an open weights model. You can run it on your own hardware.</p>
]]></description><pubDate>Thu, 23 Apr 2026 04:04:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=47872154</link><dc:creator>klauserc</dc:creator><comments>https://news.ycombinator.com/item?id=47872154</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47872154</guid></item><item><title><![CDATA[New comment by klauserc in "jj – the CLI for Jujutsu"]]></title><description><![CDATA[
<p>I definitely am. Haven't touched git in over a year. If there was just a single feature to point at where jj meaningfully improves on git, I think it's: `jj undo`.<p>It is a universal undo command. It works for every change in your repository. You don't need to memorize/google/ask claude how to revert each individual kind of operation (commit, rebase, delete branch, etc.). You try a jj command, look at your repo, and if you don't like what you see, you `jj undo`.<p>The biggest downside for me is that no longer have the necessary expertise to help coworkers who get themselves into trouble with git.</p>
]]></description><pubDate>Tue, 14 Apr 2026 15:53:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=47767298</link><dc:creator>klauserc</dc:creator><comments>https://news.ycombinator.com/item?id=47767298</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47767298</guid></item><item><title><![CDATA[New comment by klauserc in "jj – the CLI for Jujutsu"]]></title><description><![CDATA[
<p>jj automatically hides "uninteresting" changes. Most of the time, this is good.<p>Occasionally, I need to see more changes. It is not obvious to me how I get jj to show me elided changes. I mean, sure, I can explicitly ask jj to show me the one ancestor of the last visible change, and then show me the ancestor of that one, etc. Is some flag to say: "just show me 15 more changes that you would otherwise elide"?</p>
]]></description><pubDate>Tue, 14 Apr 2026 15:39:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=47767095</link><dc:creator>klauserc</dc:creator><comments>https://news.ycombinator.com/item?id=47767095</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47767095</guid></item><item><title><![CDATA[New comment by klauserc in "Using LLMs at Oxide"]]></title><description><![CDATA[
<p>The best way to get an LLM to follow style is to make sure that this style is evident in the codebase. Excessive instructions (whether through memories or AGENT.md) do not help as much.<p>Personally, I absolutely hate instructing agents to make corrections. It's like pushing a wet noodle. If there is lots to correct, fix one or two cases manually and tell the LLM to follow that pattern.<p><a href="https://www.humanlayer.dev/blog/writing-a-good-claude-md">https://www.humanlayer.dev/blog/writing-a-good-claude-md</a></p>
]]></description><pubDate>Sun, 07 Dec 2025 09:30:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=46180386</link><dc:creator>klauserc</dc:creator><comments>https://news.ycombinator.com/item?id=46180386</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46180386</guid></item><item><title><![CDATA[New comment by klauserc in "How to create accessible PDFs from the start"]]></title><description><![CDATA[
<p>Isn't that example the exact opposite of mixing content and presentation? The * notation applies the strong [emphasis] tag, the show rule (re-)defines the presentation. Ideally you would of course separate the two into separate files (template + content).<p>In my time using Typst, I found that Typst makes it possible/easy to make content even more abstract: write the content as a "data structure" and then present parts of it in various places around your document. For instance to list quantity/weight of a parts description in a parts index at the end.</p>
]]></description><pubDate>Tue, 11 Nov 2025 13:22:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=45886981</link><dc:creator>klauserc</dc:creator><comments>https://news.ycombinator.com/item?id=45886981</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45886981</guid></item><item><title><![CDATA[New comment by klauserc in "Notes on switching to Helix from Vim"]]></title><description><![CDATA[
<p>Was using vim for a decade, discovered Helix, installed it on all my systems and haven't looked back (at least not voluntarily; I'm always bewildered by the old-school CAD-like command-then-subject paradigm when I get thrown into vi on a random machine)</p>
]]></description><pubDate>Fri, 10 Oct 2025 21:30:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=45543998</link><dc:creator>klauserc</dc:creator><comments>https://news.ycombinator.com/item?id=45543998</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45543998</guid></item><item><title><![CDATA[New comment by klauserc in "The borrowchecker is what I like the least about Rust"]]></title><description><![CDATA[
<p>Yes! One of the worst bugs to debug in my entire career boiled down to a piece of Java mutating a HashSet that it received from another component. That other component had independently made the decision to cache these HashSet instances. Boom! Spooky failure scenarios where requests only start to fail if you previously made an unrelated request that happened to mutate the cached object.<p>This is an example where ownership semantics would have prevented that bug. (references to the cached HashSets could have only been handed out as shared/immutable references; the mutation of the cached HashSet could not have happened).<p>The ownership model is about much more than just memory safety. This is why I tell people: spending a weekend to learn rust will make you a better programmer in any language (because you will start thinking about proper ownership even in GC-ed languages).</p>
]]></description><pubDate>Sun, 20 Jul 2025 07:26:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=44622745</link><dc:creator>klauserc</dc:creator><comments>https://news.ycombinator.com/item?id=44622745</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44622745</guid></item><item><title><![CDATA[New comment by klauserc in "Ask HN: To what extend have you stopped or limited your use of AI?"]]></title><description><![CDATA[
<p>Using gen AI for anything artistic (illustrations, music, video, creative writing) is a dead end. The results are soulless and bland. People notice immediately.<p>Code completions are fine. Driving code through chat is a complete waste of time (never saves time for me; always ends up taking longer). Agentic coding (where the LLM works autonomously for half an hour) still holds some promise, but my employer isn't ready for that.<p>Research/queries only for very low stakes/established things (e.g., how do I achieve X in git).</p>
]]></description><pubDate>Sat, 12 Jul 2025 04:59:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=44539426</link><dc:creator>klauserc</dc:creator><comments>https://news.ycombinator.com/item?id=44539426</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44539426</guid></item><item><title><![CDATA[New comment by klauserc in "Vim Language, Motions, and Modes Explained (2023)"]]></title><description><![CDATA[
<p>I found Helix much easier to get into than vim because you can see and experiment with the selection before committing to an action. It's also much more familiar to users of modern software (where you generally first select an object and then apply an action).</p>
]]></description><pubDate>Thu, 24 Apr 2025 10:50:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=43781158</link><dc:creator>klauserc</dc:creator><comments>https://news.ycombinator.com/item?id=43781158</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43781158</guid></item><item><title><![CDATA[New comment by klauserc in "Ask HN: Do you still use search engines?"]]></title><description><![CDATA[
<p>Yes, all the time. For reference-level information, I don't trust AI summaries. If I need to know facts, I cannot have even the possibility of a lying auto-complete machine between me and the facts.<p>Exploratory/introductory/surface-level queries are the ones that get handed to auto-complete.<p>I like how Kagi lets me control whether AI should be involved by adding or omitting a question mark from my search query. Best of both worlds.</p>
]]></description><pubDate>Tue, 08 Apr 2025 21:05:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=43626459</link><dc:creator>klauserc</dc:creator><comments>https://news.ycombinator.com/item?id=43626459</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43626459</guid></item><item><title><![CDATA[New comment by klauserc in "A look at Firefox forks"]]></title><description><![CDATA[
<p>As someone responsible for login/registration at a large online retailer, I see so much bot traffic and attacks. Attackers try to enumerate registered users, try to mass-login with credentials from password dumps, try to register accounts controlled by bots.<p>Login forms are a war zone. Looking for patterns that indicate the other party is a bot and serve them (and only them) a captcha is a technique that is quite effective. But it is not perfect. Especially business customers often get forced to solve captchas in our system.<p>If you know of a better solution (other than: don't be a big online shop), I'm all ears.</p>
]]></description><pubDate>Sat, 15 Mar 2025 08:05:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=43370885</link><dc:creator>klauserc</dc:creator><comments>https://news.ycombinator.com/item?id=43370885</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43370885</guid></item><item><title><![CDATA[New comment by klauserc in "Show HN: Bayleaf – Building a low-profile wireless split keyboard"]]></title><description><![CDATA[
<p>Fantastically beautiful keyboard!<p>Keyboards are such a good hobby project. The scope is comparatively small, yet within that scope you get in contact with many different and highly interesting subjects and challenges. And you can more or less pick and choose, which ones you engage with (wireless vs wired, soldering vs hand-wired, custom firmware vs. ZMK/QMK, split vs. traditional).</p>
]]></description><pubDate>Tue, 04 Mar 2025 16:13:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=43256588</link><dc:creator>klauserc</dc:creator><comments>https://news.ycombinator.com/item?id=43256588</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43256588</guid></item><item><title><![CDATA[New comment by klauserc in "Show HN: Bayleaf – Building a low-profile wireless split keyboard"]]></title><description><![CDATA[
<p>You can buy ZSA split keyboards with labels on the keycaps. Its great while you are still learning to type on these rather exotic keyboards. As you get more proficient, you start to rely more and more on the "central" keys (using layers toggles to put, say arrow keys on the home row). Muscle-memory is often more than enough.<p>That said, I have kept the number row labelled. These keys are not obscured by your hands and they can give you the necessary frame of reference. The ideal trade-off for me.</p>
]]></description><pubDate>Tue, 04 Mar 2025 16:09:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=43256544</link><dc:creator>klauserc</dc:creator><comments>https://news.ycombinator.com/item?id=43256544</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43256544</guid></item><item><title><![CDATA[New comment by klauserc in "ZFS 2.3 released with ZFS raidz expansion"]]></title><description><![CDATA[
<p>I've been running Fedora on top of the excellent ZFSBootMenu[1] for about a year. You need to pay attention to the kernel versions supported by OpenZFS and might have to wait for support for a couple of weeks. The setup works fine otherwise.<p>[1] <a href="https://docs.zfsbootmenu.org" rel="nofollow">https://docs.zfsbootmenu.org</a></p>
]]></description><pubDate>Tue, 14 Jan 2025 15:03:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=42698039</link><dc:creator>klauserc</dc:creator><comments>https://news.ycombinator.com/item?id=42698039</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42698039</guid></item><item><title><![CDATA[New comment by klauserc in "ZFS 2.3 released with ZFS raidz expansion"]]></title><description><![CDATA[
<p>I use it on my work laptop. Reasons:<p>- a single solution that covers the entire storage domain (I don't have to learn multiple layers, like logical volume manager vs. ext4 vs. physical partitions)
- cheap/free snapshots. I have been glad to have been able to revert individual files or entire file systems to an earlier state. E.g., create a snapshot before doing a major distro update.
- easy to configure/well documented<p>Like others have said, at this point I would need a good reason, NOT to use ZFS on a system.</p>
]]></description><pubDate>Tue, 14 Jan 2025 15:00:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=42698005</link><dc:creator>klauserc</dc:creator><comments>https://news.ycombinator.com/item?id=42698005</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42698005</guid></item><item><title><![CDATA[New comment by klauserc in ".NET 9"]]></title><description><![CDATA[
<p>You have to set the C# language version to 'preview'.<p><pre><code>    <PropertyGroup>
       <LangVersion>preview</LangVersion>
    </PropertyGroup></code></pre></p>
]]></description><pubDate>Fri, 15 Nov 2024 13:50:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=42146911</link><dc:creator>klauserc</dc:creator><comments>https://news.ycombinator.com/item?id=42146911</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42146911</guid></item><item><title><![CDATA[New comment by klauserc in "What Is a Workstation?"]]></title><description><![CDATA[
<p>Still fascinating how a computing device that used to cost upwards of 10k a couple of years ago is now not even considered a "workstation".<p>On a more serious note, I'm not sure that ECC RAM should be an important distinguishing factor. If your workstation actually produces an artifact that is used further down the line (a model, a binary or even just a number, a decision based on a simulation), then yes, definitely, it should run ECC RAM.<p>I feel like it's a different story for software engineers. What they use their "workstations" for is not what will eventually get shipped. That artifact is (hopefully) getting built on dedicated build machines (and those better have ECC RAM). ECC RAM won't have much impact on running IDEs and local compile-test-run cycles, right?</p>
]]></description><pubDate>Mon, 11 Nov 2024 17:49:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=42108970</link><dc:creator>klauserc</dc:creator><comments>https://news.ycombinator.com/item?id=42108970</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42108970</guid></item><item><title><![CDATA[New comment by klauserc in "Perhaps Rust Needs "Defer""]]></title><description><![CDATA[
<p>Would `Vec::into_boxed_slice` [1] be the answer here? It gives you a `Box<[Foo]>`, which doesn't have a capacity (it still knows its own length).<p>1: <a href="https://doc.rust-lang.org/std/vec/struct.Vec.html#method.into_boxed_slice" rel="nofollow">https://doc.rust-lang.org/std/vec/struct.Vec.html#method.int...</a></p>
]]></description><pubDate>Wed, 06 Nov 2024 10:23:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=42059407</link><dc:creator>klauserc</dc:creator><comments>https://news.ycombinator.com/item?id=42059407</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42059407</guid></item><item><title><![CDATA[New comment by klauserc in "The Ultimate Conditional Syntax"]]></title><description><![CDATA[
<p>C# pattern matching gets very close. I think C# can do everything except for their last example ("splitting conditional prefixes in arbitrary places"). One of the things I miss when switching to Rust.<p><pre><code>    if foo(args)
        == 0 then "null"
        |> abs
            > 100 then "large"
            < 10 then "small"
            else "medium"
</code></pre>
That last syntax took me a while to parse in the paper, but I can imagine numerous places in our everyday code where such syntax would more concisely capture intent.</p>
]]></description><pubDate>Mon, 21 Oct 2024 15:14:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=41905081</link><dc:creator>klauserc</dc:creator><comments>https://news.ycombinator.com/item?id=41905081</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41905081</guid></item><item><title><![CDATA[New comment by klauserc in "Steve's Jujutsu Tutorial"]]></title><description><![CDATA[
<p>Been using jj at work for months now. In colocated mode, JetBrains IDEs even retain some if their VCS integration.<p>The ability to easily work on top of an octopus merge and then push changes "down" into the contributing branches has been a live saver when my team had to do a big refactoring in a mono repo and split the changes into small PRs for individual teams (code owners).<p>The auto committing behavior is a bit weird at first, but now I don't want to go back to git. It feels a bit like the step from SVN to git back in the the day. ("this feels weird" -> "how did people ever tolerate the old way?")</p>
]]></description><pubDate>Sat, 19 Oct 2024 09:07:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=41886632</link><dc:creator>klauserc</dc:creator><comments>https://news.ycombinator.com/item?id=41886632</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41886632</guid></item></channel></rss>