<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: MarekKnapek</title><link>https://news.ycombinator.com/user?id=MarekKnapek</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Fri, 25 Sep 2026 11:58:09 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=MarekKnapek" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by MarekKnapek in "A new Intel Itanium (IA-64) emulator that boots Windows"]]></title><description><![CDATA[
<p>Wasn't there a problem with Alpha, that it had too weak memory model or something? Think of atomic instructions with multi CPU system. Or do I remember something wrong?</p>
]]></description><pubDate>Mon, 20 Jul 2026 04:44:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=48974445</link><dc:creator>MarekKnapek</dc:creator><comments>https://news.ycombinator.com/item?id=48974445</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48974445</guid></item><item><title><![CDATA[New comment by MarekKnapek in "Rumors of my death are slightly exaggerated"]]></title><description><![CDATA[
<p>Yes! I need a glass Klein bottle video!</p>
]]></description><pubDate>Sat, 09 May 2026 00:46:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=48070611</link><dc:creator>MarekKnapek</dc:creator><comments>https://news.ycombinator.com/item?id=48070611</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48070611</guid></item><item><title><![CDATA[New comment by MarekKnapek in "How to Implement an FPS Counter"]]></title><description><![CDATA[
<p>My idea is: 1) Determine how frequently you want to update the number on screen. Every frame is too often, once per second is too infrequent. Maybe 4× per second is OK. 2) Determine how much time to average over. One or two seconds seems fine. 3) From those two numbers, compute number of buckets. For example update 4× per second, average over 2 seconds, gives you 8 buckets. 4) Every time a frame is drawn, based on current time, you either a) increment the counter in the last bucket or b) shift all buckets over one position and increment the new last bucket from zero to one. 5) Average the sum of frames drawn over that time period you decided earlier. 6) Don't display fraction of a FPS. 7) Done. It costs you 8 integers, plus maybe one more for a timestamp of the last bucket, plus maybe one more to implement ring buffer instead of shifting all those integers over. Less than a single CPU cache line.</p>
]]></description><pubDate>Sat, 25 Apr 2026 14:01:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=47901631</link><dc:creator>MarekKnapek</dc:creator><comments>https://news.ycombinator.com/item?id=47901631</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47901631</guid></item><item><title><![CDATA[New comment by MarekKnapek in "UUID package coming to Go standard library"]]></title><description><![CDATA[
<p>Is there a way to have benefits of both? Version 7 for better database clustering. And version 4 for complete randomness? So users can not inference nothing from the id? I have an idea: Use version 7 internally, then scramble it before sending to the user. Scrambling could be done by the database or by the server application. It could be as simple as XOR with some 128bit constant, or as resilient as AES encryption. Of course you also need to do unscrambling of IDs coming from users.</p>
]]></description><pubDate>Sat, 07 Mar 2026 11:31:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=47286672</link><dc:creator>MarekKnapek</dc:creator><comments>https://news.ycombinator.com/item?id=47286672</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47286672</guid></item><item><title><![CDATA[New comment by MarekKnapek in "Building Your Own Efficient uint128 in C++"]]></title><description><![CDATA[
<p>On division: There is a paper about a division algorithm. If you split your 128bit integer into four 32bit integers, you can use a 64bit CPU built-in instruction to do the 128bit division. If you are on 32bit CPU that doesn't have the 32bit division operation, then split your 128bit number into 8 16bit integers and leverage the 32bit CPU built-in operation. <a href="https://surface.syr.edu/eecs_techreports/166/" rel="nofollow">https://surface.syr.edu/eecs_techreports/166/</a></p>
]]></description><pubDate>Mon, 02 Feb 2026 10:59:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=46854612</link><dc:creator>MarekKnapek</dc:creator><comments>https://news.ycombinator.com/item?id=46854612</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46854612</guid></item><item><title><![CDATA[New comment by MarekKnapek in "Show HN: Doom (1993) in a PDF"]]></title><description><![CDATA[
<p>As PDF supports DEFLATE compression, it should be possible to shrink the size of the PDF document considerably.</p>
]]></description><pubDate>Mon, 13 Jan 2025 02:17:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=42679339</link><dc:creator>MarekKnapek</dc:creator><comments>https://news.ycombinator.com/item?id=42679339</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42679339</guid></item><item><title><![CDATA[New comment by MarekKnapek in "WinDepends – A Rewrite of the Dependency Walker"]]></title><description><![CDATA[
<p>There is also this one, but it is no longer maintained. <a href="https://github.com/MarekKnapek/DependencyViewer">https://github.com/MarekKnapek/DependencyViewer</a></p>
]]></description><pubDate>Sun, 01 Dec 2024 19:52:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=42290304</link><dc:creator>MarekKnapek</dc:creator><comments>https://news.ycombinator.com/item?id=42290304</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42290304</guid></item><item><title><![CDATA[New comment by MarekKnapek in "OpenBSD: Removing syscall(2) from libc and kernel"]]></title><description><![CDATA[
<p>No, Windows has stable API and ABI named Win32 API. This comes from times of 16bit Windows and works also in x64 / ARM / ARM64, previously it worked in Alpha / MIPS / IA64. This API is implemented in kernel.dll user.dll gdi.dll advapi.dll and similar, it does some stuff, but mostly forwards to the NT API. Beware, kernel.dll is user space component despite its name (historical reasons). NT API is undocumented and not meant to be used by user programs, it is not stable, it lives in ntdll.dll, it does syscalls to the kernel: ntoskrnl.exe. Windows doesn't have a libc (for user programs, it has private one for its own programs), Visual Studio has a libc. Each version of Visual Studio (roughly) has its own libc named msvcrt.dll msvrt100.dll msvcrt140.dll and similar, it hosts the C and C++ libc, it could be linked statically for various benefits and drawbacks.</p>
]]></description><pubDate>Fri, 27 Oct 2023 18:05:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=38041847</link><dc:creator>MarekKnapek</dc:creator><comments>https://news.ycombinator.com/item?id=38041847</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38041847</guid></item><item><title><![CDATA[New comment by MarekKnapek in "Chrome: Heap buffer overflow in WebP"]]></title><description><![CDATA[
<p>> memory allocation can occur here and there<p>What about HW decoders? Of video formats (that are much more complex than image decoders)? Such as MPEG, H.264, H.265, VP9, AV1 and similar. If memory allocation is needed here and there, I guess there is always known maximum size of such allocation in advance. Written in the spec. Think of at chip design time, or at software decoder compile time. How else would HW decoders be even possible?<p>Also: Hey Google, do you even fuzz-test? Your own stuff?</p>
]]></description><pubDate>Fri, 15 Sep 2023 19:14:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=37527865</link><dc:creator>MarekKnapek</dc:creator><comments>https://news.ycombinator.com/item?id=37527865</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37527865</guid></item><item><title><![CDATA[New comment by MarekKnapek in "GPS (2022)"]]></title><description><![CDATA[
<p>The article says that GLONASS time counts days from zero to 1461, then resets back to zero. This is 4 years if we think leap year is once 4 years. But it is not. Leap year is once 4 years, but each 100 years it is not, except each 400 years it is. This is on average 365.2425 days per year not 365.25 days per year. Is GLONASS not long term thinking ahead enough?</p>
]]></description><pubDate>Sun, 04 Jun 2023 03:35:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=36182851</link><dc:creator>MarekKnapek</dc:creator><comments>https://news.ycombinator.com/item?id=36182851</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36182851</guid></item><item><title><![CDATA[New comment by MarekKnapek in "In Erlang/OTP 27, +0.0 will no longer be exactly equal to -0.0"]]></title><description><![CDATA[
<p>What about NaN? Does Erlang have NaN? How does Erlang compare two variables containing a NaN (or expressions evaluating to a NaN)? There are (2^24)-2 different NaNs in a 32bit IEEE 754 float, and there are (2^53)-2 different NaNs in a 64bit IEEE 754 double. The IEEE 754 standard says, that a NaN value should compare to any other number (including any other NaN) as not equal. Yes, the expression `x == x` could return `false`.</p>
]]></description><pubDate>Wed, 10 May 2023 02:52:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=35883101</link><dc:creator>MarekKnapek</dc:creator><comments>https://news.ycombinator.com/item?id=35883101</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=35883101</guid></item><item><title><![CDATA[New comment by MarekKnapek in "Deceiving Windows Defender: The Big Stack Bypass"]]></title><description><![CDATA[
<p>If you are administrator, you can create and launch new scheduled tasks ... as NT\SYSTEM from that you can ... anything. Get TCB privilege, get Trusted Installer account, install kernel level drivers ... god mode.</p>
]]></description><pubDate>Sat, 31 Dec 2022 20:21:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=34200329</link><dc:creator>MarekKnapek</dc:creator><comments>https://news.ycombinator.com/item?id=34200329</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34200329</guid></item><item><title><![CDATA[New comment by MarekKnapek in "Rolling your own crypto: Everything you need to build AES from scratch"]]></title><description><![CDATA[
<p>Implementing AES from scratch is easy and fun, just read the spec and implement it 1:1, until ... you encounter GCM mode and its Galois Field "weird" math. Very. Not. Fun.</p>
]]></description><pubDate>Wed, 13 Jul 2022 09:52:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=32080636</link><dc:creator>MarekKnapek</dc:creator><comments>https://news.ycombinator.com/item?id=32080636</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=32080636</guid></item><item><title><![CDATA[New comment by MarekKnapek in "How I cut GTA Online loading times by 70%"]]></title><description><![CDATA[
<p>Please don't compute speed-up like that.<p>Old time: 6 minutes (360 seconds).
New time: 1 minute and 50 seconds (110 seconds).
Speed-up calculated by article author: 1-110/360=0.694 (69.4% saved).
Speed-up calculated by me: 360/110=3.27 (3 times faster).<p>Please calculate it the other way around. It makes great difference when you say you made something 10× faster than when you say you saved 90% of work even if both mean exactly the same thing.<p>Bruce Dawson has great article about this: <a href="https://randomascii.wordpress.com/2018/02/04/what-we-talk-about-when-we-talk-about-performance/" rel="nofollow">https://randomascii.wordpress.com/2018/02/04/what-we-talk-ab...</a></p>
]]></description><pubDate>Mon, 01 Mar 2021 12:22:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=26302062</link><dc:creator>MarekKnapek</dc:creator><comments>https://news.ycombinator.com/item?id=26302062</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26302062</guid></item><item><title><![CDATA[New comment by MarekKnapek in "Arranging Invisible Icons in Quadratic Time"]]></title><description><![CDATA[
<p>Yes. At previous job where we were making a desktop Win32 application we experienced this. Our automatic pipeline is: Build server compiles all the .EXEs and .DLLs, creates an .EXE installer and sends it for testing. Test agent grabs the installer, installs the product and runs various test scenarios (pokes buttons, menu items, etc). One of those scenarios is HTML help (.CHM file) displayed inside Windows built-in help viewer that started to time-out. The solution was to go to Control Panel, Internet options, Clear Cookies. Also the product's check-for-updates-in-background feature on this machine was very slow because cookies. Both features are using Windows' (or IE's) high level HTTP library containing functions such as fetch-this-url-and-figure-out-TLS-and-redirects-automatigally.</p>
]]></description><pubDate>Tue, 16 Feb 2021 13:35:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=26153687</link><dc:creator>MarekKnapek</dc:creator><comments>https://news.ycombinator.com/item?id=26153687</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26153687</guid></item><item><title><![CDATA[New comment by MarekKnapek in "Analyzing the compromised DLL file that started the Solorigate attack"]]></title><description><![CDATA[
<p>Did SolarWinds' CA (certificate authority) reworked their code signing certificate?</p>
]]></description><pubDate>Sat, 19 Dec 2020 15:56:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=25478163</link><dc:creator>MarekKnapek</dc:creator><comments>https://news.ycombinator.com/item?id=25478163</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=25478163</guid></item><item><title><![CDATA[New comment by MarekKnapek in "No Cookie for You"]]></title><description><![CDATA[
<p>Few years back I created some HelloWorld application on Google's AppEngine (requires Java, Python or Go) and was positively surprised about its statistics on theirs dashboard.</p>
]]></description><pubDate>Thu, 17 Dec 2020 18:24:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=25458506</link><dc:creator>MarekKnapek</dc:creator><comments>https://news.ycombinator.com/item?id=25458506</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=25458506</guid></item><item><title><![CDATA[New comment by MarekKnapek in "Kazakhstan government is intercepting HTTPS traffic in its capital (again)"]]></title><description><![CDATA[
<p>So this certificate will be added to "not trusted" of all the certificate storages (Windows, Firefox, Chrome, Java, and all others) ... riiight?</p>
]]></description><pubDate>Sun, 06 Dec 2020 19:46:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=25326077</link><dc:creator>MarekKnapek</dc:creator><comments>https://news.ycombinator.com/item?id=25326077</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=25326077</guid></item><item><title><![CDATA[New comment by MarekKnapek in "The friends who drove a bus behind the Iron Curtain"]]></title><description><![CDATA[
<p>James Webb will prove nobody nothing. Search Twitter thread by Foone who discussed there how many wonderful things humanity managed to pull off while waiting for James Webb to launch.</p>
]]></description><pubDate>Sat, 10 Oct 2020 19:51:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=24741397</link><dc:creator>MarekKnapek</dc:creator><comments>https://news.ycombinator.com/item?id=24741397</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=24741397</guid></item><item><title><![CDATA[New comment by MarekKnapek in "The mystery of why one ant species goes after larger foes (2018)"]]></title><description><![CDATA[
<p>Most likely we would cuddle more. As explained in Minute Earth's video: <a href="https://youtube.com/watch?v=c6Ko0Hzi47U" rel="nofollow">https://youtube.com/watch?v=c6Ko0Hzi47U</a></p>
]]></description><pubDate>Mon, 05 Oct 2020 02:03:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=24683906</link><dc:creator>MarekKnapek</dc:creator><comments>https://news.ycombinator.com/item?id=24683906</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=24683906</guid></item></channel></rss>