HNHacker News
TopNewBestAskShowJobs

YuechenLi

314 karma · joined February 27, 2026

Oh boy.

yuechenli at outlook.com

submissionscomments
YuechenLi··on I toured Unitree's factory. I'm more bullish on the West
Well, after watching the video, I think Destin designed the product in the most expensive way possible for this application, using the progressive die sheet metal handle, multiple injection molded parts, fastener, and chainmail.

If I were to design it to be manufactured in the states, I would probably go for a simple wooden handle with off the shelf wire mesh instead of chainmail, and the fastening would just be mechanical fit between wrapped wire and handle with no additional fastener, which should massively improve price and manufacturability.

YuechenLi··on I toured Unitree's factory. I'm more bullish on the West
I don't really follow the logic in the article at all:

The argument is that Unitree's assembly process is currently very manual because there is no incentive to automate, which is because labor cost isn't the bottleneck here, where in the US labor cost are much higher, therefore the US will have incentive to automate more. Those are reasonable so far, until you try to use that as a conclusion that this is why the West will win?

First of all, what does he think the other 92% of the cost of manufacturing is? A small portion of that is materials and electricity, but the biggest part of the remaining cost is assembly tooling/fixtures for the assembly line, and a fully automated assembly line is much, much more expensive compared to a semi-automated or manual production line.

In other words: it's not that Unitree couldn't build fully automated assembly lines if they wanted to, but spending tens of millions of dollars fully automated assembly line that takes up floor space and requires even more labor for manual maintenance for a product that is only being produced by the hundreds to thousands in quantity every month rather than millions simply does not make economic sense to begin with.

Second, why is he assuming that a fully automated assembly line will be cheaper to build in the US than in China, especially since he toured a factory with fully automated assembly lines at BYD in China immediately after? And sure, I would absolutely argue that American software engineering is more efficient than Chinese when looked at as a whole, but the cost of programming an assembly line is a minor portion of the cost compared to actually getting the assembly line fixtures and tooling built.

Third, his cost estimate is way off if he thinks you can get the same product manufactured in the US for only 50% more. From my own anecdotal experience, a more realistic cost for US manufacturing for pretty much anything is minimum 300% to 1000% more expensive if you are to make the in the US, and the lack of a mature parts supply chain in the US is honestly a bigger issue than worker wage.

YuechenLi··on Ask HN: What's your current AI agentic setup?
Codex on Pro 100, Claude on Pro 20.

I don't even understand how people can spend thousands of dollars a month on LLM tokens since I've accomplished multiple major projects with this setup. In general, Claude's better at frontend and debug and Codex is better at feature implementation and research from what I've found, which is why I have both.

2. No. GPT 6.1 Sol is very token efficient that I pretty much never run out before the end of the week anyways.

3. Default Codex/Claude app. I only use VS/VSCode to hand-edit/git sync things when needed.

4. No. Swarm is a waste of token imo, and a single good human in the loop beats any automated orchestration tool.

5. I find it unnecessary.

YuechenLi··on C++26 Disapproved
A concept is a compile time requirement that bounds templates which are the generics in C++, so you are close.
YuechenLi··on Antimony: CAD Software Evolved from Lisp Machines and Not Drafting Tables (2015)
Build123D is also a OpenCascade wrapper I think, so it should output STEP files as well.
YuechenLi··on Antimony: CAD Software Evolved from Lisp Machines and Not Drafting Tables (2015)
>Step files are just "dumb" solids and are not useful if you actually want to edit a model's features or relationships.

Until now.

I've spent the last 7 months working on my Aetheris geometry kernel because I wanted to have a CAD software that uses STEP, specifically, AP242, as its native format instead of just an exchange format. Very happy to say that I've succeeded, as you can add dimensions and GD&T to STEP 203/214 files and convert them to 242 directly.

Directly editing an existing STEP file is still limited to moving through holes around though, but there is no reason why more advanced editing couldn't be done.

YuechenLi··on Pratt parsing is a black box
Recursive descent and Pratt are two different but related parsing methods. Pratt is simpler and recursive descent is more explicit, but it's not an "either/or" thing since a parser can use both methods.
YuechenLi··on Antimony: CAD Software Evolved from Lisp Machines and Not Drafting Tables (2015)
There is already a common exchange format between all the 3D parametric CAD had converged to: STEP files, and Parasolid x_t files to a lesser extent due to it being the dominant kernel on the market.

So, integration isn't really the difficult part if everybody generates files in the same format.

YuechenLi··on We're Training a Figma-Fluent Editing Model
So... I'm not quite sure why I would use this over using GPT/Claude/Gemini directly for design?

Bitter lesson, etc, and training an entire VLM to prevent text overlap seems a bit much, especially since GPT 6.* /Claude 5.*'s vision are good enough that it rarely ever happens for me, and if they do make a mistake, it's generally a 5 minute fix?

