MurphyA/hacker-news huggingface dataset:
Show HN: C++ for Autonomous Driving – From Learning to Landing AV Jobs
by ysy63874 | 2025-12-03 13:43:11+00:00
Hi HN,

I’ve been working on low-level autonomous driving development in C++ (perception, localization, planning, control) for the past year and collected everything I actually use into one repo:

https://github.com/0voice/Awesome-CPP-Autonomous-Driving

Current sections:

Learning Roadmap – From modern C++ to ROS2 to real-time systems Core Topics Explained – Key C++ implementation details for perception, localization, planning, and control Learning Resources – Curated courses, books, and classic papers Datasets – KITTI, nuScenes, Waymo Open, etc. with C++ loading examples Toolchain – TensorRT, Eigen, PCL, CUDA, and other production tools Open-Source Projects – Hand-picked C++-heavy projects (Apollo, Autoware, OpenPCDet, etc.) Autonomous Driving News & Articles – Latest 2025 news reports and in-depth articles Interview Questions – Real high-frequency C++ questions from Chinese AV companies Job Openings – Continuously updated C++ autonomous driving positions (domestic & international)

Everything listed is something I’ve personally used, been asked in interviews, or shared with teammates.

Still updating regularly. If you work with C++ in autonomous driving or are preparing for related roles, hope this helps.

Stars, issues, contributions, or just a quick comment are all welcome.

Thanks for reading!
by patrickk | 2025-12-03 13:44:26+00:00
> The monstrously large (5.8 meters) G63 6x6 is considerably rarer (i have never seen one in person).

Those kinds of exotic variants are for the Dubais of the world, for rich Arabs to power up and down sand dunes, not for the Autobahn and narrow medieval streets. I’ve only seen it at a motorshow.
by theandrewbailey | 2025-12-03 13:44:36+00:00
I made the switch earlier this year, only to get a job at an e-waste recycling company where I install Linux on laptops and desktops. Coincidentally, I also de-googled my phone at the same time (LineageOS, then GrapheneOS). The only place where I use Windows anymore is my retro desktop with Windows 98.
Show HN: AI Reasoning Workflows – The 6 Skills That Improve Model Output
by ai_updates | 2025-12-03 13:44:52+00:00
I’ve been experimenting with a simple idea: most AI performance problems are not model limitations, but task specification limitations.

Over the past months I’ve tested a set of reasoning workflows that significantly improve output quality for both small and large models. They’re not about “prompt tricks” — they’re about structuring a task so the model can reason cleanly.

Here are the 6 core skills that consistently make the biggest difference:

1. *Decomposition* – splitting a vague task into constraints, context, steps, assumptions. 2. *Constraint stacking* – defining what must be true and what must not happen. 3. *Reasoning path control* – explicit “think aloud but check your assumptions” steps. 4. *Refinement loops* – generate → critique → adjust → regenerate. 5. *Verification passes* – hallucination checks using independent re-reasoning. 6. *Output benchmarking* – defining evaluation criteria before generating anything.

I wrote up an overview of these workflows, with examples and a full breakdown here: https://dailyaiguide.substack.com/p/ai-reasoning-workflows-t...

If anyone is interested, I can also share: - detailed decomposition frameworks, - verification chains, - or optimized workflows for specific tasks (analysis, learning, planning, writing).
by TuxSH | 2025-12-03 13:45:04+00:00
> I can't make sense of modern C++

A lot of it is about making metaprogramming a lot easier to write and to read.

No more enable_if kludges since if constexpr (and concepts for specific stuff); and using concepts allows to better communicate intent (e.g.: template<typename I> can become template<std::integral I> if you want the template to be used only with integer types, and so on)
by IgorPartola | 2025-12-03 13:45:07+00:00
Technically so was BitBucket but it chose mercurial over git initially. If you are old enough you will remember articles comparing the two with mercurial getting slightly more favorable reviews.

And for those who don’t remember SourceForge, it had two major problems in DevEx: first you couldn’t just get your open source project published. It had to be approved. And once it did, you had an ugly URL. GitHub had pretty URLs.

