<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: Emjayen</title><link>https://news.ycombinator.com/user?id=Emjayen</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Mon, 07 Sep 2026 13:27:15 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=Emjayen" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by Emjayen in "AI handles incidents, engineers lose touch with their systems"]]></title><description><![CDATA[
<p>Incompetence is implied by slop usage.</p>
]]></description><pubDate>Sun, 06 Sep 2026 02:45:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=49582817</link><dc:creator>Emjayen</dc:creator><comments>https://news.ycombinator.com/item?id=49582817</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49582817</guid></item><item><title><![CDATA[New comment by Emjayen in "Judge finalizes order for Greenpeace to pay $345M in ND oil pipeline case"]]></title><description><![CDATA[
<p>HN hasn't been burdened with intelligent discussion for many years now.<p>One only needs a cursory scan of the top posts to recognize this; ~80% of discussion revolves around braindead slop peddlers.</p>
]]></description><pubDate>Tue, 03 Mar 2026 01:27:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=47226712</link><dc:creator>Emjayen</dc:creator><comments>https://news.ycombinator.com/item?id=47226712</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47226712</guid></item><item><title><![CDATA[New comment by Emjayen in "IPv6 just turned 30 and still hasn't taken over the world"]]></title><description><![CDATA[
<p>IPv6 was obsolete by the mid-2000s, majorly due to the advent of roaming. It was designed on the rather fanciful assumption that its deployment would simply supersede IPv4, that every software/hardware vendor would cooperate, and we'd have a pure v6 network which would also replace the traditional L2/L3 layers.<p>Ofcourse legacy compatibility trumps all, along with the ubiquity of NATs and roaming and we're now just in the sunk-cost phase, being left saddled with a horribly bloated protocol (128-bit addresses was a marketing choice; not engineering) that solves no problems.</p>
]]></description><pubDate>Sat, 03 Jan 2026 04:17:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=46472746</link><dc:creator>Emjayen</dc:creator><comments>https://news.ycombinator.com/item?id=46472746</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46472746</guid></item><item><title><![CDATA[New comment by Emjayen in "Garage – An S3 object store so reliable you can run it outside datacenters"]]></title><description><![CDATA[
<p>Those rates are peanuts considering that a decade ago saturating 40G, per core, was more than reasonable via standard userspace networking, with atleast a few copies in the datapath.</p>
]]></description><pubDate>Sat, 20 Dec 2025 06:45:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=46334117</link><dc:creator>Emjayen</dc:creator><comments>https://news.ycombinator.com/item?id=46334117</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46334117</guid></item><item><title><![CDATA[New comment by Emjayen in "What would happen if we didn't use TCP or UDP?"]]></title><description><![CDATA[
<p>As someone who has implemented various transport protocols (both standard and custom) the biggest hurdle in layering atop IP will not be the gauntlet of WAN routers, surprisingly, rather consumer NAT devices.<p>One interesting case for a particular Netgear family of routers was that, while the traffic would survive end-to-end it was not without corruption - very specific corruption which took the form of zeroing the first 4 bytes. Given this aligns with where the src/dst ports would normally be, I suspect it was being treated as TCP/UDP albeit without the actual translation path taken.</p>
]]></description><pubDate>Tue, 25 Feb 2025 12:10:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=43170890</link><dc:creator>Emjayen</dc:creator><comments>https://news.ycombinator.com/item?id=43170890</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43170890</guid></item><item><title><![CDATA[New comment by Emjayen in "Operating system threads are always going to be (more) expensive"]]></title><description><![CDATA[
<p>This is really just archaic *nix world problems; the NT kernel has had actual asynchronous I/O since inception -- even 30 years later, io_uring is mere batching to the kernel upper-half (and is a carbon-copy, down to the particular terminology, of RIO)</p>
]]></description><pubDate>Sat, 07 Sep 2024 11:43:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=41473331</link><dc:creator>Emjayen</dc:creator><comments>https://news.ycombinator.com/item?id=41473331</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41473331</guid></item><item><title><![CDATA[New comment by Emjayen in "Show HN: Blitzping – A far faster nping/hping3 SYN-flood alternative with CIDR"]]></title><description><![CDATA[
<p>Those numbers seem awfully low; even going via the relatively slow kernel/kernel stack, you can comfortably achieve around 2Mpps (64B) tx, per core (single flow), on ~2010 commodity hardware via standard Linux userspace APIs.<p>For reference, bypassing the kernel you can saturate a 10G link for ~14Mpps on a single downclocked 500MHz core with same class of hardware.<p>Stuck on phone at the moment; will check out the code later.</p>
]]></description><pubDate>Thu, 18 Jul 2024 00:19:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=40991498</link><dc:creator>Emjayen</dc:creator><comments>https://news.ycombinator.com/item?id=40991498</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40991498</guid></item><item><title><![CDATA[New comment by Emjayen in "The Deadlock Empire: An Interactive Guide to Locks"]]></title><description><![CDATA[
<p>If it's any consolation: the vast, <i>vast</i> majority programmers should stick to single-threaded design, as is evident from all the atrocious multithreaded software out there of which 99% of the time would be faster without multiple threads (and surely far less complex)<p>Unless you know what you're doing, just pick the real low-hanging fruit, like throwing some threads at file block decompression.</p>
]]></description><pubDate>Tue, 09 Jul 2024 04:13:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=40912486</link><dc:creator>Emjayen</dc:creator><comments>https://news.ycombinator.com/item?id=40912486</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40912486</guid></item><item><title><![CDATA[New comment by Emjayen in "My Overkill Home Network"]]></title><description><![CDATA[
<p>Although not as elaborate as this, I have what one would call a "homelab" and it's for, well, testing and experimenting -- I write a lot of high-performance server/network-centric software (e.g, saturating a 100G link with 64B frames is a common test) and virtual machines just aren't suitable/capable most of the time.</p>
]]></description><pubDate>Fri, 11 Aug 2023 08:55:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=37086552</link><dc:creator>Emjayen</dc:creator><comments>https://news.ycombinator.com/item?id=37086552</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37086552</guid></item><item><title><![CDATA[New comment by Emjayen in "1500 Archers on a 28.8: Network Programming in Age of Empires and Beyond (2001)"]]></title><description><![CDATA[
<p>Reverse engineering (which is not actually something I particularly enjoy doing frankly)</p>
]]></description><pubDate>Wed, 18 Jan 2023 17:28:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=34429809</link><dc:creator>Emjayen</dc:creator><comments>https://news.ycombinator.com/item?id=34429809</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34429809</guid></item><item><title><![CDATA[New comment by Emjayen in "1500 Archers on a 28.8: Network Programming in Age of Empires and Beyond (2001)"]]></title><description><![CDATA[
<p>No, I'm quite the outsider to the community having only been involved in the game for a few years (besides as a teenager when it was released) and working alone.<p>The project in question --a platform for AoE2 multiplayer /w general game improvements-- is currently under development, although the core game/MP has been functional for over a year now and our little beta-testing group plays regularly.</p>
]]></description><pubDate>Wed, 18 Jan 2023 17:26:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=34429785</link><dc:creator>Emjayen</dc:creator><comments>https://news.ycombinator.com/item?id=34429785</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34429785</guid></item><item><title><![CDATA[New comment by Emjayen in "1500 Archers on a 28.8: Network Programming in Age of Empires and Beyond (2001)"]]></title><description><![CDATA[
<p>The simulation is, rather obviously, what's being referred to with the spiral-of-death -- it's not unusual for instance in Age of Empires II to encounter transient periods where-in steps take an order of magnitude or more than the period they're simulating on less-capable machines (due to some O(n*n)'s in the AI system).<p>In the end this is still a decision regarding how to handle player's falling behind; too far and they're effectively taken out of the game as they're no longer interacting within a sufficient approximation of the current state.<p>Under what design is "high ping" going to cause the game to run at lower "speed"? The only possibility I can see is where-in the turn period is, for some bizarre reason, also the granularity of the simulation step <i>and</i> you're also adapting the turn based on player latency (in aid of fairness, usually)<p>Having implemented such a system myself, a few times now, it has in practice performed sufficiently well.<p>DE is garbage in general so it's not really a fair comparison.</p>
]]></description><pubDate>Wed, 18 Jan 2023 17:01:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=34429376</link><dc:creator>Emjayen</dc:creator><comments>https://news.ycombinator.com/item?id=34429376</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34429376</guid></item><item><title><![CDATA[New comment by Emjayen in "1500 Archers on a 28.8: Network Programming in Age of Empires and Beyond (2001)"]]></title><description><![CDATA[
<p>Certainly true for local and/or controlled networks, however over the public internet where you're competing for bandwidth with many others over limited (and sometimes already congested-) links it's a rather questionable choice.</p>
]]></description><pubDate>Mon, 16 Jan 2023 16:29:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=34402263</link><dc:creator>Emjayen</dc:creator><comments>https://news.ycombinator.com/item?id=34402263</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34402263</guid></item><item><title><![CDATA[New comment by Emjayen in "1500 Archers on a 28.8: Network Programming in Age of Empires and Beyond (2001)"]]></title><description><![CDATA[
<p>Good catch, Morten :)</p>
]]></description><pubDate>Mon, 16 Jan 2023 14:10:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=34400797</link><dc:creator>Emjayen</dc:creator><comments>https://news.ycombinator.com/item?id=34400797</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34400797</guid></item><item><title><![CDATA[New comment by Emjayen in "1500 Archers on a 28.8: Network Programming in Age of Empires and Beyond (2001)"]]></title><description><![CDATA[
<p>I'm of the opinion that it's an acceptable concession that a brief pause occurs in gameplay to permit another player to recover from transient issues (network hiccups, brief machine resource starvation, or generally: <i>stalling</i>) in favor of fairness rather than punishing the player too harshly for factors that are frequently out of their control.<p>Consider for instance the situation where-in one player's simulation enters the spiral-of-death, under the policy that you're proposing this player is effectively removed from the game; I would say this is a substantially worse trade-off -- I know that I would personally prefer some mild annoyance of brief pausing as opposed to a player leaving the game (and in session-based games, as RTS's generally are, a team-mate leaving often ruins the entire game)<p>Abuse is indeed a problem that most games I've seen of this nature don't address, and while there's no perfect solution, it can be quite effectively curtailed. In the systems I've designed, the basic principle is that each participating player has an allocated amount of <i>wait time</i> which serves as a quota that is charged while-ever the game can progress/run, but cannot, due to them being in a wait-state (connecting/loading/reconnecting/stalling/explicit pausing/whatever). There's some extra logic for handling the oscillation of wait-state.</p>
]]></description><pubDate>Mon, 16 Jan 2023 13:01:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=34400144</link><dc:creator>Emjayen</dc:creator><comments>https://news.ycombinator.com/item?id=34400144</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34400144</guid></item><item><title><![CDATA[New comment by Emjayen in "1500 Archers on a 28.8: Network Programming in Age of Empires and Beyond (2001)"]]></title><description><![CDATA[
<p>I've heard this repeated quite a bit, and while I haven't checked the AI scripts themselves (although I don't recall/imagine there being a script facility to give oneself resources..) I can say that, engine-wise, the only handicap behavior for AI that I've noticed is:<p>- On the highest difficulty ("Hardest"), AIs are bestowed 500 to all resources on next-age research completion.
- Work rates for researches are skewed to be <i>slower</i> for the lowest-difficulty setting.</p>
]]></description><pubDate>Mon, 16 Jan 2023 10:40:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=34399212</link><dc:creator>Emjayen</dc:creator><comments>https://news.ycombinator.com/item?id=34399212</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34399212</guid></item><item><title><![CDATA[New comment by Emjayen in "1500 Archers on a 28.8: Network Programming in Age of Empires and Beyond (2001)"]]></title><description><![CDATA[
<p>RTS-wise it's just been Blizzard games otherwise; Starcraft and Warcraft III, the latter of which I did the most work with, mainly multiplayer optimizations and writing a server implementation.<p>However, I have been entertaining the idea of supporting other deterministic (RTS-) games, adapting them the same way --rearchitecting the multiplayer system/code-- as I have done for Age of Empires II, providing a unified platform for these games. The first candidate that came to mind was the Red Alert series.</p>
]]></description><pubDate>Mon, 16 Jan 2023 10:35:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=34399171</link><dc:creator>Emjayen</dc:creator><comments>https://news.ycombinator.com/item?id=34399171</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34399171</guid></item><item><title><![CDATA[New comment by Emjayen in "1500 Archers on a 28.8: Network Programming in Age of Empires and Beyond (2001)"]]></title><description><![CDATA[
<p>Similarly, a common technique used within notably the DotA community (of which's map didn't have such a tripwire) was to analyze the replay for what were termed "fog clicks", since for whatever reason object selection is part of the command stream and those using maphack would often, intentionally or inadvertently, select objects otherwise under fog.</p>
]]></description><pubDate>Mon, 16 Jan 2023 10:09:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=34398949</link><dc:creator>Emjayen</dc:creator><comments>https://news.ycombinator.com/item?id=34398949</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34398949</guid></item><item><title><![CDATA[New comment by Emjayen in "1500 Archers on a 28.8: Network Programming in Age of Empires and Beyond (2001)"]]></title><description><![CDATA[
<p>Are these players interacting in any way? If they aren't then it could be more tolerable, but one player being more than several seconds behind others is going to lead to a rather undesirable experience, especially in the middle of a battle (and having most of their commands dropped due to being invalid equally so)</p>
]]></description><pubDate>Mon, 16 Jan 2023 10:03:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=34398911</link><dc:creator>Emjayen</dc:creator><comments>https://news.ycombinator.com/item?id=34398911</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34398911</guid></item><item><title><![CDATA[New comment by Emjayen in "1500 Archers on a 28.8: Network Programming in Age of Empires and Beyond (2001)"]]></title><description><![CDATA[
<p>It is, in fact, inherent to this model. While there will be some tolerance threshold as to how far behind in the simulation a machine may fall, it still must be rather conservative (generally a few seconds), as elsewise the context (state-) sensitive inputs start frequently failing -- if I issue a command given at world-state time <i>t</i>, will it be meaningful/valid at state <i>t2</i>? The answer is where you get your threshold and it's always just a conservative approximation.</p>
]]></description><pubDate>Mon, 16 Jan 2023 09:15:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=34398576</link><dc:creator>Emjayen</dc:creator><comments>https://news.ycombinator.com/item?id=34398576</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34398576</guid></item></channel></rss>