<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: jkrejcha</title><link>https://news.ycombinator.com/user?id=jkrejcha</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Tue, 21 Apr 2026 03:23:23 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=jkrejcha" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by jkrejcha in "GitHub's fake star economy"]]></title><description><![CDATA[
<p>"Unable to reproduce" is a fair enough explicit close reason. This is more about those "stale" bots that exist that just kinda close the issues because there hasn't been any response for X days. The annoyance with the practice usually stems from the fact that many of the victims of this comes from a lack of <i>maintainer</i> response.<p>This sort of bot punishes users for making even valid reports that aren't fixed immediately or missed by the maintainers for whatever reason including transitory ones, etc.<p>Constantly bumping threads/issues/whatever is generally considered rude, so this is why issue reporters generally don't do it, plus generally the reporter isn't solely focused on that particular issue</p>
]]></description><pubDate>Mon, 20 Apr 2026 22:05:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=47841614</link><dc:creator>jkrejcha</dc:creator><comments>https://news.ycombinator.com/item?id=47841614</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47841614</guid></item><item><title><![CDATA[New comment by jkrejcha in "I just want simple S3"]]></title><description><![CDATA[
<p>Aside from the fact that you can do this statelessly (you could stuff a JWT or moral equivalent in the header as a Bearer token), if you were okay with server-side state, you can have the token be related to a principal or have permissions in of itself.</p>
]]></description><pubDate>Tue, 14 Apr 2026 16:43:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=47767980</link><dc:creator>jkrejcha</dc:creator><comments>https://news.ycombinator.com/item?id=47767980</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47767980</guid></item><item><title><![CDATA[New comment by jkrejcha in "CVE-2026-3888: Important Snap Flaw Enables Local Privilege Escalation to Root"]]></title><description><![CDATA[
<p>In general, I think it's because it tends to be an XY problem. If you're on a service account or something, you generally have SeBackupPrivilege (override read ACLs) and SeRestorePrivilege (override write ACLs) and other relevant privileges so like if you're changing files that's less needed since you can overwrite the ACLs to the necessary files as needed</p>
]]></description><pubDate>Thu, 19 Mar 2026 23:05:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=47447659</link><dc:creator>jkrejcha</dc:creator><comments>https://news.ycombinator.com/item?id=47447659</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47447659</guid></item><item><title><![CDATA[New comment by jkrejcha in "CVE-2026-3888: Important Snap Flaw Enables Local Privilege Escalation to Root"]]></title><description><![CDATA[
<p>I think the only thing that I find kinda strange about setuid/setgid is the fact that it is tied to an executable rather than as part of the executing principal.<p>As an example of an OS that doesn't use a concept, Windows only recently got Unix domain sockets (which is kinda the standard for IPC in *nix land) and generally used named pipes, mailslots, etc for IPC, which can be ACLed. Communication with services and elevation after Windows XP[1] was based on the the user's privileges and not "uid == 0" or "bit set on a file"<p>[1]: Before Vista, a lot of services actually straight up did show UIs on the desktop or whatnot. It was found though that doing this was pretty bad as you could use automation tools to drive the UI and it could lead to some pretty nasty local privilege escalations.</p>
]]></description><pubDate>Thu, 19 Mar 2026 22:47:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=47447481</link><dc:creator>jkrejcha</dc:creator><comments>https://news.ycombinator.com/item?id=47447481</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47447481</guid></item><item><title><![CDATA[New comment by jkrejcha in "UUID package coming to Go standard library"]]></title><description><![CDATA[
<p>> Now generate your random ID. Did you use a CSPRNG, or were your devs lazy and just used a PRNG?<p>There's nothing about UUIDs that need to make them cryptographically secure. Many programming language libraries don't (and some explicitly recommend against using them if you need cryptographically strong randomness).</p>
]]></description><pubDate>Sun, 08 Mar 2026 08:08:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=47295523</link><dc:creator>jkrejcha</dc:creator><comments>https://news.ycombinator.com/item?id=47295523</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47295523</guid></item><item><title><![CDATA[New comment by jkrejcha in "A new California law says all operating systems need to have age verification"]]></title><description><![CDATA[
<p>> Does that mean that the admin will have to manage dob of every student when creating accounts ?<p>That already happens to some extent although the mechanism by which this happens might depend on the school district, etc. The `dateOfBirth` LDAP attribute is probably the most obvious method (which admittedly should probably not be used due to the ease in accessing this info in the default configuration) but there are others.<p>In secondary school when my account was set up we were told that our initial password (that we had to change on first logon) was our DOB</p>
]]></description><pubDate>Sat, 28 Feb 2026 01:53:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=47189010</link><dc:creator>jkrejcha</dc:creator><comments>https://news.ycombinator.com/item?id=47189010</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47189010</guid></item><item><title><![CDATA[New comment by jkrejcha in "Windows Notepad App Remote Code Execution Vulnerability"]]></title><description><![CDATA[
<p>> 1. You can use UNC paths to access remote servers via SMB<p>Relevant article from The Old New Thing: <a href="https://devblogs.microsoft.com/oldnewthing/20060509-30/?p=31263" rel="nofollow">https://devblogs.microsoft.com/oldnewthing/20060509-30/?p=31...</a><p>Programs (this is true for most mainstream operating systems) can become network facing without realizing it. I've sometimes found a bunch of Windows programs sometimes tends to assume that I/O completes "instantly" (even if async I/O has been common on Windows for a very long time) and don't have a good UX for cancelling long running I/O operations</p>
]]></description><pubDate>Wed, 11 Feb 2026 17:04:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=46977549</link><dc:creator>jkrejcha</dc:creator><comments>https://news.ycombinator.com/item?id=46977549</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46977549</guid></item><item><title><![CDATA[New comment by jkrejcha in "The AI boom is causing shortages everywhere else"]]></title><description><![CDATA[
<p>I'm not surprised; you need a lot more servers and even so, there are a lot of places where something low ping times is difficult. While there is a lot of room for latency to go down, 1 lightmillisecond is ~300 km (~186 mi). This means that if a computer is 150 km away, 1 ms is the minimum ping allowed by physics, if I am talking directly to it.<p>By that yardstick, we've actually done very well in a lot of cases. :)</p>
]]></description><pubDate>Sun, 08 Feb 2026 10:55:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=46933195</link><dc:creator>jkrejcha</dc:creator><comments>https://news.ycombinator.com/item?id=46933195</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46933195</guid></item><item><title><![CDATA[New comment by jkrejcha in "Tesla ending Models S and X production"]]></title><description><![CDATA[
<p>Others in this subthread discussed the comparison of the complexity of different ways of achieving flight itself, but I think there is an interesting discussion in that... well... we do add senses we don't technically need to achieve stable flight (but are very useful for safe flight and have reduced the incidence of aviation incidents and accidents dramatically).<p>Whether it be altimeters based on radio[1] or air pressure[2], avoidance and surveillance systems that use radio waves to avoid collisions with other aircraft[3][4], airborne weather radars[5], sensors that measure angle of attack (AoA), GNSS location, attitude, etc, many aircraft (even unpowered gliders!) have some combination of special sensing systems that aren't strictly necessary to take off, fly to a destination, and land, even if some are required for what many would consider safe flight in some scenarios.<p>Many of these systems have redundancies built in in some form or another and many of these systems are even built into unmanned aerial systems (UASes) big and small.<p>[1]: <a href="https://en.wikipedia.org/wiki/Radar_altimeter" rel="nofollow">https://en.wikipedia.org/wiki/Radar_altimeter</a><p>[2]: <a href="https://en.wikipedia.org/wiki/Pressure_altimeter" rel="nofollow">https://en.wikipedia.org/wiki/Pressure_altimeter</a><p>[3]: <a href="https://en.wikipedia.org/wiki/Traffic_collision_avoidance_system" rel="nofollow">https://en.wikipedia.org/wiki/Traffic_collision_avoidance_sy...</a><p>[4]: <a href="https://en.wikipedia.org/wiki/Automatic_Dependent_Surveillance%E2%80%93Broadcast" rel="nofollow">https://en.wikipedia.org/wiki/Automatic_Dependent_Surveillan...</a><p>[5]: <a href="https://skybrary.aero/articles/weather-radar" rel="nofollow">https://skybrary.aero/articles/weather-radar</a></p>
]]></description><pubDate>Thu, 29 Jan 2026 15:29:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=46811494</link><dc:creator>jkrejcha</dc:creator><comments>https://news.ycombinator.com/item?id=46811494</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46811494</guid></item><item><title><![CDATA[New comment by jkrejcha in "How Markdown took over the world"]]></title><description><![CDATA[
<p>Two spaces before the newline for a new line, two lines for a paragraph break</p>
]]></description><pubDate>Sat, 10 Jan 2026 05:20:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=46563028</link><dc:creator>jkrejcha</dc:creator><comments>https://news.ycombinator.com/item?id=46563028</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46563028</guid></item><item><title><![CDATA[New comment by jkrejcha in "Booting Linux in QEMU and Writing PID 1 in Go to Illustrate Kernel as Program"]]></title><description><![CDATA[
<p>A fun little tidbit, if you don't provide an init to the kernel command line, it'll try to look for them in a few places in this order:<p>1. /sbin/init<p>2. /etc/init<p>3. /bin/init<p>4. /bin/sh<p>It dropping you into a shell is a pretty neat little way to allow recovery if you somehow really borked your init</p>
]]></description><pubDate>Thu, 11 Dec 2025 10:55:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=46229880</link><dc:creator>jkrejcha</dc:creator><comments>https://news.ycombinator.com/item?id=46229880</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46229880</guid></item><item><title><![CDATA[New comment by jkrejcha in "Perl's decline was cultural"]]></title><description><![CDATA[
<p>> And that's not even getting in to the major breakages in point version upgrades or the whole python 2 to 3 language switch.<p>Python doesn't use semver and never claimed to do so, but it's probably worth treating "x.y" releases as major versions in their own right (so like 2.7 -> 3.0 is a major version and so 3.10 -> 3.11). If you do that, the versioning makes a bit more sense</p>
]]></description><pubDate>Sun, 07 Dec 2025 01:10:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=46178310</link><dc:creator>jkrejcha</dc:creator><comments>https://news.ycombinator.com/item?id=46178310</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46178310</guid></item><item><title><![CDATA[New comment by jkrejcha in "Trillions spent and big software projects are still failing"]]></title><description><![CDATA[
<p>I think part of that thinking though is that if you do basic stuff like use a standard database engine or don't go too off the beaten path if that's what you need, it tends to be that you get the ultimately needed scale for basically free.<p>This is a lot of times what I see the "don't build for huge scale" to be. It's not necessarily "be proud of O(n^2) algorithms". Rather it's more "use Postgres instead of some hyperscale sharded database when you only have 10 million users" because the alternative tends to miss the forest (and oftentimes the scale, ironically) for the trees</p>
]]></description><pubDate>Wed, 26 Nov 2025 10:42:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=46056099</link><dc:creator>jkrejcha</dc:creator><comments>https://news.ycombinator.com/item?id=46056099</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46056099</guid></item><item><title><![CDATA[New comment by jkrejcha in "Rust in Android: move fast and fix things"]]></title><description><![CDATA[
<p>> No mainstream implementation does that for memory unsafety due to the performance overhead<p>It depends on what is considered memory safety here (especially when some of them are arguably unforced errors in the standards), but many implementations do in fact have options for this ("no delete null pointer checks" for example is an example of one such option, for example, which is used extensively by the Linux kernel for example).<p>The performance impact tends to be much more negligible outside of, sometimes contrived, benchmarks, especially when compared to algorithmic efficiencies or the like.</p>
]]></description><pubDate>Sat, 15 Nov 2025 06:19:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=45935457</link><dc:creator>jkrejcha</dc:creator><comments>https://news.ycombinator.com/item?id=45935457</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45935457</guid></item><item><title><![CDATA[New comment by jkrejcha in "Rust in Android: move fast and fix things"]]></title><description><![CDATA[
<p>> What I'm emphasizing is that code with safety violations, strictly speaking, isn't C/C++ at all.<p>This isn't really correct and many programming language standards (including that of C and C++) don't support this view. Many language standards define a notion of conformance. Strictly conforming programs aren't allowed to invoke behaviors that which are undefined[1].<p>Conforming programs do not have this requirement and basically any non-trivial C and C++ programs are written to this rather than the notion of "strictly conforming".<p>Most non-trivial programs are not strictly conforming (including some C compilers themselves), generally because restricting the set of targets to something smaller than "any possible C implementation" is useful.<p>It is perfectly legal (and very desirable in cases where the standards fall short of usefulness) for a C compiler to define undefined behavior. What you compiled is still a C program, just one that isn't portable across the entire potential set of implementations.<p>[1]: Or unspecified or implementation-defined, for that matter, but this part tends to get left out of discussions.</p>
]]></description><pubDate>Fri, 14 Nov 2025 10:15:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=45925565</link><dc:creator>jkrejcha</dc:creator><comments>https://news.ycombinator.com/item?id=45925565</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45925565</guid></item><item><title><![CDATA[New comment by jkrejcha in "Near mid-air collision at LAX between American Airlines and ITA [video]"]]></title><description><![CDATA[
<p>The problem is fundamentally the fact that it is a visual based system.<p>It is generally faster to communicate orally and process communication aurally than by text message when the message is short enough and requires immediate attention. This is also why urgent alarms (such as those provided by the Gound Proximity Warning System (GPWS) or Traffic Collision Avoidance System[1] (TCAS) have such a component). Some stall prevention systems are even partially tactile based (making a pretty unmistakable shaking feeling (it is loud as well)).<p>It is incredibly slow to type and then process that visual information. In addition, it's also just much more reliable.<p>For time critical situations, it's not a viable option.<p>[1]: Yes, TCAS has a visual component and many alarms do too, but the RAs are auditory and give specific, to the point, instructions on what to do ("climb", "descend").</p>
]]></description><pubDate>Sun, 09 Nov 2025 02:35:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=45862396</link><dc:creator>jkrejcha</dc:creator><comments>https://news.ycombinator.com/item?id=45862396</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45862396</guid></item><item><title><![CDATA[New comment by jkrejcha in "Environment variables are a legacy mess: Let's dive deep into them"]]></title><description><![CDATA[
<p>I think the main point here is that... well if you can help it, don't run untrusted software, since it's by definition not trusted. There are some times where you can't really get around it (JavaScript is an increasingly big example of this and there are many ecosystems in which you are prevented from running trusted software without great difficulty) and there are many general protections that are in OSes that will help you there.<p>On Linux you have some combination of Landlock, AppArmor, SELinux, calling prctl(PR_SET_NO_NEW_PRIVS), and the kitchen sink. On FreeBSD you have capsicum. Windows has integrity labeling + a bunch of stuff related to Job objects + a few things to disable win32k.sys calls.<p>But these are helpful and shouldn't be considered a panacea. The expectation is that you're delegating authority to a computer program to perform a certain task. Do computer programs abuse that authority sometimes? Absolutely. But nonetheless that's the fundamental model of most computer security, thanks in part to its usefulness.</p>
]]></description><pubDate>Tue, 14 Oct 2025 09:27:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=45577936</link><dc:creator>jkrejcha</dc:creator><comments>https://news.ycombinator.com/item?id=45577936</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45577936</guid></item><item><title><![CDATA[New comment by jkrejcha in "Environment variables are a legacy mess: Let's dive deep into them"]]></title><description><![CDATA[
<p>Part of the problem with namespaces in general comes from setuid/setgid binaries. Now, nosuid helps, but the argument goes (and this is why dropping privileges on Linux sometimes requires root) that blocking setuid can actually increase attack surface (because many programs, as part of their initialization routines setuid to a specific service user). Blocking setuid blocks this which can lead to a program unintentionally running, paradoxically, with too many privileges (or the incorrect set of ones).<p>And in the case of allowing setuid and filesystem views, the issue here becomes that an unprivileged user could create a view of the filesystem that has an /etc/passwd and /etc/shadow file that the attacker knows in their home directory. Run some setuid program (like su or sudo) with this view and we've successfully became root, breaking out of the sandbox.<p>And you can't whitelist /etc/passwd or whatever either. This is why allowing anyone to play with mount points is fraught with danger.<p>Now is suid/sgid a fundamental part of a Unix-like system? No, but setuid was created in the world that was and even though these are arguably bugs, releasing a Linux kernel that creates a bunch of security holes in userspace is a very very bad breakage of userspace.<p>---<p>No New Privileges does make this a bit better (as you can never gain more privileges than you already have, and this is a one-way door) and the kernel docs even say that eventually unshare or chroot may be allowed when operating under no new privileges<p>But this is currently why you can't chroot as an unprivileged user as you can trivially blow through the security domain on most Linux distributions</p>
]]></description><pubDate>Tue, 14 Oct 2025 09:03:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=45577788</link><dc:creator>jkrejcha</dc:creator><comments>https://news.ycombinator.com/item?id=45577788</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45577788</guid></item><item><title><![CDATA[New comment by jkrejcha in "A years-long Turkish alphabet bug in the Kotlin compiler"]]></title><description><![CDATA[
<p>strerror, at least on glibc, was only made thread safe back in 2020[1], which is really not that long ago in the grand scheme of things. It was WONTFIXed when it was initially reported back in 2005(!). There have only been 10 glibc releases since then and the 2.32 branch is still actively maintained.<p>There is probably a wide breadth of software that is actively not using that glibc version.<p>But yeah, agreed that trying to do localization with the builtin functions are fraught with traps and pitfalls. Part of the problem though is less about localization and more due to the fact that you can have bugs inflicted on you if you're not careful to just overwrite the locale with the C locale (and make sure to do this everywhere you can)<p>[1]: <a href="https://sourceware.org/bugzilla/show_activity.cgi?id=1890" rel="nofollow">https://sourceware.org/bugzilla/show_activity.cgi?id=1890</a> (see specifically the target milestone, the 2023 date seems to be overly pessimistic)</p>
]]></description><pubDate>Mon, 13 Oct 2025 21:07:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=45573349</link><dc:creator>jkrejcha</dc:creator><comments>https://news.ycombinator.com/item?id=45573349</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45573349</guid></item><item><title><![CDATA[New comment by jkrejcha in "Environment variables are a legacy mess: Let's dive deep into them"]]></title><description><![CDATA[
<p>If a full root exploit is leveraged, it's already game over already, basically anything at that point is just going to be rearranging deck chairs.</p>
]]></description><pubDate>Mon, 13 Oct 2025 19:56:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=45572645</link><dc:creator>jkrejcha</dc:creator><comments>https://news.ycombinator.com/item?id=45572645</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45572645</guid></item></channel></rss>