I remember putting up my very first open source project back before GitHub and going through this huge checklist of what a good open source project must have. Then seeing that people just tossed code onto GitHub as is: no man pages, no or little documentation, build instructions that resulted in errors, no curated changelog, and realizing that things are changing.
by torginus | 2025-12-03 13:46:30+00:00
Awesome blog post - thanks to this I found out that you can view what the LLVM optimizer pipeline does, and which pass is actually responsible for doing which instruction.

It's super cool to see this in practice, and for me it helps putting more trust in the compiler that it does the right thing, rather than me trying to micro-optimize my code and peppering inline qualifiers everywhere.
by nyeah | 2025-12-03 13:46:47+00:00
Yeah, I wonder how exactly he meant that. I doubt that Von Neumann believed in random plug-and-chug, which is what I'd probably mean if I said I had given up on understanding something. Possibly von N was being very careful and cautious about what "understanding" means.

For example there's a story that von Neumann told Shannon to call his information metric entropy, telling S "nobody really understands entropy anyway." But if you've engaged with Shannon to the point of telling him that quantity seems to be the entropy, you really do understand something about entropy.

So maybe v N's worry was about really undertanding math concepts fully and extremely clearly. Going way beyond the point where I'd say "oh I get it!"
by djmips | 2025-12-03 13:46:48+00:00
>One somewhat radical thing that LLVM-MOS does is to analyze the program's call graph, and for functions that are not used recursively it will assign parameters and local variables to zero page instead, both for speed of access and to avoid need for a stack frame. Even though this violates the WYSIWYG mental model, this is a nice abstraction of what the assembly language programmer would have done themself.

very nice, it sounds similar to the 'compiled stack' concept. I've seen that here in the co2 language for the 6502

"Variables declared as subroutine parameters or by using let are statically allocated using a "compiled stack", calculated by analyzing the program's entire call graph. This means scopes will not use memory locations used by any inner scopes, but are free to use them from sibling scopes. This ensures efficient variables lookups, while also not wasting RAM. However, it does mean that recursion is not supported."

https://github.com/dustmop/co2
by Balgair | 2025-12-03 13:47:10+00:00
All value is derived from labor.

Marx agrees on this, Adam Smith agrees on this, John Locke agrees on this, heck even Keynes agrees on this; all (sensible) economists agree on this. If you do not have labor somewhere in the process, you do not have value.

“Equal quantities of labor, at all times and places, may be said to be of equal value to the laborer. In his ordinary state of health, strength and spirits; in the ordinary degree of his skill and dexterity, he must always lay down the same portion of his ease, his liberty, and his happiness. The price which he pays must always be the same, whatever may be the quantity of goods which he receives in return for it. Of these, indeed, it may sometimes purchase a greater and sometimes a smaller quantity; but it is their value which varies, not that of the labor which purchases them.” says Smith.

From this Smith concludes that “labor alone, therefore, never varying in its own value, is alone the ultimate and real standard by which the value of all commodities can at all times and places be estimated and compared. It is their real price; money is their nominal price only.”

It's a bit long winded (brief by his standards, though), but the essence is that labor ultimately determines if there is value. But, critically, not the amount of value. Marx would say that the amount of value is the amount of effort that goes into the commodity, something we now know not to be true.

Still, the point here with AI:

If the labor in the products and services that AI produces goes to 0, then the value of those goods and services must also go to 0.

As a brief example, look at chess or F1 racing. There are chessbots that can beat any human, there are F1 robots that can outrace and win against any human. Yet still, we find no value in watching a robot beat up on a human or on another robot. No-one watches or cares to watch those kinds of competitions. We only care to watch other humans compete against each other. There are many reasons for this, but one is that there is labor involved in the competition.
by sloaken | 2025-12-03 13:47:24+00:00
Ok I will give you a simple method to separate the 2 groups of nerds and hustlers. Now this is not fool proof, but is good for about 80% of the time.

If they approach you - Hustler.

If you HAVE to start the conversation - Nerd - you might have to restart it too.

Most nerds are so involved in tech that they do not spend time working on social skills.

