<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: eklitzke</title><link>https://news.ycombinator.com/user?id=eklitzke</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Thu, 23 Apr 2026 17:09:18 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=eklitzke" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by eklitzke in "Our eighth generation TPUs: two chips for the agentic era"]]></title><description><![CDATA[
<p>I can't speak to what every team at Google does, but there are machines with Nvidia GPUs in Borg. However Google charges orgs internally for cpu/memory/gpu/tpu usage and TPUs are *way* more efficient in terms of FLOPS/$ than Nvidia GPUs, so there is a *huge* incentive for teams to use TPUs if they can, especially for teams operating large products.</p>
]]></description><pubDate>Wed, 22 Apr 2026 21:11:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=47869341</link><dc:creator>eklitzke</dc:creator><comments>https://news.ycombinator.com/item?id=47869341</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47869341</guid></item><item><title><![CDATA[New comment by eklitzke in "Zero-copy protobuf and ConnectRPC for Rust"]]></title><description><![CDATA[
<p>This is true but the relative overhead of this is highly dependent on the protobuf structure in one's schema. For example, fixed integer fields don't need to be decoded (including repeated fixed ints), and the main idea of the "zero copy" here is avoiding copying string and bytes fields. If your protobufs are mostly varints then yes they all have to be decoded, if your protobufs contain a lot of string/bytes data then most of the decoded overhead could be memory copies for this data rather than varint decoding.<p>In some message schemas even though this isn't truly zero copy it may be close to it in terms of actual overhead and CPU time, in other schemas it doesn't help at all.</p>
]]></description><pubDate>Mon, 20 Apr 2026 16:53:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=47837042</link><dc:creator>eklitzke</dc:creator><comments>https://news.ycombinator.com/item?id=47837042</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47837042</guid></item><item><title><![CDATA[New comment by eklitzke in "Show HN: Gemini Pro 3 imagines the HN front page 10 years from now"]]></title><description><![CDATA[
<p>Pretty much all of the history of HN front pages, posts, and comments are surely in the Gemini training corpus. Therefore it seems totally plausible that Gemini would understand HN inside jokes or sentiment outside of what's literally on the front page given in the prompt, especially given that the prompt specifically stated that this is the front page for HN.</p>
]]></description><pubDate>Tue, 09 Dec 2025 21:02:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=46210605</link><dc:creator>eklitzke</dc:creator><comments>https://news.ycombinator.com/item?id=46210605</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46210605</guid></item><item><title><![CDATA[Cosmological Lithium Problem]]></title><description><![CDATA[
<p>Article URL: <a href="https://en.wikipedia.org/wiki/Cosmological_lithium_problem">https://en.wikipedia.org/wiki/Cosmological_lithium_problem</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46154547">https://news.ycombinator.com/item?id=46154547</a></p>
<p>Points: 4</p>
<p># Comments: 0</p>
]]></description><pubDate>Thu, 04 Dec 2025 23:12:59 +0000</pubDate><link>https://en.wikipedia.org/wiki/Cosmological_lithium_problem</link><dc:creator>eklitzke</dc:creator><comments>https://news.ycombinator.com/item?id=46154547</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46154547</guid></item><item><title><![CDATA[x86 architecture 1 byte opcodes]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.sandpile.org/x86/opc_1.htm">https://www.sandpile.org/x86/opc_1.htm</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=45774724">https://news.ycombinator.com/item?id=45774724</a></p>
<p>Points: 90</p>
<p># Comments: 31</p>
]]></description><pubDate>Fri, 31 Oct 2025 17:49:16 +0000</pubDate><link>https://www.sandpile.org/x86/opc_1.htm</link><dc:creator>eklitzke</dc:creator><comments>https://news.ycombinator.com/item?id=45774724</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45774724</guid></item><item><title><![CDATA[New comment by eklitzke in "A years-long Turkish alphabet bug in the Kotlin compiler"]]></title><description><![CDATA[
<p>I think it's important to point out the distinction between what POSIX mandates and what actual libc implementations, notably glibc, do. Nearly all non-reentrant POSIX functions are actually only non-reentrant if you are using a 1980s computer that for some reason has threads but doesn't have thread-local storage. All of these things like strerror are implemented using TLS in glibc nowadays, so while it is technically true you need to use the _r versions if you want to be portable to computers that nobody has used in 30 years in practice you usually don't need to worry about these things, especially if you're using Linux, since they use store results in static thread-local memory rather than static global memory.<p>As for the string.h stuff, while it is all terrible it's at least well documented that everything is broken unless you use wchar_t, and nobody uses wchar_t because it's the worst possible localization solution. No one is seriously trying to do real localization in C (and if they were they'd be using libicu).</p>
]]></description><pubDate>Mon, 13 Oct 2025 19:07:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=45572132</link><dc:creator>eklitzke</dc:creator><comments>https://news.ycombinator.com/item?id=45572132</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45572132</guid></item><item><title><![CDATA[New comment by eklitzke in "Memory access is O(N^[1/3])"]]></title><description><![CDATA[
<p>NUMA has a huge amount of overhead (e.g. in terms of intercore latency), and NUMA server CPUs cost a lot more than single socket boards. If you look at the servers at Google or Facebook they will have some NUMA servers for certain workloads that actually need them, but most most servers will be single socket because they're cheaper and applications literally run faster on them. It's a win win if you can fit your workload on a single socket server so there is a lot of motivation to make applications work in a non-NUMA way if at all possible.</p>
]]></description><pubDate>Thu, 09 Oct 2025 04:28:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=45523506</link><dc:creator>eklitzke</dc:creator><comments>https://news.ycombinator.com/item?id=45523506</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45523506</guid></item><item><title><![CDATA[New comment by eklitzke in "RIP pthread_cancel"]]></title><description><![CDATA[
<p>A few reasons, I think.<p>The first is that getaddrinfo is specified by POSIX, and the POSIX evolve very conservatively and at a glacial pace.<p>The second reason is that specifying a timeout breaks symmetry with a lot of other functions in Unix/C, both system calls and libc calls. For example, you can't specify a timeout when opening a file, reading from a file, or closing a file, which are all potentially blocking operations. There are ways to do these things in a non-blocking manner with timeouts using aio or io_uring, but those are already relatively complicated APIs for just using simple system calls, and getaddrinfo is much more complicated.<p>The last reason is that if you use the sockets APIs directly it's not that hard to write a non-blocking DNS resolver (c-ares is one example). The thing is though that if you write your own resolver you have to consider how to do caching, it won't work with NSS on Linux, etc. You can implement these things (systemd-resolved does it, and works with NSS) but they are a lot of work to do properly.</p>
]]></description><pubDate>Sat, 13 Sep 2025 21:56:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=45235651</link><dc:creator>eklitzke</dc:creator><comments>https://news.ycombinator.com/item?id=45235651</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45235651</guid></item><item><title><![CDATA[New comment by eklitzke in "%CPU utilization is a lie"]]></title><description><![CDATA[
<p>I agree. If you actually know what you're doing you can use perf and/or ftrace to get highly detailed processor metrics over short periods of time, and you can see the effects of things like CPU stalls from cache misses, CPU stalls from memory accesses, scheduler effects, and many other things. But most of these metrics are not very actionable anyway (the vast majority of people are not going to know what to do with their IPC or cache hit or branch hit numbers).<p>What most people care about is some combination of latency and utilization. As a very rough rule of thumb, for many workloads you can get up to about 80% CPU utilization before you start seeing serious impacts on workload latency. Beyond that you can increase utilization but you start seeing your workload latency suffer from all of the effects you mentioned.<p>To know how much latency is impacted by utilization you need to measure your specific workload. Also, how much you care about latency depends on what you're doing. In many cases people care much more about throughput than latency, so if that's the top metric then optimize for that. If you care about application latency as well as throughput then you need to measure both of those and decide what tradeoffs are acceptable.</p>
]]></description><pubDate>Wed, 03 Sep 2025 03:12:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=45111906</link><dc:creator>eklitzke</dc:creator><comments>https://news.ycombinator.com/item?id=45111906</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45111906</guid></item><item><title><![CDATA[New comment by eklitzke in "John Carmack's arguments against building a custom XR OS at Meta"]]></title><description><![CDATA[
<p>Writing drivers is easy, getting vendors to write *correct* drivers is difficult. At work right now we are working with a Chinese OEM with a custom Wifi board with a chipset with firmware and drivers supplied by the vendor. It's actually not a new wifi chipset, they've used it in other products for years without issues. In conditions that are difficult to reproduce sometimes the chipset gets "stuck" and basically stops responding or doing any wifi things. This appears to be a firmware problem because unloading and reloading the kernel module doesn't fix the issue. We've supplied loads of pcap dumps to the vendor, but they're kind of useless to the vendor because (a) pcap can only capture what the kernel sees, not what the wifi chipset sees, (b) it's infeasible for the wifi chipset to log all its internal state and whatnot, and (c) even if this was all possible trying to debug the driver just from looking at gigabytes of low level protocol dumps would be impossible.<p>Realistically for the OEM to debug the issue they're going to need a way to reliably repro which we don't have for them, so we're kind of stuck.<p>This type of problem generalizes to the development of drivers and firmware for many complex pieces of modern hardware.</p>
]]></description><pubDate>Fri, 29 Aug 2025 23:11:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=45070444</link><dc:creator>eklitzke</dc:creator><comments>https://news.ycombinator.com/item?id=45070444</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45070444</guid></item><item><title><![CDATA[New comment by eklitzke in "Physics of badminton's new killer spin serve"]]></title><description><![CDATA[
<p>From what I could tell from the article and the linked videos the innovation here is that it essentially lets you serve the shuttlecock while it's facing the wrong direction. Normally even if the shuttlecock has spin when it crosses the court it will move with the cork side forward, at least by the time it crosses the net. Hence I don't think this technique would be applicable to other sports that use a ball.</p>
]]></description><pubDate>Sun, 24 Aug 2025 02:56:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=45000922</link><dc:creator>eklitzke</dc:creator><comments>https://news.ycombinator.com/item?id=45000922</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45000922</guid></item><item><title><![CDATA[New comment by eklitzke in "Fuse is 95% cheaper and 10x faster than NFS"]]></title><description><![CDATA[
<p>Yeah if you were really trying to make things fast you'd have the compute and NFS server in the same rack connected this way. But you aren't going to get this from any cloud providers.<p>For read-only data (the original model is about serving file weights) you can also use iscsi. This is how packages/binaries are served to nearly all borg hosts at Google (most Borg hosts don't have any local disk whatsoever, when they need to run a given binary they mount the software image using iscsi and then I believe mlock nearly all of the elf sections).</p>
]]></description><pubDate>Wed, 13 Aug 2025 21:07:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=44893851</link><dc:creator>eklitzke</dc:creator><comments>https://news.ycombinator.com/item?id=44893851</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44893851</guid></item><item><title><![CDATA[New comment by eklitzke in "Fuse is 95% cheaper and 10x faster than NFS"]]></title><description><![CDATA[
<p>NFS can be super fast, in a past life I had to work a lot with a large distributed system of NetApp Filers (hundreds of filers located around the globe) and they have a lot of fancy logic for doing doing locale-aware caching and clustering.<p>That said, all of the open source NFS implementations are either missing this stuff or you'd have to implement it yourself which would be a lot of work. NetApp Filers are crazy expensive and really annoying to administer. I'm not really surprised that the cloud NFS solutions are all expensive and slow because truly *needing* NFS is a very niche thing (like do you really need `flock(2)` to work in a distributed way).</p>
]]></description><pubDate>Wed, 13 Aug 2025 20:19:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=44893335</link><dc:creator>eklitzke</dc:creator><comments>https://news.ycombinator.com/item?id=44893335</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44893335</guid></item><item><title><![CDATA[New comment by eklitzke in "HTTP/3 is everywhere but nowhere"]]></title><description><![CDATA[
<p>This is vastly oversimplifying the problem, the difference between IPv4 and IPv6 is not just the format of the address. Different protocols have different features, which is why the sockaddr_in and sockaddr_in6 types don't just differ in the address field. Plus the vast majority of network programs are using higher level abstractions, for example even in C or C++ a lot of people would be using a network library like libevent or asio to handle a lot of these details (especially if you want to write code that easily works with TLS).</p>
]]></description><pubDate>Tue, 18 Mar 2025 06:19:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=43396274</link><dc:creator>eklitzke</dc:creator><comments>https://news.ycombinator.com/item?id=43396274</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43396274</guid></item><item><title><![CDATA[Agenoria]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/jiuguangw/Agenoria">https://github.com/jiuguangw/Agenoria</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=42966260">https://news.ycombinator.com/item?id=42966260</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Thu, 06 Feb 2025 20:39:44 +0000</pubDate><link>https://github.com/jiuguangw/Agenoria</link><dc:creator>eklitzke</dc:creator><comments>https://news.ycombinator.com/item?id=42966260</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42966260</guid></item><item><title><![CDATA[New comment by eklitzke in "Borrow Checking, RC, GC, and Eleven Other Memory Safety Approaches"]]></title><description><![CDATA[
<p>I don't understand why they say that reference counting is "slow". Slow compared to what? Atomic increments/decrements to integers are one of the fastest operations you can do on modern x86 and ARM hardware, and except in pathological cases will pretty much always be faster than pointer chasing done in a traditional mark and sweep VMs.<p>This isn't to say reference counting is without problems (there are plenty of them, inability to collect cyclical references being the most well known), but I don't normally think of it as a slow technique, particularly on modern CPUs.</p>
]]></description><pubDate>Fri, 20 Dec 2024 00:13:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=42467121</link><dc:creator>eklitzke</dc:creator><comments>https://news.ycombinator.com/item?id=42467121</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42467121</guid></item><item><title><![CDATA[House committee approves bill requiring new cars to have AM radio]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.theverge.com/2024/9/18/24248137/am-radio-bill-house-energy-commerce-ev-interference">https://www.theverge.com/2024/9/18/24248137/am-radio-bill-house-energy-commerce-ev-interference</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=41596561">https://news.ycombinator.com/item?id=41596561</a></p>
<p>Points: 59</p>
<p># Comments: 53</p>
]]></description><pubDate>Thu, 19 Sep 2024 21:29:26 +0000</pubDate><link>https://www.theverge.com/2024/9/18/24248137/am-radio-bill-house-energy-commerce-ev-interference</link><dc:creator>eklitzke</dc:creator><comments>https://news.ycombinator.com/item?id=41596561</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41596561</guid></item><item><title><![CDATA[New comment by eklitzke in "Intel SGX Fuse Key0, a.k.a. Root Provisioning Key Was Extracted by Researchers"]]></title><description><![CDATA[
<p>Just to expand on this, since it wasn't originally clear to me from reading your post, the contact privacy feature is about using SGX enclaves for the purpose of populating your known contacts on Signal. When you log into Signal for the first time your phone locally has all of your known contacts, and the Signal app wants to know which of these contacts already have Signal accounts. The secure enclave is a mechanism where you publish your entire contact list from your phone to the Signal servers, then they can send back the subset of those contacts that actually have Signal accounts. The point of the enclave is that this is all done in a way where Signal can't see what contacts you sent them, nor can they determine which contacts were matched and sent back to you.</p>
]]></description><pubDate>Mon, 26 Aug 2024 22:13:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=41362766</link><dc:creator>eklitzke</dc:creator><comments>https://news.ycombinator.com/item?id=41362766</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41362766</guid></item><item><title><![CDATA[Yes, there are more driverless Waymos in S.F]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.sfchronicle.com/sf/article/s-f-waymo-robotaxis-19592112.php">https://www.sfchronicle.com/sf/article/s-f-waymo-robotaxis-19592112.php</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=41110972">https://news.ycombinator.com/item?id=41110972</a></p>
<p>Points: 29</p>
<p># Comments: 55</p>
]]></description><pubDate>Tue, 30 Jul 2024 16:28:43 +0000</pubDate><link>https://www.sfchronicle.com/sf/article/s-f-waymo-robotaxis-19592112.php</link><dc:creator>eklitzke</dc:creator><comments>https://news.ycombinator.com/item?id=41110972</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41110972</guid></item><item><title><![CDATA[ChromeOS to Migrate to Android-Based Tech Stack]]></title><description><![CDATA[
<p>Article URL: <a href="https://chromeos.dev/en/posts/building-a-faster-smarter-chromebook-experience-with-the-best-of-google">https://chromeos.dev/en/posts/building-a-faster-smarter-chromebook-experience-with-the-best-of-google</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=40662164">https://news.ycombinator.com/item?id=40662164</a></p>
<p>Points: 50</p>
<p># Comments: 9</p>
]]></description><pubDate>Wed, 12 Jun 2024 19:43:13 +0000</pubDate><link>https://chromeos.dev/en/posts/building-a-faster-smarter-chromebook-experience-with-the-best-of-google</link><dc:creator>eklitzke</dc:creator><comments>https://news.ycombinator.com/item?id=40662164</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40662164</guid></item></channel></rss>