<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: max_k</title><link>https://news.ycombinator.com/user?id=max_k</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sat, 02 May 2026 08:57:14 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=max_k" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by max_k in "FastCGI: 30 years old and still the better protocol for reverse proxies"]]></title><description><![CDATA[
<p>Thanks, but I feel we're all just feeding this one troll. Don't bother replying anymore, it's pointless.</p>
]]></description><pubDate>Thu, 30 Apr 2026 21:36:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=47968531</link><dc:creator>max_k</dc:creator><comments>https://news.ycombinator.com/item?id=47968531</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47968531</guid></item><item><title><![CDATA[New comment by max_k in "FastCGI: 30 years old and still the better protocol for reverse proxies"]]></title><description><![CDATA[
<p>> imply that HTTP and FastCGI are interchangeable and they are not.<p>But they are interchangeable!<p>FastCGI and HTTP/1.1 are indeed on the same level. Both are transport protocols for HTTP requests.<p>It would be technically possible to implement FastCGI as alternate transport protocols in browsers and web servers, just like HTTP/2 (SPDY) and HTTP/3 (QUIC) are alternate transport protocols for HTTP requests.<p>(This is not what the article and my comment are about, as others already pointed out.)</p>
]]></description><pubDate>Thu, 30 Apr 2026 06:08:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=47958774</link><dc:creator>max_k</dc:creator><comments>https://news.ycombinator.com/item?id=47958774</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47958774</guid></item><item><title><![CDATA[New comment by max_k in "FastCGI: 30 years old and still the better protocol for reverse proxies"]]></title><description><![CDATA[
<p>FastCGI has "parameters" and HTTP headers are special parameters starting with "HTTP_" (mimicking CGI's environment variables). All parameters not starting with "HTTP_" can be trusted because only the web server (= FastCGI client) can construct them.</p>
]]></description><pubDate>Thu, 30 Apr 2026 05:42:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=47958606</link><dc:creator>max_k</dc:creator><comments>https://news.ycombinator.com/item?id=47958606</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47958606</guid></item><item><title><![CDATA[New comment by max_k in "FastCGI: 30 years old and still the better protocol for reverse proxies"]]></title><description><![CDATA[
<p>I agree with the article, FastCGI is better than HTTP for these things.<p>Though I'd like to make another protocol known: Web Application Socket (WAS). I designed it 16 years ago at my dayjob because I thought FastCGI still wasn't good enough.<p>Instead of packing bulk data inside frames on the main socket, WAS has a control socket plus two pipes (raw request+response body). Both the WAS application and the web server can use splice() to operate on a pipe, for example. No framing needed. Also, requests are cancellable and the three file descriptors can always be recovered.<p>Over the years, we used WAS for many of our internal applications, and for our web hosting environment, I even wrote a PHP SAPI for WAS. Quite a large number of web sites operate with WAS internally.<p>It's all open source:<p>- library: <a href="https://github.com/CM4all/libwas" rel="nofollow">https://github.com/CM4all/libwas</a>
- documentation: <a href="https://libwas.readthedocs.io/en/latest/" rel="nofollow">https://libwas.readthedocs.io/en/latest/</a>
- non-blocking library: <a href="https://github.com/CM4all/libcommon/tree/master/src/was/async" rel="nofollow">https://github.com/CM4all/libcommon/tree/master/src/was/asyn...</a>
- our web server: <a href="https://github.com/CM4all/beng-proxy" rel="nofollow">https://github.com/CM4all/beng-proxy</a>
- WebDAV: <a href="https://github.com/CM4all/davos" rel="nofollow">https://github.com/CM4all/davos</a>
- PHP fork with WAS SAPI: <a href="https://github.com/CM4all/php-src" rel="nofollow">https://github.com/CM4all/php-src</a></p>
]]></description><pubDate>Wed, 29 Apr 2026 18:44:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=47952605</link><dc:creator>max_k</dc:creator><comments>https://news.ycombinator.com/item?id=47952605</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47952605</guid></item><item><title><![CDATA[New comment by max_k in "Stacked Diffs with git rebase —onto"]]></title><description><![CDATA[
<p>Oh, there's another stgit user! ^5
Coming from darcs, I couldn't use git until stgit came along, and today, it's one of those few tools I can't imagine working without. Nothing else matches my way of code hacking.
So often, I watch people making a big mess with git, and I always recommend stgit to them, so they can post proper and reviewable branches for merging. But in all these years, I could never convince anybody.</p>
]]></description><pubDate>Fri, 05 Dec 2025 14:21:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=46161628</link><dc:creator>max_k</dc:creator><comments>https://news.ycombinator.com/item?id=46161628</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46161628</guid></item><item><title><![CDATA[New comment by max_k in "Writing C++ in 2025"]]></title><description><![CDATA[
<p>Yes, "it’s just the linter being noisy".</p>
]]></description><pubDate>Wed, 21 May 2025 14:45:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=44052043</link><dc:creator>max_k</dc:creator><comments>https://news.ycombinator.com/item?id=44052043</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44052043</guid></item><item><title><![CDATA[New comment by max_k in "Aligning Automattic's Sponsored Contributions to WordPress"]]></title><description><![CDATA[
<p>> Otherwise, the very first commit should be removing all the personally identifiable information and other telemetry sent back to Matt's personal website<p>This is one of the things I removed in our WordPress fork. I found it horrifying to learn that an open source software does such a user-hostile thing, and wondered why nobody but me objects.</p>
]]></description><pubDate>Sat, 11 Jan 2025 06:35:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=42663801</link><dc:creator>max_k</dc:creator><comments>https://news.ycombinator.com/item?id=42663801</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42663801</guid></item><item><title><![CDATA[New comment by max_k in "Ask HN: What is your go to performance optimization?"]]></title><description><![CDATA[
<p>Related: do only what is necessary.
This works on so many levels and is my magic trick to make software faster.<p>It's a pity computers are so fast and have so much memory that people can get away with not caring about minimalism.</p>
]]></description><pubDate>Thu, 25 Jul 2024 15:03:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=41069519</link><dc:creator>max_k</dc:creator><comments>https://news.ycombinator.com/item?id=41069519</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41069519</guid></item><item><title><![CDATA[New comment by max_k in "GNU Stow needs a co-maintainer"]]></title><description><![CDATA[
<p>Me too! I've been using it for 20 or so years, and it's one of those pieces I didn't know it was still developed or what features were added, because the feature set from 20 years ago is still enough for me. IOW: maybe it doesn't need a maintainer at all.</p>
]]></description><pubDate>Mon, 08 Apr 2024 22:30:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=39974403</link><dc:creator>max_k</dc:creator><comments>https://news.ycombinator.com/item?id=39974403</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39974403</guid></item><item><title><![CDATA[New comment by max_k in "Shattered Pixel Dungeon is an open-source traditional roguelike dungeon crawler"]]></title><description><![CDATA[
<p>Why does the Android app require access to my location? I wouldn't expect open source apps to spy on me.</p>
]]></description><pubDate>Thu, 21 Mar 2024 13:49:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=39778477</link><dc:creator>max_k</dc:creator><comments>https://news.ycombinator.com/item?id=39778477</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39778477</guid></item><item><title><![CDATA[New comment by max_k in "My favourite animation trick: exponential smoothing (2023)"]]></title><description><![CDATA[
<p>> that's not the point of the article.<p>Of course not. The post you're replying to explicitly said the discussion was off-topic. That means it's not discussing the point of the article.<p>> In an actual UI, you will have labels or indicators telling you what the toggle means and what the options are<p>If it only were that way, we wouldn't complain. But it's not.<p>> checkbox without labels is equally bad UX<p>Of course, I agree. But nobody asked for that.<p>Your post ignores the things that were said and replies to things that were not said.</p>
]]></description><pubDate>Fri, 08 Mar 2024 08:01:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=39638908</link><dc:creator>max_k</dc:creator><comments>https://news.ycombinator.com/item?id=39638908</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39638908</guid></item><item><title><![CDATA[New comment by max_k in "My favourite animation trick: exponential smoothing (2023)"]]></title><description><![CDATA[
<p>I agree with that; animations can be OK, but when I have a configuration setting, I usually disable them because input latency drives me crazy.<p>My post replied to "checkboxes vs UI toggles", and replying to that aspect was my main point. That's slightly off-topic, of course. It has to do with animations only because checkboxes wouldn't really benefit from animation, whereas toggles are an obscure visual representation for the same control, and adding animation is a feeble attempt to make it somewhat less obscure, even though it doesn't even try to address the main problem: what does toggle "left" and "right" really mean?<p>I believe checkbox not benefting from animation is a good thing: it's so clear and obvious that you don't need to animate it.</p>
]]></description><pubDate>Fri, 08 Mar 2024 07:27:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=39638694</link><dc:creator>max_k</dc:creator><comments>https://news.ycombinator.com/item?id=39638694</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39638694</guid></item><item><title><![CDATA[New comment by max_k in "My favourite animation trick: exponential smoothing (2023)"]]></title><description><![CDATA[
<p>Back in the days, you had a UI toolkit, and everybody would use those native controls; they looked and felt the same in all application, and you had a central place where you could customize the look. Now every application/website has customized controls for everything; everything looks and works differently.
(And don't even get me started with websites implementing their own scrollbars with JavaScript. Uh!)<p>Custom list control: do Home/End buttons work? How to select multiple items, does Shift-Cursorkeys work? Does Ctrl-Click work? Of course not.<p>Custom text control: does Ctrl-Left/Right for word jumping work? Does Ctrl-Up/Down for paragraph jumping work? Can I select everything with Ctrl-A or does it select the whole website? Can I select everything from cursor until the end with Ctrl-Shift-End work? Does Copy/Paste work at all?
(I have never figured out why Copy/Paste in Teams simply doesn't work. Apparently 
 I'm the only one with this problem.)<p>Custom dropdown control: does Alt-Down work? Can I scroll the list with the usual keys?<p>If (web) developers would just use standard controls, everything would work the same, and they wouldn't have to reimplement all the basic things from scratch (or not at all). Web devs could write forms that work without megabytes of JavaScript.<p>Hamburger menus. Those horrible things didn't need to exist even in old times with small monitors and 640x480 (or less) - but now they exist everywhere on my 32" 4K monitor for no reason.</p>
]]></description><pubDate>Fri, 08 Mar 2024 07:16:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=39638642</link><dc:creator>max_k</dc:creator><comments>https://news.ycombinator.com/item?id=39638642</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39638642</guid></item><item><title><![CDATA[New comment by max_k in "My favourite animation trick: exponential smoothing (2023)"]]></title><description><![CDATA[
<p>> I just don't like the visual polish more than I like the clarity and responsiveness of the old UI elements.<p>Agree, that sums my opinion well.<p>And much software doesn't even look like they preferred eye candy over clarity; it rather looks like they forgot about clarity completely.</p>
]]></description><pubDate>Fri, 08 Mar 2024 07:07:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=39638584</link><dc:creator>max_k</dc:creator><comments>https://news.ycombinator.com/item?id=39638584</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39638584</guid></item><item><title><![CDATA[New comment by max_k in "My favourite animation trick: exponential smoothing (2023)"]]></title><description><![CDATA[
<p>Me too, agree with you and GP. And I can't keep wondering why this opinion is so unpopular. Today's UIs are bloated with unnecessary animations (which adds latency). But worse than animations is that UIs are horribly inconsistent; took me a while to figure out those toggles should be clicked, not dragged; or: what is even clickable, how do I scroll, ...? I could go on forever, and probably so can you.<p>Why do only old nerds complain about this, when today's UIs are so "easy" that every toddler can use the smartphone? Are we just living in the past, getting old; are we the problem, why is our opinion unpopular?</p>
]]></description><pubDate>Fri, 08 Mar 2024 05:11:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=39637993</link><dc:creator>max_k</dc:creator><comments>https://news.ycombinator.com/item?id=39637993</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39637993</guid></item><item><title><![CDATA[New comment by max_k in "C_std: Implementation of C++ standard libraries in C"]]></title><description><![CDATA[
<p>> The UNIX model won over object approaches.<p>That's funny interpretation, because what is this mysterious "UNIX model" and what does it have to do with implementation language?<p>Also, C++ used to be "C with classes", but has outgrown this single-paradigm thing quite quickly. I do a lot of C++, but I rarely use inheritance and virtual methods. These are not the features that make C++ worthwile for me.<p>> The simplicity of flat memory model, [C], a unified file interface<p>This "unified file interface" is a nice theoretical idea, and it leaks many nice things to the real world, but has nothing to do with the implementation language - quite contrary, it allows many different languages to communicate. Similar with "flat memory model" - you can have either language in segmented memory and flat memory. There used to be "far pointers" in both C and C++, and now they're gone, so what.<p>> If C++ were actually better for engineering large systems, GNU wouldn't have had a chance.<p>Oh, if only it were that way, if only inferior engineering systems would just lose and disappear. The sad truth is that survival of a language proves little about quality.<p>If you believe C is better than C++, fine by me, just opinions. You can say "C++ is bad because it's more complex" or "has too many features", I can understand that, or "C++ is confusing because you can overload operators". My features are your bugs, okay. But I can't comprehend your actual arguments because they are orthogonal to the choice of language.</p>
]]></description><pubDate>Sun, 28 Jan 2024 14:51:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=39166284</link><dc:creator>max_k</dc:creator><comments>https://news.ycombinator.com/item?id=39166284</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39166284</guid></item><item><title><![CDATA[New comment by max_k in "C_std: Implementation of C++ standard libraries in C"]]></title><description><![CDATA[
<p>Maybe I could say something good about some aspects of their coding style, but that would only distract from my main point that I find it pointless to imitate a C++ API in C, when that API is modeled carefully to take advantage of C++ features, and you lose all of that in C. (Not only that - their C API is designed in a way that adds overhead even where none would be necessary in C, by allocating all structs on the heap.)<p>There are lots of plain C container libraries which are probably suited better for C, if you really must use C, or prefer C for whatever reason that escapes my imagination.</p>
]]></description><pubDate>Sun, 28 Jan 2024 12:13:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=39164939</link><dc:creator>max_k</dc:creator><comments>https://news.ycombinator.com/item?id=39164939</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39164939</guid></item><item><title><![CDATA[New comment by max_k in "C_std: Implementation of C++ standard libraries in C"]]></title><description><![CDATA[
<p>The author contacted me via email yesterday (because they saw I'm writing a lot of C++ code on GH) and asked me for a review. This was my somewhat-grumpy somewhat-trollish reply:<p>Your library demonstrates that C++ is the superior language because it can to template specialization, resulting in better machine code.  For example, your std::span implementation needs to store the element size, resulting in a larger structure (24 instead of 16 bytes), more memory memory accesses, costly integer multiplications everywhere.<p>C++ can omit all this, and can do simple bit shifts instead of multiplications.<p>There are many more places where you demonstrate C++'s superiority (e.g. it can safely do deep copies with no special code, while your library can't do copies at all, and even if it could, doing so safely/deeply would be extremely cumbersome with C, both for your library code AND for the code calling your library; all a piece of cake in C++).<p>Oh, and "Implements a dynamic array similar to std::array" .... that's factually wrong.  std::array is not a dynamic array.  std::vector is. Interestingly, your std::array implementation uses your std::vector, while adding some more runtime overhead.  Hey, it's C, it's slower than C++ is what I learn again here!<p>It's a rather pointless library, unless your point is to demonstrate that C is a bad programming language.</p>
]]></description><pubDate>Sun, 28 Jan 2024 10:31:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=39164288</link><dc:creator>max_k</dc:creator><comments>https://news.ycombinator.com/item?id=39164288</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39164288</guid></item><item><title><![CDATA[New comment by max_k in "Ask HN: Is Knuth's TAOCP worth the time and effort?"]]></title><description><![CDATA[
<p>For my argument, MMIX is not an improvement because it's still a low-level assembly language. True, you can simply skip over the MIX/MMIX source code, but that doesn't help me to like TAOCP. For me, (abstract) source code is the primary source of understanding a concept, and English text is just an accompanying explanation, not the other way round.<p>Your comments put TAOCP in a historical context. Yes, for the time, TAOCP was a huge achievement and it is a magnificient work. History is interesting, but the question here is about today, and I don't think it's the best way to learn the stuff today. (Again, just my opinion, there's no right and no wrong here.)</p>
]]></description><pubDate>Tue, 28 Nov 2023 11:20:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=38444623</link><dc:creator>max_k</dc:creator><comments>https://news.ycombinator.com/item?id=38444623</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38444623</guid></item><item><title><![CDATA[New comment by max_k in "Ask HN: Is Knuth's TAOCP worth the time and effort?"]]></title><description><![CDATA[
<p>This is certainly a matter of taste. I saw many prominent people everywhere praising TAOCP, but I was disappointed when I finally read the first three books some 10+ years ago. So much disappointed that I regret taking all the time to read it - not because they're bad books, but because I think that time would have been better spent learning things a different way.
What bothered me most is MIX. I think using a very low-level language to teach algorithms is a pretty bad choice. Algorithms are high-level concepts, and using an assembly-like language just distracts from those concepts; it requires you to solve so many micro-problems orthogonal to the real problem, and forces you to repeat yourself over and over. I prefer to implement abstract ideas in abstract code. Using MIX just causes suffering for no point.
I learned a lot about math from TAOCP (but I've never needed it for anything).</p>
]]></description><pubDate>Tue, 28 Nov 2023 10:07:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=38444223</link><dc:creator>max_k</dc:creator><comments>https://news.ycombinator.com/item?id=38444223</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38444223</guid></item></channel></rss>