Most hustlers skip the tech and refine their social skills.

So find some techie forums / meetup / events and start interacting.

Myself I can fake social for about 15 to 30 minutes, but then I am exhausted. And I could not hustle my way out of a paper bag.
by perihelions | 2025-12-03 13:47:36+00:00
Could be this one, perhaps?

https://news.ycombinator.com/item?id=43208973 ("Zelensky leaves White House after angry meeting (bbc.com)")

5044 comments, or 5349 with "showdead"

I used a null query,

https://hn.algolia.com/?query=&sort=byPopularity
by stevenjgarner | 2025-12-03 13:47:39+00:00
The required revision that current physics models use to forecast tsunami hazards is to move away from the classic assumption that great tsunamis are largely non-dispersive waves that travel as a single packet, as the new satellite data shows a complex, dispersive pattern of energy spreading across the ocean. Tsunami forecasting models must now be revised to incorporate dispersive effects and quantify this energy to more accurately predict the wave's timing and force as it approaches the coast.

Research paper: SWOT Satellite Altimetry Observations and Source Model for the Tsunami from the 2025 M 8.8 Kamchatka Earthquake https://pubs.geoscienceworld.org/ssa/tsr/article/5/4/341/718...,
by binaryturtle | 2025-12-03 13:47:58+00:00
The PAL release is already the bad copy (starting with season 4 I think). You already had odd stuff in view that wasn't supposed to be visible.

The only way to watch this show properly now is the 4:3 NTSC DVD release.

I think the recent streaming releases also have the music altered in many places. The show just got <bleep>ed up basically. It's a real shame.
by adornKey | 2025-12-03 13:47:59+00:00
The desire to hide all traces where a proof comes from is really a problem and having more context would often be very helpful. I think some modern authors/teachers are nowadays getting good at giving more context. But mostly you have to be thankful that the people from the minimalist era (Bourbaki, ...) at least gave precise consistent definitions for basic terminology.

Mathematics is old, but a lot of basic terminology is surprisingly young. Nowadays everyone agrees what an abelian group is. But if you look into some old books from 1900 you can find authors that used the word abelian for something completely different (e.g. orthogonal groups).

Reading a book that uses "abelian" to mean "orthogonal" is confusing, at least until you finally understand what is going on.
by davidee | 2025-12-03 13:49:05+00:00
I've been contemplating this for almost two years. Gitlab has gotten very bloated and despite disabling a number of services in the config, it continues to require increasingly more compute and RAM; we don't even use the integrated Postgres database.

There are a few things that keep me on Gitlab, but the main one is the quality of the CI/CD system and the gitlab runners.

I looked at Woodpecker, but it seems so docker-centric and we are, uh, not.

The other big gulf is issues and issue management. Gitlab CE is terrible; weird limitations (no epics unless you pay), broken features, UX nightmares, but from the looks of it Forjego is even more lacking in this area? Despite this seeming disdain, the other feature we regularly use is referencing issue numbers in commits to tie work together easily. On this one, I can see the answer as "be the change - contribute this to Forgejo" and I'm certainly willing. Still, it's currently a blocker.

But my hopes in putting this comment out there is that perhaps others have suggestions or insight I'm missing?
by rincebrain | 2025-12-03 13:49:40+00:00
I've been really curious precisely what changed, and what sort of optimization might have been involved here.

Because offhand, I know you could do things like cute optimizations of redundant data to minimize seek time on optical media, but with HDDs, you get no promises about layout to optimize around...

The only thing I can think of is if it was literally something as inane as checking the "store deduplicated by hash" option in the build, on a tree with copies of assets scattered everywhere, and it was just nobody had ever checked if the fear around the option was based on outcomes.

