<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: feffe</title><link>https://news.ycombinator.com/user?id=feffe</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Wed, 01 Jul 2026 00:20:23 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=feffe" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by feffe in "Qwen 3.6 27B is the sweet spot for local development"]]></title><description><![CDATA[
<p>I've never been able to fix the tool calling issues. Running unsloth versions with llama.cpp, constant issues. Have tried many forum fixes, including lots of fixed chat templates, to no avail. It's mostly the edit call that breaks, which often results in "let me just rewrite the whole file from context".</p>
]]></description><pubDate>Tue, 30 Jun 2026 10:50:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=48730837</link><dc:creator>feffe</dc:creator><comments>https://news.ycombinator.com/item?id=48730837</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48730837</guid></item><item><title><![CDATA[New comment by feffe in "Amiga Graphics Archive"]]></title><description><![CDATA[
<p>All ALU operations are also more expensive with 32 bit operands. So 16 bit data bus, 24 bit address bus. Slower arithmetic with 32 bit operands. I never though of it as a 32 bit CPU.</p>
]]></description><pubDate>Sat, 18 Apr 2026 19:36:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=47818854</link><dc:creator>feffe</dc:creator><comments>https://news.ycombinator.com/item?id=47818854</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47818854</guid></item><item><title><![CDATA[New comment by feffe in "Maybe comments should explain 'what' (2017)"]]></title><description><![CDATA[
<p>I'm a believer in restricting the scope of definitions as much as possible, and like programming languages that allows creating local bindings for creating another.<p>For example:<p><pre><code>    local
        val backupIntervalHours = 24
        val approxBackupDurationHours = 2
        val wiggleRoomHours = 2
    in
    val ageAlertThresholdHours = backupIntervalHours + approxBackupDurationHours + wiggleRoomHours
    end
