<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: kbknapp</title><link>https://news.ycombinator.com/user?id=kbknapp</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Fri, 17 Apr 2026 15:41:05 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=kbknapp" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by kbknapp in "Lix is a modern, delicious implementation of the Nix package manager"]]></title><description><![CDATA[
<p>Initially I was like, "Oh cool, a new layer on top of Nix to make it more accessible!" And then read on to see it's basically just the NixCpp fork from save-nix-together now with Meson. I guess gradually moving to Rust is a cool idea, but there also exists tvix in that space with a greenfield version in Rust.</p>
]]></description><pubDate>Mon, 06 May 2024 14:09:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=40274898</link><dc:creator>kbknapp</dc:creator><comments>https://news.ycombinator.com/item?id=40274898</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40274898</guid></item><item><title><![CDATA[New comment by kbknapp in "Lix is a modern, delicious implementation of the Nix package manager"]]></title><description><![CDATA[
<p>This looks to be a fork of NixCpp only. There is also <a href="https://aux.computer" rel="nofollow">https://aux.computer</a> that appears to be (the beginning of) a fork of nixpkgs.</p>
]]></description><pubDate>Mon, 06 May 2024 14:07:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=40274861</link><dc:creator>kbknapp</dc:creator><comments>https://news.ycombinator.com/item?id=40274861</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40274861</guid></item><item><title><![CDATA[New comment by kbknapp in "Ask HN: Any tool for managing large and variable command lines?"]]></title><description><![CDATA[
<p>Navi[1] is perfect for this! It's both a fuzzy finder of a personal collection of commands, but it's template syntax is flexible enough to be able to have "command builders"<p>I have a blog on doing exactly this for a subset of strace[2].<p>1: <a href="https://github.com/denisidoro/navi">https://github.com/denisidoro/navi</a><p>2: <a href="https://kbknapp.dev/strace-navi/" rel="nofollow">https://kbknapp.dev/strace-navi/</a></p>
]]></description><pubDate>Thu, 25 Apr 2024 23:52:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=40164441</link><dc:creator>kbknapp</dc:creator><comments>https://news.ycombinator.com/item?id=40164441</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40164441</guid></item><item><title><![CDATA[New comment by kbknapp in "GPS antenna mods make Starlink terminal immune to jammers"]]></title><description><![CDATA[
<p>GPS satellites don't "send" your coordinates to your receiver. Your receiver is just listening to the broadcast signal from several (usually 4+) satellites and based on the strength of that signal determining how far it is from each of those satellites. Which means the receiver is able to triangulate it's own position.</p>
]]></description><pubDate>Wed, 06 Mar 2024 16:09:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=39617386</link><dc:creator>kbknapp</dc:creator><comments>https://news.ycombinator.com/item?id=39617386</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39617386</guid></item><item><title><![CDATA[New comment by kbknapp in "Cve-rs: Fast memory vulnerabilities, written in safe Rust"]]></title><description><![CDATA[
<p>In fact, I believe that's exactly where this bug lies. You're effectively able to trigger a case in which passing `&'a &'b` <i>without</i> providing any correlation (`where 'a: 'b`) that one would normally be required to provide makes the compiler behave as if those correlations were passed, albeit inferred incorrectly.</p>
]]></description><pubDate>Tue, 20 Feb 2024 16:34:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=39443349</link><dc:creator>kbknapp</dc:creator><comments>https://news.ycombinator.com/item?id=39443349</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39443349</guid></item><item><title><![CDATA[Rust 1.76.0]]></title><description><![CDATA[
<p>Article URL: <a href="https://blog.rust-lang.org/2024/02/08/Rust-1.76.0.html">https://blog.rust-lang.org/2024/02/08/Rust-1.76.0.html</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=39302073">https://news.ycombinator.com/item?id=39302073</a></p>
<p>Points: 10</p>
<p># Comments: 1</p>
]]></description><pubDate>Thu, 08 Feb 2024 14:09:42 +0000</pubDate><link>https://blog.rust-lang.org/2024/02/08/Rust-1.76.0.html</link><dc:creator>kbknapp</dc:creator><comments>https://news.ycombinator.com/item?id=39302073</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39302073</guid></item><item><title><![CDATA[New comment by kbknapp in "Hyperfine: A command-line benchmarking tool"]]></title><description><![CDATA[
<p>hyperfine is such a great tool that it's one of the first I reach for when doing any sort of benchmarking.<p>I encourage anyone who's tried hyperfine and enjoyed it to also look at sharkdp's other utilities, they're all amazing in their own right with fd[1] being the one that perhaps get the most daily use for me and has totally replaced my use of find(1).<p>[1]: <a href="https://github.com/sharkdp/fd">https://github.com/sharkdp/fd</a></p>
]]></description><pubDate>Tue, 06 Feb 2024 13:57:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=39274199</link><dc:creator>kbknapp</dc:creator><comments>https://news.ycombinator.com/item?id=39274199</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39274199</guid></item><item><title><![CDATA[New comment by kbknapp in "Identifying Rust's collect:<Vec<_>>() memory leak footgun"]]></title><description><![CDATA[
<p>Rust can re-use an allocation, but if the new item is <i>smaller</i> than the previous it doesn't automatically remove (free) the "wasted" memory left over from the previous allocation. I think this is categorically not a memory leak as the memory was absolutely accounted for and able to be freed (as evidenced by the `shrink_to_fit()`), but I can see how the author was initially confused by this optimization.<p>The 2x versus 200x confusion IMO is the OP was conflating that Vec will double in size when it needs more space, so they were assuming the memory should have only ever been 2x in the worst case of the <i>new size</i>. Which in the OPs case because the new type size was smaller than the previous, it seemed like a massive over-allocation.<p>Imagine you had a `Vec<Vec<u16>>` and to keep it simple it there were only 2 elements in both the inner and outer Vec's, which if we assume Rust doubled each Vec's allocation that'd be 4x4 "slots" of 2 bytes per slot (or 32 bytes total allocated...in reality it'd be a little different but to keep it simple let's just assume).<p>Now imagine you replace that allocation with a `Vec<Vec<u8>>` which even with the same doubling of the allocation size would be a maximum of 4x4 slots of 1 byte per slot (16 bytes total allocation required). Well we already have a 32 byte allocation and we only need 16, so Rust just re-uses it, and now it looks like we have 16 bytes of "waste."<p>Now the author was expecting <i>at most</i> 16 bytes (remember, 2x the <i>new size</i>) but was seeing 32 bytes because Rust just re-used the allocation and didn't free the "extra" 16 bytes. Further, when they ran `Vec::shrink_to_fit()` it shrunk down to only <i>used</i> space, which in our example would be a total of 4 bytes (2x2 of 1 byte slots actually used).<p>Meaning the author was comparing an <i>observed</i> 32 byte allocation, to an expectation of <i>at most</i> 16 bytes, and a properly sized allocation of 4 bytes. Factored out to their real world data I can see how they'd see numbers greater than "at most 2x."</p>
]]></description><pubDate>Thu, 18 Jan 2024 20:30:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=39047230</link><dc:creator>kbknapp</dc:creator><comments>https://news.ycombinator.com/item?id=39047230</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39047230</guid></item><item><title><![CDATA[New comment by kbknapp in "Oxlint – JavaScript linter written in Rust"]]></title><description><![CDATA[
<p>TBF, when a 1.0 is released doesn't mean it's viable right way for things like this. It takes a certain level of market adoption and ecosystem buy-in first.<p>Also, Zig still isn't 1.0 so if we're measuring languages from when they first became public, I believe those others in your list are much older as well.</p>
]]></description><pubDate>Fri, 15 Dec 2023 14:24:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=38654467</link><dc:creator>kbknapp</dc:creator><comments>https://news.ycombinator.com/item?id=38654467</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38654467</guid></item><item><title><![CDATA[New comment by kbknapp in "Oxlint – JavaScript linter written in Rust"]]></title><description><![CDATA[
<p>I'm not a fan of trying to put hard numbers on unknowns like this because it biases against uncertainty, but if they shaved ~74 minutes off their CI time and assuming it runs multiple times a day that very quick equates to a small teams cost savings over a year.<p>However, I think trying to find the actual numbers is dumb because there's also the intangibles such as marketing and brand recognition bump by doing this both for the company and individuals involved.<p>That's not to say all greenfield endeavors should be actioned, but ones with substantial gains like this seem fine given the company is big enough to absorb the initial up front cost of development.</p>
]]></description><pubDate>Fri, 15 Dec 2023 14:22:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=38654440</link><dc:creator>kbknapp</dc:creator><comments>https://news.ycombinator.com/item?id=38654440</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38654440</guid></item><item><title><![CDATA[New comment by kbknapp in "Oxlint – JavaScript linter written in Rust"]]></title><description><![CDATA[
<p>I've had significantly fewer issues with `cargo [b]install`ed compiled Rust programs than `npm install`ed ones. Getting nodejs/npm installed (and at an appropriate version) is not always trivial, especially when programs require different versions.<p>OOTH, <i>Precompiled</i> Rust binaries have the libc version issue only if you're distributing binaries to unknown/all distribtuions, but that's pretty trivially solved by just compiling using an old glibc (or MUSL). Whereas `cargo install' (and targetting specific distributions) does the actual compiling and uses the current glibc so it's not an issue.</p>
]]></description><pubDate>Fri, 15 Dec 2023 13:59:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=38654218</link><dc:creator>kbknapp</dc:creator><comments>https://news.ycombinator.com/item?id=38654218</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38654218</guid></item><item><title><![CDATA[New comment by kbknapp in "JC converts the output of popular command-line tools to JSON"]]></title><description><![CDATA[
<p>Really cool idea but this gives me anxiety just thinking about how it has to be maintained. Taking into account versions, command flags changing output, etc. all seems like a nightmare to maintain to the point where I'm assuming actual usage of this will work great for a few cases but quickly lose it's novelty beyond basic cases. Not to mention using `--<CMD>` for the tool seems like a poor choice as your help/manpage will end up being thousands of lines long because each new parser will require a new flag.</p>
]]></description><pubDate>Fri, 08 Dec 2023 15:11:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=38569961</link><dc:creator>kbknapp</dc:creator><comments>https://news.ycombinator.com/item?id=38569961</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38569961</guid></item><item><title><![CDATA[Three Problems of Pinning]]></title><description><![CDATA[
<p>Article URL: <a href="https://without.boats/blog/three-problems-of-pinning/">https://without.boats/blog/three-problems-of-pinning/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=38475035">https://news.ycombinator.com/item?id=38475035</a></p>
<p>Points: 4</p>
<p># Comments: 1</p>
]]></description><pubDate>Thu, 30 Nov 2023 15:56:23 +0000</pubDate><link>https://without.boats/blog/three-problems-of-pinning/</link><dc:creator>kbknapp</dc:creator><comments>https://news.ycombinator.com/item?id=38475035</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38475035</guid></item><item><title><![CDATA[New comment by kbknapp in "Poll_next"]]></title><description><![CDATA[
<p>Many (most?) disagree with this line of thinking, but I believe the "Rust will never have a 2.0" style thought is what ultimately leads these multi-year pursuits of perfect (or at least good enough to last "essentially forever"). The Editions provider a certain release valve for some styles of breaking changes, but I don't believe it's quite enough ultimately over the entire lifespan of a language which will undoubtedly grow cruft that even Editions cannot remove.</p>
]]></description><pubDate>Mon, 27 Nov 2023 20:32:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=38437848</link><dc:creator>kbknapp</dc:creator><comments>https://news.ycombinator.com/item?id=38437848</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38437848</guid></item><item><title><![CDATA[New comment by kbknapp in "OpenAI's misalignment and Microsoft's gain"]]></title><description><![CDATA[
<p>Seems the author is expecting OAI to continue merrily along its way working towards AGI (albeit at a stated slower pace) while MSFT is able to take Altman et al and circle the wagons on what already exists (GPT4) squeezing it for all its worth. While that's entirely possible, there are other outcomes not nearly as positive that would put MSFT at a disadvantage. It's like saying MSFT's AI hedge is built on what appears like sand; maybe it's stable, maybe it's not.</p>
]]></description><pubDate>Mon, 20 Nov 2023 13:45:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=38347931</link><dc:creator>kbknapp</dc:creator><comments>https://news.ycombinator.com/item?id=38347931</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38347931</guid></item><item><title><![CDATA[New comment by kbknapp in "What I learned getting acquired by Google"]]></title><description><![CDATA[
<p>I've worked in large companies (thousands of employees) and startups (<20) and I actually felt more like a cog in the machine at the startup size companies.<p>I was literally just a means to an end to churn out code on a product. I could have been (and eventually was) replaced at any moment with another generic cog willing to churn out the same code without much of a thought.</p>
]]></description><pubDate>Thu, 09 Nov 2023 17:32:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=38208045</link><dc:creator>kbknapp</dc:creator><comments>https://news.ycombinator.com/item?id=38208045</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38208045</guid></item><item><title><![CDATA[New comment by kbknapp in "Cloudflare API Down"]]></title><description><![CDATA[
<p>It's the IATA code for Portland International Airport. Many datacenters use IATA codes for the nearest airport to give a rough approximation of the location. So the PDX datacenter is the one closest to the PDX airport in or around Portland.</p>
]]></description><pubDate>Fri, 03 Nov 2023 13:24:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=38128369</link><dc:creator>kbknapp</dc:creator><comments>https://news.ycombinator.com/item?id=38128369</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38128369</guid></item><item><title><![CDATA[New comment by kbknapp in "Confusing Git Terminology"]]></title><description><![CDATA[
<p>Git terminology is a clinical example where many (most? definitely not all) terms make perfect sense <i>once you already understand how it works</i>, but make almost no sense in concert with other terminology or when you don't know the implementation details.<p>Leaky terminology.</p>
]]></description><pubDate>Thu, 02 Nov 2023 16:53:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=38116446</link><dc:creator>kbknapp</dc:creator><comments>https://news.ycombinator.com/item?id=38116446</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38116446</guid></item><item><title><![CDATA[New comment by kbknapp in "SSH-audit: SSH server and client security auditing"]]></title><description><![CDATA[
<p>The "Security. Cryptography. Whatever." podcast just did an episode about the origin of the nistp curves.<p><a href="https://securitycryptographywhatever.com/2023/10/12/the-nist-curves/" rel="nofollow noreferrer">https://securitycryptographywhatever.com/2023/10/12/the-nist...</a></p>
]]></description><pubDate>Sun, 15 Oct 2023 21:15:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=37893455</link><dc:creator>kbknapp</dc:creator><comments>https://news.ycombinator.com/item?id=37893455</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37893455</guid></item><item><title><![CDATA[New comment by kbknapp in "ZSA Voyager: Low profile split keyboard"]]></title><description><![CDATA[
<p>My wife isn't going to be happy about this...<p>I have an ErgoDox EZ at home, and a Moonlander for work. I absolutely love these keyboards. They have played a significant role in reducing pain I experience from arthritis.</p>
]]></description><pubDate>Tue, 05 Sep 2023 15:04:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=37392630</link><dc:creator>kbknapp</dc:creator><comments>https://news.ycombinator.com/item?id=37392630</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37392630</guid></item></channel></rss>