(I know they said in the original blog post that it was based around fears of client performance impact, but the whole reason I'm staring at that is that if it's just a deduplication table at storage time, the client shouldn't...care? It's not writing to the game data archives, it's just looking stuff up either way...)
by tialaramex | 2025-12-03 13:50:11+00:00
It's funniest when they're making keywords.

"Hmm, we need a new keyword to express this complicated idea about how geese move, in other languages they seem to use the keyword fly"

A1: Just re-use this existing four letter keyword 'swim'. Yeah, technically a goose can also swim but that's different, and the ideas aren't similar, and the implementation is entirely different, but this way we didn't need a new keyword so it's less work for a compiler right?

A2: Simple, new keyword complicated_goose_motion - why are people not happy with that?

At some point a noob will ask "Hey why can't we just name it `fly` like in Other Language?" and they will be ridiculed because of course several C++ companies have used the word fly as an identifier in software, and so reserving that word would incur a slight annoyance for them, whereas just forcing either A1 or A2 avoids a little work for those companies and is thus better...
by sph | 2025-12-03 13:50:49+00:00
> Why build them if other can just generate them too, where is the value of making so many projects?

No offence to anyone but these generated projects are nothing ground-breaking. As soon as you venture outside the usual CRUD apps where novelty and serious engineering is necessary, the value proposition of LLMs drops considerably.

For example, I'm exploring a novel design for a microkernel, and I have no need for machine generated boilerplate, as most of the hard work is not implementing yet another JSON API boilerplate, but it's thinking very hard with pen and paper about something few have thought before, and even fewer LLMs have been trained on, and have no intelligence to ponder upon the material.

To be fair, even for the most dumb side-projects, like the notes app I wrote for myself, there is still a joy in doing things by hand, because I do not care about shipping early and getting VC money.
by myth_drannon | 2025-12-03 13:51:12+00:00
Right, it can do modern writing but anything older than a century ( church records and census)and it produces garbage. Yandex Archives figured that out and have CER in a single digit but they have the resources to collect immense data for training. I'm slowly building a dataset for finetuning TROCR model and the best it can do is CER 18% ... which is sort of readable.
by Yizahi | 2025-12-03 13:51:23+00:00
Well, it's not like it's a simple black and white situation, universally applicable to every debate in human history. Sometimes it is relatively better to be open-minded and able to change own opinion. Sometimes it is relatively better to keep pushing a point if it is rational and/or morally correct.

The reason why the latter stance is often popularized and cheered is because it is often harder to do, especially in the adverse conditions, when not changing your opinion has a direct cost of money or time or sanity or in rare cases even freedom. Usually it involves small human group or individual against a faceless corporation, making it even harder. Of course we should respect people standing against corporation.

PS: this is not applicable if they are "clearly wrong" of course.
by danaris | 2025-12-03 13:51:30+00:00
> Wildly varies depending on the human.

Sure. And the situation.

But the difference is, all humans are capable of it, whether or not they have the tools to exercise that capability in any given situation.

No LLM is capable of it*.

* Where "it" is "recognizing they made a mistake in real time and learning from it on their own", as distinct from "having their human handlers recognize they made 20k mistakes after the fact and running a new training cycle to try to reduce that number (while also introducing fun new kinds of mistakes)".
by threeducks | 2025-12-03 13:52:01+00:00
I can not say how big ML companies do it, but from personal experience of training vision models, you can absolutely reuse the weights of barely related architectures (add more layers, switch between different normalization layers, switch between separable/full convolution, change activation functions, etc.). Even if the shapes of the weights do not match, just do what you have to do to make them fit (repeat or crop). Of course the models will not work right away, but training will go much faster. I usually get over 10 times faster convergence that way.
by sumtechguy | 2025-12-03 13:52:07+00:00
I see the msvc arm compiler has not improved much in 20 years. The msvc arm was pretty odd when we used it in ~2003. We did not trust it at all. Think we had to get 4 or so compiler fixes out of MS for that project plus 3 or 4 library fixes. The x86 one was pretty solid. We were targeting 4 different CPU platforms at the same time so we could find things like that decently quickly. Most of the the time it was something we did that was weird. But even then we would find them. That one looks like maybe the optimizer back filled a nop slot?
by infecto | 2025-12-03 13:52:07+00:00
I am a senior engineer, I use cursor a lot in my day to day. I find I can code longer and typically faster than without. Is it on par with human? It’s getting pretty darn close to be honest, I am sure the “10x” engineers of the world would disagree but it definitely has surpassed a junior engineer. We all have our anecdotes but I am inclined to believe on average there is net value.
by locknitpicker | 2025-12-03 13:52:08+00:00
> Yeah, I don't want to be uncharitable, but I've noticed that a lot of stem fields make heavy use of esoteric language and syntax, and I suspect they do so as a means of gatekeeping.

I think you're confusing "I don't understand this" with "the man is keeping me down".

All fields develop specialized language and syntax because a) they handle specialized topics and words help communicate these specialized concepts in a concise and clear way, b) syntax is problem-specific for the same reason.