YuechenLi··on Antimony: CAD Software Evolved from Lisp Machines and Not Drafting Tables (2015)
Use Forge.Host for integration and call boundaries with Python. The Firmament DSL is probably a lot lower level than what most Code CAD is used to, because it's closer to LLVM IR of "build your own language frontend over kernel operation" type of deal.
YuechenLi··on Antimony: CAD Software Evolved from Lisp Machines and Not Drafting Tables (2015)
Would you be interested in evaluating (or having your LLMs check out) my geometry kernel Aetheris for your project? I already have DSL (called Firmament) parser/lexer/AST part down, and it is designed to be easy to extend, so you don't have to write everything from scratch.

https://github.com/yuechen-li-dev/Aetheris

One of my goals when I built the kernel is I want to make building a pro grade CAD software as easy as wrapping a web frontend around the Aetheris libraries. It's still very much an aspirational goal though.

YuechenLi··on Show HN: Nasscad – local-first 3D CAD for browser and Windows
Ok, I think I oversimplified it too much previously, the more accurate way to word the difference is that in OCCT/ACIS/Parasolid, NURBS and analytical surfaces are separate entities altogether, whereas SMLib, due to its heritage, uses NURBS as the underlying representation of everything and only use analytical surfaces as shortcuts, and even their analytical surfaces are built on top of NURBS.
YuechenLi··on Show HN: Nasscad – local-first 3D CAD for browser and Windows
MoL seems to be more of a Rhino alternative than it is a mCAD application, so, yes, the architecture that makes it good for freeform surface modeling is what makes it less good for mechanical engineering applications.
YuechenLi··on Show HN: Nasscad – local-first 3D CAD for browser and Windows
Hmmm. Have you tested the hard case, surface/surface intersections between cylinders yet?

For your application in IFC, the architecture difference between OpenCascade and SMLib doesn't matter as much, but a geometric modeling kernel for mechanical CAD has much stricter requirements in terms of geometric correctness, which is the reason that Rhino, despite being BRep and widely used in architecture, isn't used very much in mechanical CAD at all.

YuechenLi··on Show HN: Nasscad – local-first 3D CAD for browser and Windows
FreeCAD and Dune3D are both OpenCascade based, so they are limited by OpenCascade's architecture (For example, OpenCascade uses per-entity tolerances, which means it is more bad geometry import tolerant, but if every face and edge has its own tolerance value in the kernel representation, then it creates a great amount of hidden tolerance drift.)

SolveSpace is still fairly limited on what it can do in terms of features such as fillet/chamfers, so it's not really suitable for pro work right now

For projects like SolidCraft, the SMLib kernel they are currently porting to Rust from Nvidia is currently about a decade behind OpenCascade, nevermind Parasolid/ACIS as they are still converting all geometry to NURBS instead of preserving analytical geometry, which means that their initial development is easier but it creates a near infinite amount of edge cases once they start going heavy into booleans and fillet/chamfers.

YuechenLi··on Show HN: Nasscad – local-first 3D CAD for browser and Windows
From their Github, it looks like OpenCascade with Manifold for mesh boolean that they are calling MEDUSA.
YuechenLi··on Show HN: Popkern – open-source CAD kernel with G2 corner blends, browser IDE
Wow, I'm glad I'm not the only person insane enough to make a geometric modeling kernel solo with LLMs. Did a quick review of the architecture, it's probably the strongest conventional kernel that's currently open source, much more advanced than Truck or SolidCore/SMLib currently.

