<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: YuechenLi</title><link>https://news.ycombinator.com/user?id=YuechenLi</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Fri, 26 Jun 2026 05:50:14 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=YuechenLi" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by YuechenLi in "Show HN: Nimic – Pure Python as a systems language with AOT compilation"]]></title><description><![CDATA[
<p>Oh, I wasn't referring to emitting LLVM IR directly from Nim, but that you should consider adding an MIR layer between your Nimic subset of Python and Nim instead of emitting Nim from Python directly. Otherwise, compilation would get difficult and adding new supported Python will get painful.</p>
]]></description><pubDate>Fri, 26 Jun 2026 00:03:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=48680812</link><dc:creator>YuechenLi</dc:creator><comments>https://news.ycombinator.com/item?id=48680812</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48680812</guid></item><item><title><![CDATA[New comment by YuechenLi in "Show HN: Nimic – Pure Python as a systems language with AOT compilation"]]></title><description><![CDATA[
<p>If it's possible and you intended for it to be a long-term project, I would suggest looking at designing an MIR for the Python to lower to and then lowering it to Nim, and that is probably the most valuable feature you can add to Nimic. That's what Rust had to learn the hard way, and that's how LLVM works, and having an intermediate representation means your compiler is going run into a lot less edge cases during development.</p>
]]></description><pubDate>Thu, 25 Jun 2026 17:23:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=48676574</link><dc:creator>YuechenLi</dc:creator><comments>https://news.ycombinator.com/item?id=48676574</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48676574</guid></item><item><title><![CDATA[New comment by YuechenLi in "Computer use in Gemini 3.5 Flash"]]></title><description><![CDATA[
<p>So... has Google provided a Codex/Claude Code equivalent to Gemini yet? I would like to use Gemini for coding tasks, but that's kind of difficult to do as I don't even know how to get Gemini to even "clone this repo and read the code in it for static analysis", much less open PRs in repos.<p>ChatGPT/Codex can do it, Claude can do it, why can't Gemini?<p>And no, I don't mean going through Antigravity, and personally I'm wary about LLMs having unsupervised access on my computer without explicit policy, so I really think Google is putting the cart before the horse here.</p>
]]></description><pubDate>Wed, 24 Jun 2026 23:06:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=48666662</link><dc:creator>YuechenLi</dc:creator><comments>https://news.ycombinator.com/item?id=48666662</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48666662</guid></item><item><title><![CDATA[New comment by YuechenLi in "Qualcomm to Acquire Modular"]]></title><description><![CDATA[
<p>I honestly think Mojo would be better served if it is just a high-level language for GPU programming that compiles down to PTX with clear Python/Rust interop boundaries instead of trying for the "one language, multiple computational model" thing that they seem to be going for. The programming model between CPU and GPU programming is very different: code that runs best on CPU with heavy branching behaviors should not be written the same way as massively parallel matrix multiplication oriented GPU code, which I think they will be forced to do in the MLIR level anyway.<p>So, you end up with a language that looks like Python, but doesn't behave like Python, and companies that adopt Mojo early with the promise of Python compatibility may find themselves running into edge cases with difficult to trace compiler error messages that would be nearly impossible to debug, especially with the addition of Zig style `comptime` as their metaprogramming model.</p>
]]></description><pubDate>Wed, 24 Jun 2026 22:05:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=48666169</link><dc:creator>YuechenLi</dc:creator><comments>https://news.ycombinator.com/item?id=48666169</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48666169</guid></item><item><title><![CDATA[New comment by YuechenLi in "Big AI labs are hiring philosophers"]]></title><description><![CDATA[
<p>I would say it is definitely a form of context, but when people think of LLM context windows in terms of coding is more technical context related: "what has been done before, what's the coding task at hand." etc.<p>However, I think that there is a philosophical portion to that context as well: "What problem is this feature supposed to help with? How would you verify that passing unit tests means that the code is working as intended? Does this feature need to exist at all?" LLMs usually need these to be provided to them explicitly since they are not good at inferring the correct intent compared to humans, otherwise they just make something that looks right but doesn't work right.</p>
]]></description><pubDate>Wed, 24 Jun 2026 21:29:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=48665853</link><dc:creator>YuechenLi</dc:creator><comments>https://news.ycombinator.com/item?id=48665853</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48665853</guid></item><item><title><![CDATA[New comment by YuechenLi in "Ask HN: How much coding should beginners learn in the AI era?"]]></title><description><![CDATA[
<p>Learning computer science theory is probably going to be more important for the future than writing code yourself, because LLM coding is here to stay, and the human's job is going to be guiding the LLMs effectively: the AIs are writing code that pass tests, but how would you know that you are having the LLMs coding the right things?<p>Personally, I think learning specific implementation of algorithms probably should take less of a priority compared to fundamental architectural understanding why these things are done in the first place: data structure, automata theory, interpreter/compiler methodologies, etc. You still have to learn how to code, even if you won't be doing a lot of coding directly yourself, because the fastest way to learn how to evaluate code is by writing code yourself.</p>
]]></description><pubDate>Wed, 24 Jun 2026 20:41:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=48665357</link><dc:creator>YuechenLi</dc:creator><comments>https://news.ycombinator.com/item?id=48665357</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48665357</guid></item><item><title><![CDATA[New comment by YuechenLi in "Big AI labs are hiring philosophers"]]></title><description><![CDATA[
<p>Strangely, I found that LLMs responds better to philosophical explanations alongside instructions when writing code than simple imperative tasks of "do this". For example, if you tell a frontier model "This is the feature I'm trying to implement, and this is the problem I intend to solve with it and the reasoning behind it.", you usually get a lot more reliable results that both pass tests as well as function as you intended, even if your spec isn't as detailed overall.</p>
]]></description><pubDate>Wed, 24 Jun 2026 20:24:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=48665187</link><dc:creator>YuechenLi</dc:creator><comments>https://news.ycombinator.com/item?id=48665187</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48665187</guid></item><item><title><![CDATA[New comment by YuechenLi in "Package Managers need global hooks"]]></title><description><![CDATA[
<p>>Are you sure? I'm pretty sure .deb and .rpm packages both allow that
Learned something new today. Thanks.<p>I think the other significant issue with the NPM ecosystem that makes it bad in particular is NPM's dependency management is genuinely the worst out of any package manager because of phantom dependency is the default: you can be using a package without ever knowing that you are using it because it is imported implicitly, and the JS ecosystem dependency is so weird that taking down a small package that that a major project depends on cripples the entire JS ecosystem, as shown in left-pad, and launching a cyberattack via npm can be as easy as putting malicious code in any small package that large, popular packages depend on and watch it propagate. This is not hypothetical, it has been done, repeatedly in fact, over the years.<p>TS is a good programming language, however NPM is a security nightmare, and somehow the collective reaction of everyone depends on the JS/TS ecosystem seems like a shrug and "oh well, what can you do".</p>
]]></description><pubDate>Tue, 23 Jun 2026 07:17:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=48641453</link><dc:creator>YuechenLi</dc:creator><comments>https://news.ycombinator.com/item?id=48641453</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48641453</guid></item><item><title><![CDATA[New comment by YuechenLi in "Package Managers need global hooks"]]></title><description><![CDATA[
<p>This seems to be primarily a problem with NPM, since it's the only package manager that I know of that allows for package authors to essentially run arbitrary post-install scripts silently package install.<p>Shai Hulud/Mini Shai Hulud happened because of this obvious glaring hole in the system, they even had the script to download an official copy of Bun to spread itself in case the targeted machine has hardened their security. So, the real question is not what other security features does a package manager need, it should be: why does a package manager have the ability to let package authors run arbitrary scripts silently on other people's computer in the first place?<p>It doesn't really matter how good your security system is if the front door is left wide open for anyone to walk through.</p>
]]></description><pubDate>Tue, 23 Jun 2026 06:00:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=48640929</link><dc:creator>YuechenLi</dc:creator><comments>https://news.ycombinator.com/item?id=48640929</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48640929</guid></item><item><title><![CDATA[New comment by YuechenLi in "Jobs and Software Is Fucked"]]></title><description><![CDATA[
<p>>I'm proud to say, I've managed to slay one of the giants, the only successful effort to my knowledge, and this only happened last year. But I did so by basically delegating to another of the giants; they turned out to be twins and we could do without one. The dirty way is the clean way because the alternative contains Lovecraftian geometries.<p>If you are interested, I've built an open source project specifically to solve this issue in game AI and it resolves the switch/if-else ladders pretty cleanly. It's C#, so it should work for .NET version of Godot as well, and I have a couple of sample MonoGame project on there to demonstrate that it works: HSFM + utility AI. Works not just for games, but weirdly for LLM orchestration too.<p><a href="https://github.com/yuechen-li-dev/Dominatus" rel="nofollow">https://github.com/yuechen-li-dev/Dominatus</a><p>Try it out, I don't want people to think I'm here just to self-promote, but I think this could be the thing that helps you slay the switch statement giants once and for all. If it helps you for your work, hey, powers to you.</p>
]]></description><pubDate>Tue, 23 Jun 2026 04:37:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=48640362</link><dc:creator>YuechenLi</dc:creator><comments>https://news.ycombinator.com/item?id=48640362</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48640362</guid></item><item><title><![CDATA[New comment by YuechenLi in "Tacky men with ridiculous glasses want you to wear them too"]]></title><description><![CDATA[
<p>You should be skeptical of industrial use case as well. Allowing any device with internet access and a camera on it onto the floor of most electronics manufacturing facility is a nonstarter, phones, smart glasses, or anything of that sort. The other thing is, smart glasses buy nothing over having PCs/assembly line machines with screens for HMI, and standard operating procedures can be printed on paper. Also, if you are actually an operator on an assembly line, wearing these glasses for 10 hours a day is the last thing you want at your job.<p>The case for them gets even worse for heavy manufacturing industry/trades, since you have to think about safety and liability now: what if these smart glasses fall into the machines and cause an accident? Can these smartglasses can withstand the environmental conditions in the workshop?</p>
]]></description><pubDate>Mon, 22 Jun 2026 23:00:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=48637644</link><dc:creator>YuechenLi</dc:creator><comments>https://news.ycombinator.com/item?id=48637644</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48637644</guid></item><item><title><![CDATA[New comment by YuechenLi in "Steam Machine launches today"]]></title><description><![CDATA[
<p>They are extremely common actually. Why do you think the standard iPhones only does USB 2.0 transfer speed? The high-speed signal pins are simply not there, but the connectors themselves are still standard compliant.<p>Lower transfer rate means less shielding is needed for the cable as well as the overmold, and enables longer and more flexible cables, as extra shielding stiffens the cables.</p>
]]></description><pubDate>Mon, 22 Jun 2026 22:18:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=48637073</link><dc:creator>YuechenLi</dc:creator><comments>https://news.ycombinator.com/item?id=48637073</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48637073</guid></item><item><title><![CDATA[New comment by YuechenLi in "Jobs and Software Is Fucked"]]></title><description><![CDATA[
<p>The industry will realize that while getting LLMs to write code is easy, getting LLMs to write good, production ready code is a skill all on its own, which simply must be done by a human and is not automatable to an LLM in any sense effectively. That will be the differentiating factor software engineering in the future, I think.<p>If I'm being blunt, if you are in the game industry, you probably have nothing to worry about in terms of LLM coding replacing you, because the tooling used in the gaming industry is as unfriendly to LLM coding as it gets: Heavily visual scripting based, extremely reflection heavy, and the code, Unreal C++ and Unity C#, looks like regular C++/C#, but doesn't behave like normal C++/C#. LLMs simply cannot reason about hidden implicit states effectively, so if the code looks right but doesn't act right, LLMs will simply get confused and start hallucinating.</p>
]]></description><pubDate>Mon, 22 Jun 2026 20:51:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=48636004</link><dc:creator>YuechenLi</dc:creator><comments>https://news.ycombinator.com/item?id=48636004</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48636004</guid></item><item><title><![CDATA[New comment by YuechenLi in "Steam Machine launches today"]]></title><description><![CDATA[
<p>Not quite right, USB-C ports are generally cheaper nowadays because they are smaller, consumes less material for plastic/metal, more easily automatable production wise in terms of tooling, and scale for them is a lot higher because of mobile usage. You don't really need extra production chips since the console USB-C ports are designed for PD and crippled 14/16 pin versions that only supports the USB 2.0 speed, because the high-speed pins literally do not exist on those.</p>
]]></description><pubDate>Mon, 22 Jun 2026 20:29:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=48635693</link><dc:creator>YuechenLi</dc:creator><comments>https://news.ycombinator.com/item?id=48635693</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48635693</guid></item><item><title><![CDATA[New comment by YuechenLi in "Steam Machine launches today"]]></title><description><![CDATA[
<p>Surprised that they have 4 USB-A and only 1 USB-C. With their power profile, Steam Machine should be powerable by a single USB-C cable on extended power range which should reduce the need for the power supply altogether and greatly simplify mechanical as well as thermal design, although the power electronic design would be more complex as a result.<p>I would also be expecting Wifi 7 support as well as unified memory considering they ordered custom AMD silicon. Understandable that it is a rather conservative design for their first generation though.</p>
]]></description><pubDate>Mon, 22 Jun 2026 17:50:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=48633470</link><dc:creator>YuechenLi</dc:creator><comments>https://news.ycombinator.com/item?id=48633470</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48633470</guid></item><item><title><![CDATA[New comment by YuechenLi in "Proportional-Integral-Derivative (PID) controllers"]]></title><description><![CDATA[
<p>I think the more valuable topic to study is feedback control loop in general as a part of control theory: gain, stability/oscillation damping, overshoot, hysteresis/minimum commit, and noise filtering strategies (low pass, Kalman, etc). Those are just very useful general concepts applicable to any kind of long running systems.<p>The actual PID controllers ,however, are actually really finicky to tune, and hard to reason about directly. Good for simple linear systems, but it falls apart as real life systems tend to be complex and nonlinear.</p>
]]></description><pubDate>Mon, 22 Jun 2026 17:35:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=48633218</link><dc:creator>YuechenLi</dc:creator><comments>https://news.ycombinator.com/item?id=48633218</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48633218</guid></item><item><title><![CDATA[Show HN: The Oct Programming Language for scientific programming]]></title><description><![CDATA[
<p>Apologies in advance if my writing is unclear.<p>First, why make another programming language? This came out of my general frustration with working with MATLAB and Python during grad school as well as at work. I'm a mechanical engineer; I write Python scripts for my own use semi-regularly. My issue with Python is that while writing easy, debugging Python code I wrote is hard once the code gets big. Sharing my Python code to colleagues is very difficult as most of them are less technical on coding than I am, so asking them to setup a full Python env just to run a script is out of the question.<p>Then, the Two-Language Problem for scientific computing: write the prototype code in Python/MATLAB and rewrite the performance sensitive code in C++/Rust when needed. The problem is that C++ and Rust are not very easy to learn and converting from a dynamically typed language like Python to a strict, statically typed language like Rust is not easy, especially for people who are not software engineers.<p>The name Oct is a reference to GNU Octave and started as my concept of what Octave should have been, and the name stuck. About 75k lines of Oct code are in the repo across experiments, libraries, and examples. Pretty much all of it is written by Claude/Codex, my role is only to prevent drift/hallucinations.<p>Features, in no particular order:<p>- Function first, statically typed, both interpreted and compiled: Oct code compiles to a Go binary via MIR codegen, runs on anything that Go runs at Go speed, and inherits Go's absurd compile speed, which means that a JIT is mostly unnecessary. 
- The entire Go ecosystem is available for Oct if you write a wrapper around it: Oct's `IO.Xlsx` library is `excelize`, Oct's builtin plot is `gonum/plot`, Oct's benchmark profiling is pprof, Oct's C interop is CGo.
- Boring syntax, easy to learn. If you know Rust/Go/C#/Swift, learning Oct would take a few hours at most. Vice versa, if you learn Oct, then you are halfway to knowing how to write Rust already;
- Octest, xUnit.NET style testing framework with `[Fact]/[Theory]` and various Asserts.
- Foundational SI unit built into the language and enforced by typechecker: you can't add Int<m> and Int<kg> together. Units also propagate.
```oct
fn StiffnessForce(K: Matrix<Float<kg/s^2>>, u: Vector<Float<m>>) -> Vector<Float<kg<i>m/s^2>> {
    return K @ u
    // Matrix<Float<kg/s^2>> @ Vector<Float<m>> → Vector<Float<kg</i>m/s^2>>
}
```
- You can't ignore errors, Oct is exception free and `null`/`nil`-free, all errors must be handled explicitly: `?` for propagation, `!` for unwrap, or fallible `match`. 
- Arrays and vector/matrix are separate but related concepts, with vectors/matrices explicitly defined as Rank 1 and 2 tensors, and Einstein notation for tensors is built into the language.
```oct
let c = a[i, k] * b[k, j]
```
- Octomata, Oct's own built in control system runtime, using explicit finite state machines and utility scoring as primitives for control systems.<p>```oct
package Main<p>flow DoorControl(openCmd: Bool, closeCmd: Bool, blocked: Bool) -> String {
    state Closed {
        when {
            case openCmd and blocked == false -> goto Opening
            else -> return "closed"
        }
    }<p><pre><code>    state Opening {
        when {
            case blocked -> goto Closed
            case closeCmd -> goto Closing
            else -> return "opening"
        }
    }

    state Closing { return "closing" }</code></pre>
}
```
Oct is very much a work in progress, but enough jank/bugs has been fixed that hopefully it wouldn't be embarrassing to show it off now, although rough edges still expected. So, would love some feedback.</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=48563191">https://news.ycombinator.com/item?id=48563191</a></p>
<p>Points: 4</p>
<p># Comments: 0</p>
]]></description><pubDate>Tue, 16 Jun 2026 22:34:19 +0000</pubDate><link>https://github.com/yuechen-li-dev/oct</link><dc:creator>YuechenLi</dc:creator><comments>https://news.ycombinator.com/item?id=48563191</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48563191</guid></item><item><title><![CDATA[The most efficient LLM prompt compression algorithm in the world]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/yuechen-li-dev/GeminiControlPacket">https://github.com/yuechen-li-dev/GeminiControlPacket</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47182260">https://news.ycombinator.com/item?id=47182260</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Fri, 27 Feb 2026 16:16:17 +0000</pubDate><link>https://github.com/yuechen-li-dev/GeminiControlPacket</link><dc:creator>YuechenLi</dc:creator><comments>https://news.ycombinator.com/item?id=47182260</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47182260</guid></item></channel></rss>