See for example tensor notation, or how some cultures have many specialized terms to refer to things like snow while communicating nuances.

> "wow, this could be written a LOT more simply"

That's fine. A big part of research is to digest findings. I mean, we still see things like novel proofs for the Pythagoras theorem. If you can express things clearer, why aren't you?
by tome | 2025-12-03 13:52:16+00:00
> 1. a description of how to carry out I/O that is performed by a separate system

> 2. does the I/O inside the function before returning

How do you distinguish those two things? To put my cards on the table, I believe Haskell does 2, and I think my Haskell effect system Bluefin makes this abundantly clear. (Zig's `Io` seems to correspond to Bluefin's `IOE`.)

There is a persistent myth in the Haskell world (and beyond) that Haskell does 1. In fact I think it's hard to make it a true meaningful statement, but I can probably just about concede it is with a lot of leeway on what it means for I/O to be "performed by a separate system", and even then only in a way that it's also true and meaningful for every other language with a run time system (which is basically all of them).

The need to believe that Haskell does 1 comes from the insistence that Haskell be considered a "pure" language, and the inference that means it doesn't do I/O, and therefore the need that "something else" must do I/O. I just prefer not to call Haskell a "pure" language. Instead I call it "referentially transparent", and the problem vanishes. In Haskell program like

main :: IO () main = do foo foo foo :: IO () foo = putStrLn "Hello"

I would say that "I/O is done inside `foo` before returning". Simple. No mysteries or contradiction.

https://hackage-content.haskell.org/package/bluefin/docs/Blu...
by matheusmoreira | 2025-12-03 13:52:36+00:00
> Might as well ask why anyone should pay for anything once it's been made.

Nothing wild about it. That's simply the reality of intellectual work. Only the first copy need ever be paid for. That is the true cost of creation. The cost of all subsequent copies is approximately $0 with 21st century computer technology.

All intellectual work is information. All information is bits. All sequences of bits are numbers. All numbers already exist in the abstract world of mathematics. We merely find them. A 20 kiB picture is just a number with 49,321 decimal digits. Creating that picture is just a process that somehow finds the right digits.

We humans are merely interesting number generators. We are anti-RNGs. Once the number has been generated, copying it is trivial.

Intellectual property exists to establish artificial scarcity. It's not real, it's completely made up and of questionable effectiveness.

Payment only ever makes sense before creation. People should be paid for their labor before they create, not for copies of the end result. Selling copies makes no economic sense.
by nicbou | 2025-12-03 13:53:24+00:00
I'm trying, but it's so hard!

I put my phone in a drawer. Everything's in silent mode. I have a fully disconnected, distraction-free iPad for reading and writing. Work only happens on the computer. There are no emails on the phone.

Yet, I can't fully disconnect. Every device, every account, every app mixes work stuff and personal life stuff. And software is so sticky! I can't just check one thing without my attention getting stuck on a notification badge, an email, a feed or some other thing that I should not pay attention to right now.

How do you people handle it?
by IgorPartola | 2025-12-03 13:53:40+00:00
So number of daily/weekly downloads on PyPI/npm/etc?

All these things are a proxy for popularity and that is a valuable metric. I have seen projects with amazing code quality but if they are not maintained eventually they stop working due to updates to dependencies, external APIs, runtime environment, etc. And I have see projects with meh code quality but so popular that every quirk and weird issue had a known workaround. Take ffmpeg for example: its code is.. arcane. But would you choose a random video transcoder written in JavaScript just due to the beautiful code that was last updated in 2012?