</code></pre>
Then it's easier to document what components a constant is composed of using code without introducing unnecessary bindings in the scope of the relevant variable. Sure constants are just data, but the first questions that pops into my head when seeing something in unfamiliar code is "What is the purpose of this?", and the smaller the scope, the faster it can be discarded.</p>
]]></description><pubDate>Sun, 04 Jan 2026 17:23:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=46490057</link><dc:creator>feffe</dc:creator><comments>https://news.ycombinator.com/item?id=46490057</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46490057</guid></item><item><title><![CDATA[New comment by feffe in "Valve is about to win the console generation"]]></title><description><![CDATA[
<p>Steam on Linux works really well now. I sort of built my own steam machine a few months back with a framework desktop that now sits in my TV rack. Gaming on it is a really good experience. Had to buy a PS5 controller though because I could not get the XBOX controller to work over bluetooth which was a bit of a bummer. For me the new controller is most interesting as most games have XBOX controller support (with xbox button captions) and the steam controller adopts the button naming.</p>
]]></description><pubDate>Thu, 13 Nov 2025 04:43:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=45910732</link><dc:creator>feffe</dc:creator><comments>https://news.ycombinator.com/item?id=45910732</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45910732</guid></item><item><title><![CDATA[New comment by feffe in "In Defense of C++"]]></title><description><![CDATA[
<p>CMake has become the defacto standard in many ways, but I don't think it's that easy to deal with. There's often some custom support code in a project (just as with make files) that you need to learn the intricacies of, and also external 3pp modules that solve particular integration issues with building software that you also need to learn.<p>For me, base CMake is pretty easy by now, but I'd rather troubleshoot a makefile than some obscure 3pp CMake module that doesn't do what I want. Plain old makefiles are very hackable for better or worse [1]. It's easy to solve problems with make (in bespoke ways), and at the same time this is the big issue, causing lots of custom solutions of varying correctness.<p>[1]: Make is easy the same way C is easy.</p>
]]></description><pubDate>Thu, 18 Sep 2025 08:54:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=45287262</link><dc:creator>feffe</dc:creator><comments>https://news.ycombinator.com/item?id=45287262</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45287262</guid></item><item><title><![CDATA[New comment by feffe in "Malloc() and free() are a bad API (2022)"]]></title><description><![CDATA[
<p>I don't see the point of passing the size to a "free" function. I don't see how it could be used to speed up de-allocation. Additionally most usage would probably not want to keep the size around.<p>But I concur that realloc is mostly pointless. For code that want to grow or shrink, I think it's much better for it to know the data block size. I think there's very little opportunity to happen to have free memory next to your allocation that can be "grown into". At least for slab like allocators, so the growing room is minimal.<p>It's a bit difficult to unify all APIs because data will be needlessly passed around, when in most cases you don't care. Aligned allocation may also need a slightly different implementation anyway.<p>realloc and calloc are warts in my book...</p>
]]></description><pubDate>Wed, 17 Jul 2024 23:43:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=40991332</link><dc:creator>feffe</dc:creator><comments>https://news.ycombinator.com/item?id=40991332</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40991332</guid></item><item><title><![CDATA[New comment by feffe in "Study Finds 268% Higher Failure Rates for Agile Software Projects"]]></title><description><![CDATA[
<p>I actually did at one time, and it was fantastic. Then Agile was rolled out in that organization and ruined everything. Oh, the irony.</p>
]]></description><pubDate>Thu, 06 Jun 2024 10:46:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=40595867</link><dc:creator>feffe</dc:creator><comments>https://news.ycombinator.com/item?id=40595867</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40595867</guid></item><item><title><![CDATA[New comment by feffe in "What is the Demoscene? An interview"]]></title><description><![CDATA[
<p>Hmm, I was a hang around back in the day. Not one of the big boys. But I got to say some of the young kids that I hung around with then had more skills than many I've worked with in the industry since. Going on my 25th year as a "professional" SW developer.</p>
]]></description><pubDate>Thu, 19 Oct 2023 19:02:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=37947139</link><dc:creator>feffe</dc:creator><comments>https://news.ycombinator.com/item?id=37947139</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37947139</guid></item><item><title><![CDATA[New comment by feffe in "Taskfile: A Modern Alternative to Makefile"]]></title><description><![CDATA[
<p>- Multiple out file dependencies are also difficult to describe in make (GNU Make). There's a dedicated section for how to solve it in the manual[^1] but it's a crutch.<p>- Taking environment variables into account as a dependency (they may affect Makefile logic and also code generation by tools that interpret them).<p>[^1]: <a href="https://www.gnu.org/software/automake/manual/html_node/Multiple-Outputs.html" rel="nofollow noreferrer">https://www.gnu.org/software/automake/manual/html_node/Multi...</a></p>
]]></description><pubDate>Sun, 16 Jul 2023 08:17:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=36744720</link><dc:creator>feffe</dc:creator><comments>https://news.ycombinator.com/item?id=36744720</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36744720</guid></item><item><title><![CDATA[New comment by feffe in "Null References: The Billion Dollar Mistake (2009) [video]"]]></title><description><![CDATA[
<p>Perhaps this is similar to how they work in go?<p>"var x []int; fmt.Printf(`%p %d`, x, len(x))" outputs "0x0 0"<p>Indexing "x[0]" results in: "panic: runtime error: index out of range [0] with length 0"<p>They can also be appended to and then produce a valid slice.</p>
]]></description><pubDate>Tue, 28 Feb 2023 23:54:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=34976673</link><dc:creator>feffe</dc:creator><comments>https://news.ycombinator.com/item?id=34976673</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34976673</guid></item><item><title><![CDATA[New comment by feffe in "Huge pages are a good idea"]]></title><description><![CDATA[
<p>I think most applications don't have any dependency towards a specific page size. They use malloc (C) or new (C++) to allocate memory which does not expose this constraint.<p>You need to care if using mmap directly to map files or other resources into the virtual memory address space. The default page size can be queried using for example sysconf() on Linux. I guess something like garbage collectors in language run-times would also use mmap directly as it's most likely to side step malloc/new.<p>An application would normally not use madvise, unless also using mmap for some special purpose.<p>It depends on the CPU architecture how flexible it is with different page sizes.
For example, from what I recall, MIPS was extremely flexible and allowed any even power of two size for any TLB entry.<p>x86_64 only support three different page sizes, 4 kB, 2 MB and 1 GB and there are limitations wrt the number of TLB entries that can be used for the larger page sizes.<p>So, yea, there are bound to be regressions if just trying to switch to 2 MB as a default but I think it should be doable. Not all archs use 4 kB to begin with.</p>
]]></description><pubDate>Sun, 22 Jan 2023 13:58:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=34477433</link><dc:creator>feffe</dc:creator><comments>https://news.ycombinator.com/item?id=34477433</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34477433</guid></item><item><title><![CDATA[New comment by feffe in "AMD Announces 7950X3D, 7900X3D Upto 128MB L3 Cache"]]></title><description><![CDATA[
<p>Can the CPU cores in a CCD access the L3 cache of another CCD with higher latency? If so the CCD without extra cache may still get a performance boost.<p>I know there has been such designs in the past but I don't know how it works in the Ryzen CPUs.</p>
]]></description><pubDate>Thu, 05 Jan 2023 21:51:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=34267297</link><dc:creator>feffe</dc:creator><comments>https://news.ycombinator.com/item?id=34267297</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34267297</guid></item><item><title><![CDATA[New comment by feffe in "JPEG XL support has officially been removed from Chromium"]]></title><description><![CDATA[
<p>There are many contradicting examples:<p>The original JPEG standard is an ISO standard (ISO/IEC 10918) with payed access.<p>MP3 is also an ISO standard (ISO/IEC 13818-3). Perhaps not as relevant today but was once used by basically everyone.<p>Access to the standard is only relevant to the implementer.
It's of no consequence to users of a piece of software.</p>
]]></description><pubDate>Sun, 11 Dec 2022 11:38:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=33942341</link><dc:creator>feffe</dc:creator><comments>https://news.ycombinator.com/item?id=33942341</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33942341</guid></item><item><title><![CDATA[New comment by feffe in "Rust is actually portable"]]></title><description><![CDATA[
<p>Nitpicking on terminology. Portable used to mean that software can run on another platform with minimal modifications. Typically by relying on abstraction layers that then has multiple implementations. It's cool that a single executable can run on both Windows and some Unixes but that's something else than what portable used to mean.<p>portable = able to port</p>
]]></description><pubDate>Thu, 28 Jul 2022 10:32:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=32262626</link><dc:creator>feffe</dc:creator><comments>https://news.ycombinator.com/item?id=32262626</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=32262626</guid></item><item><title><![CDATA[New comment by feffe in "Log4j: The pain just keeps going"]]></title><description><![CDATA[
<p>I think a mindset that could work is to accept software as done. This is hard but for foundational stuff it could work well. Only fix bugs in such software. Try to set a scope what the software should do, build it, then do maintenance on it. Supersede it entirely to add new functionality.<p>That's my armchair take on it.</p>
]]></description><pubDate>Wed, 20 Jul 2022 17:16:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=32168973</link><dc:creator>feffe</dc:creator><comments>https://news.ycombinator.com/item?id=32168973</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=32168973</guid></item><item><title><![CDATA[New comment by feffe in "What’s New in Go 1.19?"]]></title><description><![CDATA[
<p>So Go has two GC knobs now. I think it still plays to the ethos of minimalism and restraint.</p>
]]></description><pubDate>Sat, 09 Jul 2022 20:09:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=32038814</link><dc:creator>feffe</dc:creator><comments>https://news.ycombinator.com/item?id=32038814</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=32038814</guid></item><item><title><![CDATA[New comment by feffe in "Logging C Functions"]]></title><description><![CDATA[
<p>ASAN is pretty great with these cases as well. Spent much time looking for the needle in the haystack before ASAN came along.</p>
]]></description><pubDate>Thu, 26 May 2022 18:49:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=31522030</link><dc:creator>feffe</dc:creator><comments>https://news.ycombinator.com/item?id=31522030</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=31522030</guid></item><item><title><![CDATA[New comment by feffe in "Why We Switched from Python to Go (2021)"]]></title><description><![CDATA[
<p>Go 1.0 was released in 2012, it spent 3 years in alpha/beta phase.<p><a href="https://go.dev/blog/go1" rel="nofollow">https://go.dev/blog/go1</a></p>
]]></description><pubDate>Thu, 26 May 2022 18:43:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=31521975</link><dc:creator>feffe</dc:creator><comments>https://news.ycombinator.com/item?id=31521975</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=31521975</guid></item><item><title><![CDATA[New comment by feffe in "Logging C Functions"]]></title><description><![CDATA[
<p>In my experience debuggers handles this fine. Some archs also has a link register (jump and link) which may help finding back. This test is from x86-64 Linux.<p><pre><code>  /*
  gcc -g -Wall -o x x.c
  gdb ./x
  (gdb) r
  (gdb) bt
  #0  0x0000000000000000 in ?? ()
  #1  0x0000555555554617 in foo () at x.c:6
  #2  0x0000555555554628 in main () at x.c:10
  (gdb) f 1
  #1  0x0000555555554617 in foo () at x.c:6
  6           bar();
  (gdb) p bar
  $1 = (void (*)(void)) 0x0
  */
  
  #include <stddef.h>
  
  void (*bar)(void) = NULL;
  
  void foo() {
      bar();
  }
  
  int main() {
      foo();
  }</code></pre></p>
]]></description><pubDate>Fri, 20 May 2022 10:52:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=31445653</link><dc:creator>feffe</dc:creator><comments>https://news.ycombinator.com/item?id=31445653</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=31445653</guid></item><item><title><![CDATA[New comment by feffe in "My real life use-case for generics in Go: API for client-side pagination"]]></title><description><![CDATA[
<p>Yes, you are correct. I had not thought about it deeply. There are restrictions for what can be used as a map keys according to some built-in equality rules. And of course the types used as map keys and values are concrete types so you can't pass a map to generic functions pre generics.<p>But was the built-in append function generic pre generics? I think it is?</p>
]]></description><pubDate>Thu, 19 May 2022 14:41:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=31435283</link><dc:creator>feffe</dc:creator><comments>https://news.ycombinator.com/item?id=31435283</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=31435283</guid></item></channel></rss>