<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: johnnyjeans</title><link>https://news.ycombinator.com/user?id=johnnyjeans</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Fri, 17 Apr 2026 05:09:21 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=johnnyjeans" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by johnnyjeans in "Trump says Intel's new CEO "must resign immediately""]]></title><description><![CDATA[
<p>The part where it becomes appearances is that it's public. The negative impact here stems from the office of the president criticizing the CEO of a publicly traded company, using an unofficial but public channel. This impact doesn't exist if it happens in private backchannels.<p>I think it's foolhardy to hold any certainty on the effect of transitioning from gloabalism to neo-mercantilism, which seems to be the economic policy of this admin. Given the complexity of the systems involved it should be flagrantly obvious that whether this is good or bad for the American people is wholly unpredictable for tiny little monkey brains. Thus, when I speak of the negative impacts in this context, I'm implicitly just sticking to what's definitely harmful, which is tied up in appearances here, and empirically measurable in intel's stock price (though it seems to be mostly minimal, thankfully.)</p>
]]></description><pubDate>Thu, 07 Aug 2025 16:20:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=44826505</link><dc:creator>johnnyjeans</dc:creator><comments>https://news.ycombinator.com/item?id=44826505</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44826505</guid></item><item><title><![CDATA[New comment by johnnyjeans in "Trump says Intel's new CEO "must resign immediately""]]></title><description><![CDATA[
<p>As I understand it, people have a higher priority of maintaining affiliation with social groups (of which, political parties are an example) than they have a commitment to any given personal view. It varies based on context, the person, etc. and is obviously a complex phenomenon. But the default operating mode of the human being is to toe the line and to (genuinely) change their views based on where their self-identified in-groups are heading. Mob mentality, group think, etc. All sides of the same coin.<p>Rhetoric is empty. Always.</p>
]]></description><pubDate>Thu, 07 Aug 2025 15:51:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=44826102</link><dc:creator>johnnyjeans</dc:creator><comments>https://news.ycombinator.com/item?id=44826102</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44826102</guid></item><item><title><![CDATA[New comment by johnnyjeans in "Trump says Intel's new CEO "must resign immediately""]]></title><description><![CDATA[
<p>In fairness the laisseiz-faire market has been dead for over 2 centuries, it's just that this kind of thing usually happens with backchannels, often with a threat of malicious legislation if you don't play ball. There's a point where the more capital you control, the less freedom you actually have. For a company the size of intel, the line between private and public is blurred. Sometimes it's brazen, like with the seizure of the railroads in the 19th century, but the state is usually sensible enough to keep the illusion alive in the public's eye if they can help it.<p>This administration doesn't seem to care very much about appearances. Nothing you and I can do about it but pity the poor sons of bitches who are large enough to be perceived by the archons, and clench our assholes in the hopes that we aren't swept up in the damages.</p>
]]></description><pubDate>Thu, 07 Aug 2025 15:43:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=44825980</link><dc:creator>johnnyjeans</dc:creator><comments>https://news.ycombinator.com/item?id=44825980</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44825980</guid></item><item><title><![CDATA[New comment by johnnyjeans in "The X11 Security extension from the 1990s"]]></title><description><![CDATA[
<p>you're right, but sec is about threat profiles. there's a point where selinux, firejail, etc. aren't enough either. even a virtual machine may as well be wet rice paper to an alphabet soup agency. you should very much assume that even airgapping isn't enough, unless it's inside of a faraday cage.<p>xorg security measures are a different matter from stopping any random program from writing to your filesystem. broaden the conversation to be about all security across all attack surfaces under all conditions and nothing is safe. i'm still not gonna run everything as root.</p>
]]></description><pubDate>Tue, 05 Aug 2025 21:59:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=44804949</link><dc:creator>johnnyjeans</dc:creator><comments>https://news.ycombinator.com/item?id=44804949</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44804949</guid></item><item><title><![CDATA[New comment by johnnyjeans in "Nova: A New Web Framework for Erlang"]]></title><description><![CDATA[
<p>It should also be noted that handling state like that is not really idiomatic Erlang. State is updated at a process level, thus traditionally you spawn another process which is trivial to do. On the BEAM that is fast enough for 95% of cases. If you really need mutation on local variables for performance reasons, you should already be writing NIFs anyways.<p>State variables are what I think corpos call a "code smell". The BEAM/OTP isn't a number cruncher, there are better tools out there if you're doing a lot of that. Erlang is, at it's core, about constraint logic programming. It should be best thought as a tool for granular, scalable, distributable userspace scheduling. If you need something outside of that, NIFs or Ports. Both are quite nice.</p>
]]></description><pubDate>Fri, 01 Aug 2025 15:54:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=44758637</link><dc:creator>johnnyjeans</dc:creator><comments>https://news.ycombinator.com/item?id=44758637</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44758637</guid></item><item><title><![CDATA[New comment by johnnyjeans in "Nova: A New Web Framework for Erlang"]]></title><description><![CDATA[
<p>I'm not trolling, but I'm very serious about language design after going through a long gauntlet. I don't think making mutation easy, and also having the ability to hide code execution, is necessarily a good practice in a system principally designed for safe, robust and efficient concurrency. Don't use a flathead on a phillips screw.</p>
]]></description><pubDate>Thu, 31 Jul 2025 22:40:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=44750992</link><dc:creator>johnnyjeans</dc:creator><comments>https://news.ycombinator.com/item?id=44750992</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44750992</guid></item><item><title><![CDATA[New comment by johnnyjeans in "Nova: A New Web Framework for Erlang"]]></title><description><![CDATA[
<p>No rebinding, better fits the grain of the OTP, no AST macros. Last I checked, the debugging experience with elixir was pretty subpar. Erlang is also a fundamentally nicer syntax that I find a great deal more readable. I'm not really sure what the appeal of Elixir as a <i>language</i> is actually supposed to be, outside of people who have spent a lot of time writing Ruby code.</p>
]]></description><pubDate>Thu, 31 Jul 2025 16:08:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=44747070</link><dc:creator>johnnyjeans</dc:creator><comments>https://news.ycombinator.com/item?id=44747070</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44747070</guid></item><item><title><![CDATA[New comment by johnnyjeans in "There is no memory safety without thread safety"]]></title><description><![CDATA[
<p>This is a good post and I agree with it in full, but I just wanted to point out that (safe) Rust is safer from data races than, say, Haskell due to the properties of an affine type system.<p>Haskell in general is a much safer than Rust thanks to its more robust type system (which also forms the basis of its metaprogramming facilities), monads being much louder than unsafe blocks, etc. But data races and deadlocks are one of the few things Rust has over it. There are some pure functional languages that are dependently typed like Idris, and thus far safer than Rust, but they're in the minority and I've yet to find anybody using them industrially. Also Fortnite's Verse thing? I don't know how pure that language is though.</p>
]]></description><pubDate>Thu, 24 Jul 2025 16:32:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=44672728</link><dc:creator>johnnyjeans</dc:creator><comments>https://news.ycombinator.com/item?id=44672728</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44672728</guid></item><item><title><![CDATA[New comment by johnnyjeans in "jank is C++"]]></title><description><![CDATA[
<p>The naive way wouldn't be any different than what it's like to dynamically load sepples binaries right now.<p>The real way, and the way befitting the role of the standards committee is actually putting effort into standardizing a way to talk to and understand the interfaces and structure of a C++ binary at load-time. That's exactly what linking is for. It should be the responsibility of the software using the FFI to move it's own code around and adjust it to conform with information provided by the main program as part of the dynamic linking/loading process... which is already what it's doing. You can mitigate a lot of the edge cases by making interaction outside of this standard interface as undefined behavior.<p>The canonical way to do your example is to get the address of std::string::length() and ask how to appropriately call it (to pass "this, for example.)</p>
]]></description><pubDate>Fri, 11 Jul 2025 20:12:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=44536380</link><dc:creator>johnnyjeans</dc:creator><comments>https://news.ycombinator.com/item?id=44536380</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44536380</guid></item><item><title><![CDATA[New comment by johnnyjeans in "jank is C++"]]></title><description><![CDATA[
<p>Any particular year?</p>
]]></description><pubDate>Fri, 11 Jul 2025 19:15:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=44535907</link><dc:creator>johnnyjeans</dc:creator><comments>https://news.ycombinator.com/item?id=44535907</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44535907</guid></item><item><title><![CDATA[New comment by johnnyjeans in "jank is C++"]]></title><description><![CDATA[
<p>> they're not embedding LLVM - they're embedding clang<p>They're embedding both, according to the article. But it's also just sloppy semantics on my part; when I say LLVM, I don't make a distinction of the frontend or any other part of it. I'm fully relying on context to include all relevant bits of software being used. In the same way I might use "Windows" to refer to any part of the Windows operating system like dwm.exe, explorer.exe, command.com, ps.exe, etc. LLVM a generic catch-all for me, I don't say "LLI" I say "the LLVM VM", for example. I can't really consider clang to be distinct from that ecosystem, though I know it's a discrete piece of software.<p>> name mangling is by the easiest part of cpp FFI<p>And it still requires a lot of work, and increases in effort when you have multiple compilers, and if you're on a tiny code team that's already understaffed, it's not really something you can worry about.<p><a href="https://en.m.wikiversity.org/wiki/Visual_C%2B%2B_name_mangling" rel="nofollow">https://en.m.wikiversity.org/wiki/Visual_C%2B%2B_name_mangli...</a><p>You're right, writing platform specific code to handle this is more than possible. But it takes manhours that might just be better spent elsewhere. And that's before we get to the part where embedding a C++ compiler is extremely inappropriate when you just want a symbol name and an ABI.<p>But this is besides the point: The fact that it's not a problem solved by the gargantuan standard is awful. I also consider the ABI to be the exact same issue, that being absolutely awful support of runtime code loading, linking and interoperation. There's also no real reason for it, other than the standards committee being incompetent.</p>
]]></description><pubDate>Fri, 11 Jul 2025 19:00:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=44535774</link><dc:creator>johnnyjeans</dc:creator><comments>https://news.ycombinator.com/item?id=44535774</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44535774</guid></item><item><title><![CDATA[New comment by johnnyjeans in "Jank is C++"]]></title><description><![CDATA[
<p>I'm not surprised to see that Jank's solution to this is to embed LLVM into their runtime. I really wish there was a better way to do this.<p>There are a lot of things I don't like about C++, and close to the top of the list is the lack of standardization for name-mangling, or even a way mangle or de-mangle names at compile-time. Sepples is a royal pain in the ass to target for a dynamic FFI because of that. It would be really nice to have some way to get symbol names and calling semantics as constexpr const char* and not have to deal with generating (or writing) a ton of boilerplate and extern "C" blocks.<p>It's absolutely possible, but it's not low-hanging fruit so the standards committee will never put it in. Just like they'll never add a standardized equivalent for alloca/VLAs. We're not allowed to have basic, useful things. Only more ways to abuse type deduction. Will C++26 finally give us constexpr dynamic allocations? Will compilers ever actually implement one of the three (3) compile-time reflection standards? Stay tuned to find out!</p>
]]></description><pubDate>Fri, 11 Jul 2025 18:29:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=44535498</link><dc:creator>johnnyjeans</dc:creator><comments>https://news.ycombinator.com/item?id=44535498</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44535498</guid></item><item><title><![CDATA[New comment by johnnyjeans in "Writing a Game Boy Emulator in OCaml (2022)"]]></title><description><![CDATA[
<p>"Worse is better" is an extremely misleading phrase. It's supposed to be ironic, not sarcastic. Unfortunately, the authors of "Unix Haters Handbook" exercised terrible judgement used it as a sarcastic pejorative. Now nobody understands what anybody is actually saying when they use it. I mean it in the original sense, where it's basically another way to express "Less is more."<p>SML is borderline minimalist, it's "worse" because it doesn't try to solve everybody's problems with a bunch of ad hoc language features and a stdlib and formalization larger than the entire legal code of the United States. It's "worse" because it comes with "less". You can't just import solution and start writing AbstractFactoryManager2 garbage. It's not actually worse to anybody but beancounters.</p>
]]></description><pubDate>Fri, 11 Jul 2025 17:59:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=44535198</link><dc:creator>johnnyjeans</dc:creator><comments>https://news.ycombinator.com/item?id=44535198</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44535198</guid></item><item><title><![CDATA[New comment by johnnyjeans in "Writing a Game Boy Emulator in OCaml (2022)"]]></title><description><![CDATA[
<p>> Good enough wins. Worse is better rules. Release early... and so on.<p>None of that applies to this case, where ML is not only a fair bit older than Java, but abides the principle of "worse is better" far more.<p>> While scheme, standardml and numerous other perfect little languages are mostly just Wikipedia pages now.<p>Frankly, I'm thankful I work in an environment with creative autonomy and can choose (and create) my own tools, rather than being forced to work with ones I don't particularly care for because they had a large marketing push.</p>
]]></description><pubDate>Tue, 08 Jul 2025 16:47:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=44501734</link><dc:creator>johnnyjeans</dc:creator><comments>https://news.ycombinator.com/item?id=44501734</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44501734</guid></item><item><title><![CDATA[New comment by johnnyjeans in "Why English doesn't use accents"]]></title><description><![CDATA[
<p>Edited for accuracy, thanks.</p>
]]></description><pubDate>Mon, 07 Jul 2025 16:22:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=44491923</link><dc:creator>johnnyjeans</dc:creator><comments>https://news.ycombinator.com/item?id=44491923</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44491923</guid></item><item><title><![CDATA[New comment by johnnyjeans in "Why English doesn't use accents"]]></title><description><![CDATA[
<p>> Most of us still mispronounce some words<p>The bureaucratization of language is more problematic in my view, where things are seen as wrong and right and we try to cram the beauty of of natural language into a restricted box that can be cleanly and easily defined and worked with universally. I quite literally have nothing but detest for this conception of language, that it must bend to the whims of rigidity when it's very clearly a natural, highly chaotic dynamic system constantly undergoing evolution in unexpected ways.</p>
]]></description><pubDate>Mon, 07 Jul 2025 16:20:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=44491896</link><dc:creator>johnnyjeans</dc:creator><comments>https://news.ycombinator.com/item?id=44491896</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44491896</guid></item><item><title><![CDATA[New comment by johnnyjeans in "Why English doesn't use accents"]]></title><description><![CDATA[
<p>2nding this. The "non-phonetic alphabet" is the biggest non-issue I see people raise a stink about. It really doesn't matter, context is the heavy-weight backbone of language.<p>On top of that, I think people really underestimate how inappropriate diacritics would be for English. It has a massive phonemic inventory, with 44 unique items. Compare with Spanish's 24. English's "phonetic" writing system would have to be as complex as a romanized tonal language like Mandarin (which has to account for 46 unique glyphs once you account for 4 tones over 6 vowels + the 22 consonants). Or you know, the absolute mess that is romanization of Afro-Asiatic languages. El 3arabizi daiman byi5ali el siza yid7ako, el Latin bas nizaam kteebe mish la2e2 3a lugha hal2ad m3a2ade.</p>
]]></description><pubDate>Mon, 07 Jul 2025 15:01:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=44491107</link><dc:creator>johnnyjeans</dc:creator><comments>https://news.ycombinator.com/item?id=44491107</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44491107</guid></item><item><title><![CDATA[New comment by johnnyjeans in "Writing a Game Boy Emulator in OCaml (2022)"]]></title><description><![CDATA[
<p>What are your thoughts on basis[1] and successorml[2]?<p>[1] - <a href="http://www.mlton.org/MLBasis" rel="nofollow">http://www.mlton.org/MLBasis</a><p>[2] - <a href="https://smlfamily.github.io/successor-ml/" rel="nofollow">https://smlfamily.github.io/successor-ml/</a></p>
]]></description><pubDate>Fri, 04 Jul 2025 18:51:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=44466951</link><dc:creator>johnnyjeans</dc:creator><comments>https://news.ycombinator.com/item?id=44466951</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44466951</guid></item><item><title><![CDATA[New comment by johnnyjeans in "Writing a Game Boy Emulator in OCaml"]]></title><description><![CDATA[
<p>> the treatment of things like equality and arithmetic is hacky in its own way<p>mlton allows you to use a keyword to get the same facility for function overloading that is used for addition and equality. it's disabled by default for hygienic reasons, function overloading shouldn't be abused.<p><a href="https://baturin.org/code/mlton-overload/" rel="nofollow">https://baturin.org/code/mlton-overload/</a><p>> labelled arguments<p>generally speaking if my functions are large enough for this to matter, i'd rather be passing around refs to structures so refactoring is easier.<p>> polymorphic variants<p>haven't really missed them.<p>> GADTs<p>afaik being able to store functors inside of modules would fix this (and I think sml/nj supports this), but SML's type system is more than capable of expressing virtual machines in a comfortable way with normal ADTs. if i wanted to get that cute with the type system, i'd probably go the whole country mile and reach for idris.<p>> even the much-maligned object system that have their place<p>never used it.<p>> Is there anything SML really brings to the table besides the omission of features like this?<p>mlton is whole-program optimizing (and very good at it)[1], has a much better FFI[2][3], is much less opinionated as a language, and the parallelism is about 30 years ahead[4]. the most important feature to me is that sml is more comfortable to use over ocaml. being nicer syntactically matters, and that increases in proportion with the amount of code you have to read and write. you dont go hiking in flip flops.  as a knock-on effect, that simplicitly in sml ends up with a language that allows for a lot more mechanical sympathy.<p>all of these things combine for me, as an engineer, to what's fundamentally a more pragmatic language. the french have peculiar taste in programming languages, marseille prolog is also kind of weird. ocaml feels quirky in the same way as a french car, and i don't necessarily want that from a tool.<p>[1] - <a href="http://www.mlton.org/Performance" rel="nofollow">http://www.mlton.org/Performance</a><p>[2] - <a href="http://www.mlton.org/ForeignFunctionInterface" rel="nofollow">http://www.mlton.org/ForeignFunctionInterface</a><p>[3] - <a href="http://www.mlton.org/MLNLFFIGen" rel="nofollow">http://www.mlton.org/MLNLFFIGen</a><p>[4] - <a href="https://sss.cs.purdue.edu/projects/multiMLton/mML/Documentation.html" rel="nofollow">https://sss.cs.purdue.edu/projects/multiMLton/mML/Documentat...</a></p>
]]></description><pubDate>Fri, 04 Jul 2025 18:02:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=44466611</link><dc:creator>johnnyjeans</dc:creator><comments>https://news.ycombinator.com/item?id=44466611</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44466611</guid></item><item><title><![CDATA[New comment by johnnyjeans in "Writing a Game Boy Emulator in OCaml (2022)"]]></title><description><![CDATA[
<p>sml, specifically the MLTon dialect. It's good for all the same reasons ocaml is good, it's just a much better version of the ML-language in my opinion.<p>I think the only thing that ocaml has that I miss in sml is applicative functors, but in the end that just translates to slightly different module styles.</p>
]]></description><pubDate>Fri, 04 Jul 2025 16:25:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=44465842</link><dc:creator>johnnyjeans</dc:creator><comments>https://news.ycombinator.com/item?id=44465842</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44465842</guid></item></channel></rss>