<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: Roxxik</title><link>https://news.ycombinator.com/user?id=Roxxik</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Mon, 13 Jul 2026 01:52:30 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=Roxxik" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by Roxxik in "Show HN: Getting GLM 5.2 running on my slow computer"]]></title><description><![CDATA[
<p>My recommendation if you are willing to push it further is to keep KV and always needed weights pinned in memory, so they do not get evicted. This is likely already the case, as they are touched on each token. mmap is slow on evicted pages, as it does not load the whole tensor, but only the touched pages. And it does this through a page fault, thus blocking your code. So it loads a page hands control back to you and the code goes on to touch another evicted page, repeating the loop. Now on an HDD that is not a big problem (yes reads can be coalesced, but a HDD is fundamentally serial in reading) while an SSD can overlay reads better and it is good to keep a few reads in flight at all times to keep its queue fed.<p>One option is locking the pages. But for that size you need extra privileges.<p>I experimented with some options. For example: one problem with io_uring is that it still reads to page cache so your reads gets copied in memory after they landed. Now if you pass O_DIRECT that does not happen, but it has its own can of worms.<p>For full transparency: I had opus write the io_uring layer into llama.cpp for me. And it yielded something slightly short of a 2x tok/s speedup vs simple mmaping. Also I noticed that disabling the warmup and initial test dramatically increases startup time.<p>The medusa paper looks interesting. My work was a few months ago, multi-token decoding was not a thing then.</p>
]]></description><pubDate>Sat, 11 Jul 2026 20:04:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=48875355</link><dc:creator>Roxxik</dc:creator><comments>https://news.ycombinator.com/item?id=48875355</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48875355</guid></item><item><title><![CDATA[New comment by Roxxik in "Show HN: Getting GLM 5.2 running on my slow computer"]]></title><description><![CDATA[
<p>Not sure if mmapping is the right way. In my own tests I noticed that simple mmapping will produce many small reads and not keep the SSD queue saturated. So if RAM is large enough to cache most experts, that is a rounding error. But if the base weigths without experts fill more than half or RAM and you basically need to load in a few experts for each layer of each token, the latency gets important and mmap sadly blocks until the data is loaded. You can't do concurrent requests for multiple experts with mmap (but you know all the ones you need right after the router ran). And even going one step further, depending on the arch / the tensors you need, you could eagerly load some, start computing with them and load the rest of the expert tensors in the background (extra thread or async io) parallel to the compute. This is not really possible with mmap, even with madvise.<p>One further step is predicting which experts will be needed next token / next layer. LRU does this okish. But a learned projection from the hidden state can do better. Or even a simple correlation from past activated experts. Expert usage is heavily skewed.</p>
]]></description><pubDate>Fri, 10 Jul 2026 09:59:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=48857911</link><dc:creator>Roxxik</dc:creator><comments>https://news.ycombinator.com/item?id=48857911</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48857911</guid></item><item><title><![CDATA[New comment by Roxxik in "Show HN: Getting GLM 5.2 running on my slow computer"]]></title><description><![CDATA[
<p>I have prototyped something similar with ollama some months ago.<p>Do you mmap or issue reads on demand? Also do you use io_uring to interleave compute with io or do you spawn extra threads?<p>I also tried predicting which experts get reused and I managed to beat a simple LRU very slightly.<p>EDIT: That was on Kimi 2.5 but even worse quant than 4bit. IIRC it was 2.6 or so</p>
]]></description><pubDate>Fri, 10 Jul 2026 08:06:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=48857125</link><dc:creator>Roxxik</dc:creator><comments>https://news.ycombinator.com/item?id=48857125</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48857125</guid></item><item><title><![CDATA[New comment by Roxxik in "Flash-MoE: Running a 397B Parameter Model on a Laptop"]]></title><description><![CDATA[
<p>IO is very bursty in these setups. When the router results are in you can start loading experts from SSD. In this brief moment the SSD is saturated.<p>Outside of that the SSD is idling.<p>Table 3 shows for K=4 experts an IO  of 943 MB/Tok at 3.15 Tok/s giving an average IO of 2970 MB/s far below what the SSD could do.<p>I'm not sure, but not all expert weights are used immediately. Maybe they could do async reads for the down tensors parallelizing compute with IO.<p>Not sure if this works on Mac, I only tested my larger than RAM setup on Linux with io_uring O_DIRECT reads and I saw that about 20% of total reads do finish while my fused upgate matmul is already running.<p>Edit: Typos</p>
]]></description><pubDate>Sun, 22 Mar 2026 12:53:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=47477004</link><dc:creator>Roxxik</dc:creator><comments>https://news.ycombinator.com/item?id=47477004</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47477004</guid></item><item><title><![CDATA[New comment by Roxxik in "Flash-MoE: Running a 397B Parameter Model on a Laptop"]]></title><description><![CDATA[
<p>Does an SSD meaningfully degrade by read only workloads?</p>
]]></description><pubDate>Sun, 22 Mar 2026 12:25:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=47476800</link><dc:creator>Roxxik</dc:creator><comments>https://news.ycombinator.com/item?id=47476800</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47476800</guid></item><item><title><![CDATA[New comment by Roxxik in "How I write software with LLMs"]]></title><description><![CDATA[
<p>Not only you understanding the how, but you not understanding the goal.<p>I often use AI successfully, but in a few cases I had, it was bad. That was when I didn't even know the end goal and regularly switched the fundamental assumptions that the LLM tried to build up.<p>One case was a simulation where I wanted to see some specific property in the convergence behavior, but I had no idea how it would get there in the dynamics of the simulation or how it should behave when perturbed.<p>So the LLM tried many fundamentally different approaches and when I had something that specifically did not work it immediately switched approaches.<p>Next time I get to work on this (toy) problem I will let it implement some of them, fully parametrize them and let me have a go with it. There is a concrete goal and I can play around myself to see if my specific convergence criterium is even possible.</p>
]]></description><pubDate>Mon, 16 Mar 2026 10:42:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=47397299</link><dc:creator>Roxxik</dc:creator><comments>https://news.ycombinator.com/item?id=47397299</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47397299</guid></item><item><title><![CDATA[New comment by Roxxik in "The Weird Concept of Branchless Programming"]]></title><description><![CDATA[
<p>I also tried myself, on different array sizes, with more iterations. The branchy version is not strictly worse.<p><a href="https://gist.github.com/Stefan-JLU/3925c6a73836ce841860b55c84909d98" rel="nofollow">https://gist.github.com/Stefan-JLU/3925c6a73836ce841860b55c8...</a></p>
]]></description><pubDate>Sun, 28 Sep 2025 21:36:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=45408287</link><dc:creator>Roxxik</dc:creator><comments>https://news.ycombinator.com/item?id=45408287</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45408287</guid></item><item><title><![CDATA[New comment by Roxxik in "Catalytic computing taps the full power of a full hard drive"]]></title><description><![CDATA[
<p>They are explicitly not assuming anything about the content of the auxiliary space (full hard drive).<p>So the data might be incompressible and thus compressing it and restoring it afterwards would not work.<p>Edit:
From the paper:<p>> One natural approach is to compress the data on the hard
disk as much as possible, use the freed-up space for your computation and finally uncompress the data, restoring it to its original setting. But suppose that the data is not compressible. In other words, your scheme has to always work no matter the contents of the hard drive. Can you still
make good use of this additional space?</p>
]]></description><pubDate>Tue, 18 Feb 2025 20:43:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=43094839</link><dc:creator>Roxxik</dc:creator><comments>https://news.ycombinator.com/item?id=43094839</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43094839</guid></item><item><title><![CDATA[New comment by Roxxik in "Catalytic computing taps the full power of a full hard drive"]]></title><description><![CDATA[
<p>So the trick is to do the computation forwards, but take care to only use reversible operations, store the result outside of the auxiliary "full" memory and then run the computation backwards, reversing all instructions and thus undoing their effect on the auxiliary space.<p>Which is called catalytic, because it wouldn't be able to do the computation in the amount of clean space it has, but can do it by temporarily mutating auxiliary space and then restoring it.<p>What I haven't yet figured out is how to do reversible instructions on auxiliary space. You can mutate a value depending on your input, but how do you use that value, since you can't assume anything about the contents of the auxiliary space and just overwriting with a constant (e.g. 0) is not reversible.<p>Maybe there is some xor like trick, where you can store two values in the same space and you can restore them, as long as you know one of the values.<p>Edit:
After delving into the paper linked in another comment, which is rather mathy (or computer sciency in the original meaning of the phrase), I'd like to have a simple example of a program that can not run in it's amount of free space and actually needs to utilize the auxiliary space.</p>
]]></description><pubDate>Tue, 18 Feb 2025 19:46:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=43094135</link><dc:creator>Roxxik</dc:creator><comments>https://news.ycombinator.com/item?id=43094135</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43094135</guid></item><item><title><![CDATA[New comment by Roxxik in "The Power of Small Brain Networks"]]></title><description><![CDATA[
<p>I'm not sure that the analogy stretches so far.<p>What even is an artificial neuron in an Artificial Neural Network executed on "normal" (non-neuromorphic) hardware? It is a set of weights and an activation function.<p>And you evaluate all neurons of a layer at the same time by multiplying their weights in a matrix by the incoming activations in a vector. Then you apply the activation function to get the outgoing activations.<p>Viewing this from a hardware perspective, there are no individual neurons, just matrix multiplications followed by activation functions.<p>I'm going out of my area of expertise here, I just started studying bioinformatics, but neurological neurons can't simply hold an activation because they communicate by depolarising their membrane. So they have to be spiking by their very nature of being a cell.<p>This depolarization costs a lot of energy, so they are incentived to do more with less activations.<p>Computer hardware doesn't have a membrane and thus can hold activations, it doesn't need spiking and these activations cost very little on their own.<p>So I'm not sure what we stand to gain from more complicated artificial neurons.<p>On the other hand, artificial neutral networks do need a lot of memory bandwidth to load in these weights. So an approach that better integrates storage and execution might help. If that is memristor tech or something else.</p>
]]></description><pubDate>Mon, 25 Nov 2024 16:52:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=42237791</link><dc:creator>Roxxik</dc:creator><comments>https://news.ycombinator.com/item?id=42237791</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42237791</guid></item><item><title><![CDATA[New comment by Roxxik in "Ask HN: What's your seniority, location and notice period?"]]></title><description><![CDATA[
<p>I think it is a little unusual, but nothing unheard of.<p>I started as a junior IT Consultant in Hamburg, Germany with a 3 month notice, but could only quit every half year. So for quitting at the end of june I had to give notice in march, and then the next opportunity was september for quitting at the end of december.<p>But since I'm going back to university now, we made a "Aufhebungsvertrag" so that I quit at the end of september. You have no right to it, but I have a good relation to my employer so they accepted.<p>EDITED for clarity</p>
]]></description><pubDate>Tue, 12 Sep 2023 12:18:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=37479944</link><dc:creator>Roxxik</dc:creator><comments>https://news.ycombinator.com/item?id=37479944</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37479944</guid></item><item><title><![CDATA[New comment by Roxxik in "So you want to be a wizard"]]></title><description><![CDATA[
<p>This looks like german to me, but i haven't ever seen these words used together. I thought it might be some old german and googled it, but searching "bewunderungeifersucht" just yields your comment and "bewunderungseifersucht", which i deemed more likely, yields nothing.<p>Disclaimer: I'm from germany</p>
]]></description><pubDate>Sat, 09 Feb 2019 04:15:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=19120686</link><dc:creator>Roxxik</dc:creator><comments>https://news.ycombinator.com/item?id=19120686</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=19120686</guid></item><item><title><![CDATA[New comment by Roxxik in "LIDL cancels SAP introduction after spending 500M Euro"]]></title><description><![CDATA[
<p>minimally corrected google translation of the (short) article:<p>Lidl is wasting 500 million euros<p>Because the introduction of a new data system did not work out, Deutsche Post already had to record a high loss several years ago. The same thing happened to Lidl. After seven years and costs of more than half a billion euros, the planned system is still not running smoothly. Now the discounter has pulled the ripcord.<p>Lidl has been on an expansion course for years. The discount store from Neckarsulm now has branches in almost every country in Europe and is now also growing in the USA. A new merchandise management system was needed to easily keep track of the increasingly complex business processes and to control branches, purchasing and logistics. Therefor the decision in 2011.<p>System is not good for high-turnover countries<p>Software from the Walldorf-based software company SAP was to be adapted to the needs of Lidl. So far, however, the new system has only been introduced in some small agencies in Austria, Northern Ireland and the USA. It has been shown that the SAP version developed by over one hundred IT specialists is not suitable for high-turnover countries. Now Lidl has stopped the project. In one of the newspaper "Heilbronner Stimme" present letter to the coworkers it is said that the actual "goals" are "not reachable with justifiable effort". So far, according to expert opinion, the project has consumed more than half a billion euros - for expensive IT consultants and SAP licenses, for example. Now Lidl wants to further develop its own inventory management system.</p>
]]></description><pubDate>Mon, 16 Jul 2018 14:14:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=17541367</link><dc:creator>Roxxik</dc:creator><comments>https://news.ycombinator.com/item?id=17541367</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17541367</guid></item><item><title><![CDATA[The Return of Coppersmith’s Attack [pdf]]]></title><description><![CDATA[
<p>Article URL: <a href="https://acmccs.github.io/papers/p1631-nemecA.pdf">https://acmccs.github.io/papers/p1631-nemecA.pdf</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=15612047">https://news.ycombinator.com/item?id=15612047</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Thu, 02 Nov 2017 16:49:31 +0000</pubDate><link>https://acmccs.github.io/papers/p1631-nemecA.pdf</link><dc:creator>Roxxik</dc:creator><comments>https://news.ycombinator.com/item?id=15612047</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=15612047</guid></item><item><title><![CDATA[New comment by Roxxik in "FreeBSD 11.1 released"]]></title><description><![CDATA[
<p>had a kernel panic once, i think it was some 9.x, when unplugging a mounted usb stick (oops)</p>
]]></description><pubDate>Wed, 26 Jul 2017 06:30:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=14854035</link><dc:creator>Roxxik</dc:creator><comments>https://news.ycombinator.com/item?id=14854035</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=14854035</guid></item><item><title><![CDATA[New comment by Roxxik in "Ethereum from scratch – Part 1: Ping"]]></title><description><![CDATA[
<p>Just started to copycat your code to rust, not yet finished, continuing tomorrow<p><a href="https://github.com/Roxxik/ping_ether/blob/master/src/main.rs" rel="nofollow">https://github.com/Roxxik/ping_ether/blob/master/src/main.rs</a></p>
]]></description><pubDate>Thu, 20 Jul 2017 22:19:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=14816755</link><dc:creator>Roxxik</dc:creator><comments>https://news.ycombinator.com/item?id=14816755</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=14816755</guid></item><item><title><![CDATA[New comment by Roxxik in "Ethereum from scratch – Part 1: Ping"]]></title><description><![CDATA[
<p>documentation says it all:<p>"bytes address; // BE encoded 4-byte or 16-byte address (size determines ipv4 vs ipv6)"[0]<p>[0]: <a href="https://github.com/ethereum/devp2p/blob/master/rlpx.md" rel="nofollow">https://github.com/ethereum/devp2p/blob/master/rlpx.md</a></p>
]]></description><pubDate>Thu, 20 Jul 2017 21:26:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=14816432</link><dc:creator>Roxxik</dc:creator><comments>https://news.ycombinator.com/item?id=14816432</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=14816432</guid></item><item><title><![CDATA[New comment by Roxxik in "Ethereum from scratch – Part 1: Ping"]]></title><description><![CDATA[
<p>Just today I started to look into RLPx to do some basic network discovery, so your guide is quite nice to have as a reference. But I had some difficulties getting started, because the RLPx spec was not simple to find (ethereum wiki -> devp2p -> RLPx) and is quite terse. I myself wasn't able to decode the packet structure.<p>Looking into ethereum related stuff I often get the feeling that one already needs to know half of ethereum quite decent to learn something new, which makes it hard to even get started.<p>Reading your guide (am not finished yet) gives me a better picture of the things I actually need to do, to start discovering some nodes, so I'm really thankful for that and hope for more beginner targeted ethereum content.</p>
]]></description><pubDate>Thu, 20 Jul 2017 21:13:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=14816350</link><dc:creator>Roxxik</dc:creator><comments>https://news.ycombinator.com/item?id=14816350</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=14816350</guid></item><item><title><![CDATA[New comment by Roxxik in "DTrace for Linux 2016"]]></title><description><![CDATA[
<p>It shouldn't be that difficult to write some simple compiler to translate a scripty language that looks like awk to BPF-Assembly (or C and stuff that into LLVM). I might look into this stuff for my Bachelor Thesis ;)</p>
]]></description><pubDate>Thu, 27 Oct 2016 18:58:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=12808422</link><dc:creator>Roxxik</dc:creator><comments>https://news.ycombinator.com/item?id=12808422</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=12808422</guid></item><item><title><![CDATA[Modern Functional Programming: The Onion Architecture]]></title><description><![CDATA[
<p>Article URL: <a href="http://degoes.net/articles/modern-fp-part-2">http://degoes.net/articles/modern-fp-part-2</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=12604767">https://news.ycombinator.com/item?id=12604767</a></p>
<p>Points: 283</p>
<p># Comments: 95</p>
]]></description><pubDate>Thu, 29 Sep 2016 12:38:18 +0000</pubDate><link>http://degoes.net/articles/modern-fp-part-2</link><dc:creator>Roxxik</dc:creator><comments>https://news.ycombinator.com/item?id=12604767</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=12604767</guid></item></channel></rss>