(I'd like to think my own kernel is little bit ahead of you architecturally though.)

How's the Boolean and fillet/chamfer robustness currently in Popkern?

Also, would you like to collaborate and compare notes? It's a lot of work trying to maintain something like this solo.

https://github.com/yuechen-li-dev/Aetheris

YuechenLi··on Type Server Protocol
Interesting. Look up "semantic compression", and you can also try out one of my experiments to see if it works for you.

https://github.com/yuechen-li-dev/GenerativeCompressionProto...

YuechenLi··on Type Server Protocol
Out of curiosity, may I ask what the big unrelated problem is?
YuechenLi··on Type Server Protocol
At this point, Python is less of a programming language by itself but more of an interop protocol between various C/C++/Fortran/Rust binaries. But again, it's just part of the cycle, Python was a breath of fresh air 10 years ago when academia is still dominated by Matlab, but now it is mostly a mess of a language that's good for throwaway scripts but not very convenient for large software projects compared to statically typed languages.
YuechenLi··on We should be more ambitious with the software we build
https://github.com/yuechen-li-dev/Aetheris

Already made the geometry kernel. So far, nobody has offered me even like 20 dollars to license it yet, nevermind millions of dollars.

YuechenLi··on Show HN: SolidCraft – Open-Source Parametric CAD in Rust (With MCP Support)
Aetheris generates STEP AP242 BREP directly, the tessellated mesh generated is only used for display (although currently, I've switched to a WebGPU based SDF representation so the surfaces can be smooth). One of the key differences in the architecture Aetheris doesn't export rational b-splines outside of debug or STEP passthrough and instead tries to recover and export analytical and non-rational splines instead.

On screw thread, if you mean by "how do you make a screw thread in Aetheris", you can check out the actual code for a threaded bolt I built for a showcase here with the JSON like DSL called Firmament:

https://github.com/yuechen-li-dev/Aetheris/blob/master/fixtu...

So, the high-level surface language of defining a screw thread is basically a struct/record that looks like:

    Thread MainThread {
        Surface: face(Bolt.Shank)
        MajorDiameter: 8mm
        Pitch: 1.25mm
        Length: 47.5mm
        StartOffset: 1.5mm
        }
Which is why I said that it's really hard to think of an editor UI for Aetheris that's not just a text editor or a ComfyUI like graph visual programming or something.

If you mean compile speed wise, not great right now, it wasn't that much of an issue when running on RyuJIT natively since it's still acceptable, but currently WASM cold compile speed for a moderately sized assembly is around 4-5 minutes so there is a lot more work to be done before I'm ready to put it on a cloud server.

YuechenLi··on Show HN: SolidCraft – Open-Source Parametric CAD in Rust (With MCP Support)
I think I've seen ports of OCCT to Rust as well as Rust wrappers for OCCT floating around Github once or twice already.

However, OpenCascade being C++ instead of Rust is the least of its problems, the main issue is OCCT's boolean/blend engines aren't really as robust as the commercial kernels, and handling arbitrary 3D boolean edge cases one by one correctly is one of the main difficulties of a geometry kernel.

Very interested in SolveSpace's progress on this really.

YuechenLi··on Show HN: SolidCraft – Open-Source Parametric CAD in Rust (With MCP Support)
Well, this is more similar to a linter/borrow checker than anything else, because if you catch errors at compile time, the bad geometry doesn't persist in the STEP artifact that's being generated, so analogous to the philosophy of Rust vs C++ really.

The current design is meant to be import tolerant but export strict, it imported most STEP file I throw at it fine after a bunch of fixes, but I don't really have a big enough sample corpus know for sure how much real world STEP file it can handle.

YuechenLi··on Show HN: SolidCraft – Open-Source Parametric CAD in Rust (With MCP Support)
A sliver is basically a tiny degenerate geometry in the micro/nanometer scale that's basically the result of ambiguous surface intersections. Basically, if you put two say, cylindrical surfaces against each other in NURBS form, floating point noise would generate these microscopic geometric noises, and a lot of what commercial kernel does is they use what they call "healing" operations to clean up those bad microscopic geometries from the models they generate.

Aetheris took a very obvious approach that not many have seemed to tried before: It throws an error when an operation that may create ambiguous intersections and refuses to materialize bad geometry in the first place, which is not really possible to do with traditional NURBS based kernels, whereas Aetheris can because it is analytical first.

YuechenLi··on Where is all the new, good software?
Yeah, the Photocraft (or whatever that photoshop clone name is, naming everything *craft just blends the names together in my head) program, for example, is way too slow in WASM to be usable, I think it ran on a single thread without using Worker and basic optimization features like that.

Just because you can throw tens of thousands of dollars at frontier LLMs doesn't mean what they write would be good, you still need to have some oversight for their work.

YuechenLi··on Show HN: SolidCraft – Open-Source Parametric CAD in Rust (With MCP Support)
> Creating a b-rep kernel is a phenomenal amount of work

Well, I did it, took 6 months, and I think I'm ahead of Truck on that front since as far as I can tell Truck can still only do single edge fillets with Newton's method as their new fillet algorithm, whereas my kernel can do planar fillet chains fairly reliably.

I wish someone would wrap a frontend around it too considering I'm bad at designing UIs, and the architecture is too weird to put a conventional 3D CAD UI on it that I'm honestly hoping someone would throw their LLM at that task.

https://github.com/yuechen-li-dev/Aetheris/

Also, sorry about the excessive self-promotion, but I think most people would be shouting from the mountaintop if they built a BREP geometry kernel from scratch solo too.

YuechenLi··on OpenSCAD the Programmers Solid 3D CAD Modeller
OpenCascade is an almost 30 year old C++ codebase that's known for being notoriously difficult to integrate.

The bigger issue is that OpenCascade is error tolerant to a fault, which allows it to import a lot more legacy geometries, but it also means that it silently exports a lot more bad geometries much more often than commercial kernels

So, there's a reason why commercial solutions don't really use OpenCascade over ACIS/Parasolid for authoring.

YuechenLi··on OpenSCAD the Programmers Solid 3D CAD Modeller
STEP is a weird standard and one of the reasons it's weird is because it allows you to store tessellated mesh in the file with no BREP. Wrapping an STL mesh inside a STEP container is trivial, but reconstructing a BREP from the mesh is daunting.

Here're are some SIGGRAPH 2026 papers attempting BREP recovery, if you are interested. None of their automated approaches seem to work reliably, and they can only recover generic NURBS instead of analytical geometries like circles/cones/torii, etc.

https://github.com/AutodeskAILab/DualBrep https://github.com/yilinliu77/Brepler https://rilpraa0110.github.io/Img2CADSeq/

YuechenLi··on Vibe coded browser ports of Halo, The Simpsons: Hit And Run, GTA work well
What I'm interested in is their performance, since I would assume that they are running in WebAssembly from reconstructed C/C++ code decompiled from binary, what would be the overhead on that compared to running on native? And how does running on WebGPU compared to running with native through DirectX/OpenGL?
Page 1 of 5Next →