MurphyA/hacker-news huggingface dataset:
by ux266478 | 2025-12-04 23:04:20+00:00
Generally a good writeup, but the article seems a bit confused about undefined behavior.

> What is the dreaded UB? I think the best way to understand it is to remember that, for any running program, there are FATES WORSE THAN DEATH. If something goes wrong in your program, immediate termination is great actually!

This has nothing to do with UB. UB is what it says on the tin, it's something for which no definition is given in the execution semantics of the language, whether intentionally or unintentionally. It's basically saying, "if this happens, who knows". Here's an example in C:

int x = 555; long long *l = (long long*)&x; x = 123; printf("%d\n", *l);

This is a violation of the strict aliasing rule, which is undefined behavior. Unless it's compiled with no optimizations, or -fno-strict-aliasing which effectively disables this rule, the compiler is "free to do whatever it wants". Effectively though, it'll just print out 555 instead of 123. All undefined behavior is just stuff like this. The compiler output deviates from the expected input, and only maybe. You can imagine this kind of thing gets rather tricky with more aggressive optimizations, but this potential deviation is all that occurs.

Race conditions, silent bugs, etc. can occur as the result of the compiler mangling your code thanks to UB, but so can crashes and a myriad of other things. It's also possible UB is completely harmless, or even beneficial. It's really hard to reason about that kind of thing though. Optimizing compilers can be really hard to predict across a huge codebase, especially if you aren't a compiler dev yourself. That unpredictability is why we say it's bad. If you're compiling code with something like TCC instead of clang, it's a completely different story.

That's it. That's all there is to UB.
by cedilla | 2025-12-04 23:04:29+00:00
Ehh.

Everything you need to consider is really not that much when it comes to most typical consumer 3d printing projects. Mostly because they are usually about stuff like "fixing a broken tashcan". The engineers who made that bullshit plastic part that broke after a year probably knew all about area moment of inertia, but that doesn't mean I need to to print a replacement part that lasts longer - or not, in which case I'll just iterate on my process.

I really don't get the dismissiveness, and frankly, I've never experienced that from engineers in my life. They just seem delighted when someone, kid or adult, tinkes with additive manufacturing.
by defrost | 2025-12-04 23:05:23+00:00
Bang on.

.. and pretty much why I worded the first line of my comment above as I did.

Sea level changes, glacial retreats, etc will all change crustal pressures and impact the frequency, placement, and nauture of volcanic activity in times to come.

Not a lot of that in Ethiopa for now though (to the best of my current "haven't specifically looked at the map for this" gut feeling).
by zarzavat | 2025-12-04 23:05:29+00:00
> An aspiring teen could set up an RPi that modifies headers for all traffic on the network that the parental units never even know about

An aspiring teen could just have sex with another aspiring teen...

You won't stop teenagers from finding a way to be teenagers. Part of being a teenager is learning how to subvert the rules set by adults to fulfil one's hormonal imperative.
by grufkork | 2025-12-04 23:05:36+00:00
Indeed, there's almost always a solution to "inergonomics" in Rust, but most are there to provide a guarantee or express an assumption to increase the chance that your code will do what's intended. While that safety can feel a bit exaggerated even for some large systems projects, for a lot of things Rust is just not the right tool if you don't need the guarantees.

On that topic, I've looked some at building games in Rust but I'm thinking it mostly looks like you're creating problems for yourself? Using it for implementing performant backend algorithms and containerised logic could be nice though.
by akku779 | 2025-12-04 23:05:54+00:00
I've been spending my time working on https://synthchat.netlify.app. It's a technical communication platform where people can share their thoughts and ideas and have technical discussions about engineering without the baggage or disruption that comes with social media. I wanted the UI to be simple, straightforward, and just easy to use overall.

I built this because I feel like most platforms mix technical content with noise, algorithms, and engagement farming, which makes real discussion harder than it should be. Sometimes you just want a clean space to think, ask questions, and exchange ideas with other engineers. My hope is that Synth Chat gives people a place where the conversation is the main feature, not the distractions. I'm wondering what features would take the app to the next level and improve discussion around thought provoking ideas. Let me know if you have any suggestions.
by Quothling | 2025-12-04 23:06:09+00:00
I grew up in a Danish town of 20.000 people and two schools. In my school there were 3 dyslexic children. They went to the "special" class 4 hours a week. I'm not sure what to call it, "special" isn't the right word, but it's not just because my English is not sufficient to come up with the right name. It's because this was the place they put all the children with what we'd call disabilities today. Some of the students in the class were only in that class, others like my dyslexic classmate only went to the class those 4 hours a week. It was also a full age range from 0-9th grades. As you might imagine it didn't exactly work.

Today we know that 10% of the population is dyslexic. So those 3 children should've actually been 80. Some of those 77 children could be in the group of adults who can't read.

What is interesting to me is that you rarely see people rant about the dyslexic the way you see people talking about something like ADHD.
by crumpled | 2025-12-04 23:06:14+00:00
> then yes, that's vibe-carving.

This whole thread is a stretch, IMO. But, I like this phrase.

As a fabricator (large wood CNC, laser cutting and engraving, 3D Printing, UV Printing, Welding). I put engineering into a whole different job scope. I can make whatever you tell me really well, not vibe-carving.

I don't necessarily write the specs or "engineer" anything. I'm just saying, don't blame the medium, 3D printing. The fact is a fabricator is not necessarily an engineer, regardless of the medium.
by gwd | 2025-12-04 23:06:37+00:00
> For Go, I wouldn't say that the choice to avoid generics was either intentional or minimalist by nature. From what I recall, they were just struggling for a long time with a difficult decision, which trade-offs to make.

Indeed, in 2009 Russ Cox laid out clearly the problem they had [1], summed up thus:

> The generic dilemma is this: do you want slow programmers, slow compilers and bloated binaries, or slow execution times?

My understanding is that they were eventually able to come up with something clever under the hood to mitigate that dilemma to their satisfaction.

[1] https://research.swtch.com/generic
by myaccountonhn | 2025-12-04 23:06:40+00:00
There are a lot of lectures/speeches by the creator of elm and Richard Feldman that talk about how to think "functionally"

Here is one about how to structure a project (roughly)

https://youtube.com/watch?v=XpDsk374LDE

I also think looking at the source code for elm and its website, as well as the elm real world example help a lot.
by JackSlateur | 2025-12-04 23:07:15+00:00
p12, "industry standard" ? P12 is a joke, a binary fusion of the private and multiple certificate, protected by a weak password to "feel better"

p12 is cruft used by legacy software like active directory

Post 2005 people are using PEM (how is it non-standard, again ? Require conversion for legacy software that are more than 20 years-old, perhaps)
by frumplestlatz | 2025-12-04 23:07:44+00:00
> The early motivation-enhancing effects don't last very long.

They lasted me 12 years so far. Same dosage.

> The Adderall group rates themselves as having done much better, despite performing the same on the test.

A feeling of euphoria means your dosage is too high, and people without ADHD probably shouldn’t take these drugs.

If the studies involved people that were on the drugs normally, it’s also not a particularly surprising result. The drugs induce a very real chemical dependency, and you will not feel like yourself or that you are performing when you are off of them.

That is honestly my only complaint. Without the drug, I am essentially a vegetable. If I go cold turkey, I can barely stay awake. However, it’s still a lot better than my life was before.
by OhMeadhbh | 2025-12-04 23:07:48+00:00
Hi Bruce! If you make it back to the states we'll have to drink a beer and wax poetic about the 6809. Do you know if anyone ever implement the embedded RISC-V profile in hardware? Not everything I do on small systems needs a 48MHz 32-bit. But if I could get away with a low I/O count, why not use the $0.10 part? Also pretty sure I saw 8051 based SoCs going for $2. I bet if you looked hard enough you could find something like a 6502 for about the same price.

There's probably no reason not to get some of the CH32VXXX's to play with. Every now and again I have an application that needs very low power and I'm happy to spring for an MSP430. But every time I buy an MSP430, TI EoLs the specific model I bought.
by gkoberger | 2025-12-04 23:08:46+00:00
I guess I wonder what people think the AI bubble is.

Are you worried about the high valuations of the big AI companies (OpenAI, Nvidia, etc)? Then sure, that will correct over time. There will likely be 1-2 big winners.

But if you're talking about AI in general... right now is the least amount of money companies will be spending on AI ever. It will only go up. This isn't crypto.
by inferiorhuman | 2025-12-04 23:08:50+00:00
No, we're at the you're making an emotional argument backed by hyperbole and I'm moving on stage. Look at your language: punished, trolled, "any piece of software", "every piece of software", "it takes longer to write an error message than it does it just split a line correctly", "lawyer grasping at straws".

You're personally aggrieved because someone dared release a compiler that runs on windows but doesn't accept non-standard line endings. I've already addressed what you've said but you've responded with a bunch of handwaving because you're merely making an emotional argument.

If you'd like me at address what you wrote again:

it takes longer to write an error message than it does it just split a line correctly

It takes longer to write your tantrums than to configure your development environment correctly.
by wrs | 2025-12-04 23:08:51+00:00
> In Go, a slice is a fat pointer to a contiguous sequence in memory, but a slice can also grow, meaning that it subsumes the functionality of Rust’s Vec<T> type and Zig’s ArrayList.

Well, not exactly. This is actually a great example of the Go philosophy of being "simple" while not being "easy".

A Vec<T> has identity; the memory underlying a Go slice does not. When you call append(), a new slice is returned that may or may not share memory with the old slice. There's also no way to shrink the memory underlying a slice. So slices actually very much do not work like Vec<T>. It's a common newbie mistake to think they do work like that, and write "append(s, ...)" instead of "s = append(s, ...)". It might even randomly work a lot of the time.

Go programmer attitude is "do what I said, and trust that I read the library docs before I said it". Rust programmer attitude is "check that I did what I said I would do, and that what I said aligns with how that library said it should be used".

So (generalizing) Go won't implement a feature that makes mistakes harder, if it makes the language more complicated; Rust will make the language more complicated to eliminate more mistakes.
by LoganDark | 2025-12-04 23:09:38+00:00
From my lived experience and also from the preprint I love very much https://www.thetransmitter.org/spectrum/untangling-biologica... the autism spectrum is basically a collection of ways a brain can largely work differently than "normal". There's a limited number of these (4 according to current research). It's not that there's just individual small features that manifest in things like eye contact avoidance, over/understimulation, etc. it's that the entire brain will work a specific differently and result in a certain set of symptoms consistent with an autism diagnosis. I feel like autism helps form the basis that other neurological differences happen on top of, because it has such a large impact on how thinking and learning even works in the first place. Even in conditions like schizophrenia, psychosis, etc. you see thought loops or detachment from reality or delusions or any number of those kinds of dysfunctions but it all still happens on a base where there can be basically one of the four autisms; the autism seems to be a difference in the foundation that the rest of the brain is built on top of. It's very fascinating to me (I am very autistic). Of course I don't mean to say at all that each autistic type always results in the same brain function but just that usually other difficulties or differences are less fundamental than how autism changes practically everything.
by mieses | 2025-12-04 23:10:06+00:00
The use case is `ssh shortname` or `ssh shortname.lan` to a laptop on the same local network regardless whether the wired or wireless interface of the laptop is active.

An overlay like Tailscale MagicDNS might solve this but is complex.

Assigning the same name to 2 IP's (round robin DNS) will mean having to retry the ssh connection if the IP of the inactive interface is returned.

Failover bonding (mode 1) of the wireless and wired interfaces with MAC address spoofing so that the bonded interface maintains a consistent MAC address is reportedly not always supported by WiFi hardware and standards. Bonding may require manual reconfiguration when the laptop moves from the local network where "shortname" is used to an arbitrary WiFi network like airport or coffee shop.

Are there any solutions that satisfy single IP and reliable WiFi at the same time?

Linux used to be able to move the same IP between 2 interfaces depending on which was active. But it looks like advancements in Linux networking have killed this simple solution.
by CuriousRose | 2025-12-04 23:10:14+00:00
Just migrated from xcp-ng 7 to Proxmox 9.1 for a client this week.

Honestly the whole process was incredibly smooth, loving the web management, native ZFS. Wouldn't consider anything else as a type 1 hypervisor at this stage - and really unless I needed live VM migrations I can't see a future where I'd need anything else.

Managed to get rid of a few docker cloud VPS servers and my TrueNAS box at the same time.

I'd prefer if it was BSD based, but I'm just getting picky now.
by snuxoll | 2025-12-04 23:10:17+00:00
Especially since the second example only gives you a stringly-typed error.

If you want to add 'proper' error types, wrapping them is just as difficult in Go and Rust (needing to implement `Error` in Go or `std::Error` in Rust). And, while we can argue about macro magic all day, the `thiserror` crate makes said boilerplate a non-issue and allows you to properly propagate strongly-typed errors with context when needed (and if you're not writing library code to be consumed by others, `anyhow` helps a lot too).
by cardanome | 2025-12-04 23:10:18+00:00
This is a complete lie. Autistic advocacy group care a lot about people with higher needs.

Meanwhile autism speaks spends money for anti-scientific research to find out whether vaccines cause autism and how to find a "cure" for autism. Such a cure can not exist. Autism is something you are born with and that is part of you.

If you knew anything about autism then you would know that we speak about levels of care needs, not "low/high functioning". So either you are ignorant or did choose to use hurtful language.
by phibz | 2025-12-04 23:10:21+00:00
I feel like this misses the biggest advantage of Result in rust. You must do something with it. Even if you want to ignore the error with unwrap() what you're really saying is "panic on errors".

But in go you can just _err and never touch it.

Also while not part of std::Result you can use things like anyhow or error_context to add context before returning if theres an error.
by adrianmonk | 2025-12-04 23:10:22+00:00
Here's a video about how player pianos work:

https://www.youtube.com/watch?v=2GcmGyhc-IA

Basically, you have some pedals which generate a vacuum, and then everything is powered and controlled via vacuum. (The internet may not be a series of tubes, but a player piano literally is.)

Using vacuum to control things may seem very niche and exotic, but it was actually very common. Basically every car engine up through about the 1980s used vacuum to control the engine. Cars with a mechanical ignition system often used a vacuum advance to adjust the timing at higher RPMs, for example. Early cruise control systems used vacuum to adjust the throttle.

Anyway, all pianos have felt hammers which strike the string. When you're playing the piano manually, there's a mechanical linkage between the key you press and its hammer. In a player piano, there's another way to move the hammer: a vacuum controlled actuator. The piano roll has holes in it corresponding to notes. The holes allow air to pass through, and that causes the actuator to push the hammer into the string.

In that dance hall machine, which appears to be essentially a pipe organ, there are some similarities and some differences. A pipe organ works by blowing air through the pipes. There's a "wind chest" that stores pressurized air, and when you press a key on the keyboard, it opens a valve to let air into a particular pipe. In the old days, that linkage (between the key and the valve) was mechanical. These days it's electrical or electronic.

At the end of the video above, he even briefly mentions a band organ (which is similar to a dance hall machine) and how music rolls work for it, and it's a similar vacuum system to a player piano.

So I believe a dance hall machine with a music roll probably uses a combination of vacuum and positive pressure. The vacuum would allow reading the music roll (the paper with holes in it corresponding to notes), and that vacuum would actuate valves that allow positive pressure air into the pipes to make sound. In order to convert one of those to be controlled electronically, you could use a bunch of solenoid valves to either control the vacuum or directly control the air going into the pipes. I'm not sure which way they do it.
by oncallthrow | 2025-12-04 23:10:28+00:00
I don't agree. There isn't a standard convention for wrapping errors in Rust, like there is in Go with fmt.Errorf -- largely because ? is so widely-used (precisely because it is so easy to reach for).

The proof is in the pudding, though. In my experience, working across Go codebases in open source and in multiple closed-source organizations, errors are nearly universally wrapped and handled appropriately. The same is not true of Rust, where in my experience ? (and indeed even unwrap) reign supreme.
by ajsnigrutin | 2025-12-04 23:10:41+00:00
I mean... usually those tests check the correctness of answers too, so you're comparing students under the same circumstances, evaluating how much (writing, calculations.... whatever) they're able to do, correctly of course, within an alotted time period. If someone can correctly solve 17 math problems in that time and someone else can do 21, the second one is "better" than the first, since they're both faster and their answers are still correct.

They could extend the test time for everyone, but in reality, you won't get many time extensions in real life, where speed is indeed a factor.

If someone can do 21 correct answers in an hour and someone else needed two hours to do the same, due to a faked disability, it's unfair both to the 1-hour student and an actually disabled student who might be missing a hand and needing more time to write/type with a prosthetic.
by 999900000999 | 2025-12-04 23:10:41+00:00
Rust is hard because it's just difficult to read.

If you know Java, you can read C#, JavaScript, Dart, and Haxe and know what's going on. You can probably figure out Go.

Rust is like learning how to program again.

Back when I was young and tried C++, I was like this is hard and I can't do this.

Then I found JavaScript and everything was great.

What I really want is JS that complies into small binaries and runs faster than C. Maybe clean up the npm dependency tree. Have a professional commite vet every package.

I don't think that's possible, but I can dream
by kennykartman | 2025-12-04 23:10:52+00:00
I find this a nice read, but I don't think it captures the essence of these PL. To me it seems mostly a well crafted post to reach a point that basically says what people think of these languages: "go is minimal, rust is complex, zig is a cool, hot compromise". The usual.

It was fun to read, but I don't see anything new here, and I don't agree too much.
by kenjackson | 2025-12-04 23:11:29+00:00
On "parents and students alike have noticed that it's both a) easy to qualify for a disability" -- for the purposes of standardized testing we've found it extremely difficult and feedback we've heard from others on message boards echoes our experience.

I do feel like a test that is so focused on speed rather than ability seems like it loses a lot of its utility. There's a bunch of math I can't do. It doesn't matter if you give me an hour or two -- I won't be able to do it. But distinguishing between the ability to solve a problem in 30s versus 40s seems to be missing the point.
by publicdebates | 2025-12-04 23:11:42+00:00
I think it's common to be taught that UB is very bad when you're new, partly to simplify your debugging experience, partly to help you understand and mentally demarcate the boundaries of what the language allows and doesn't allow, and partly because there are many Standards-Purists who genuinely avoid UB. But from my own experience, UB just means "consult your compiler to see what it does here because this question is beyond our pay grade."

Interestingly enough, and only semi related, I had to use volatile for the first time ever in my latest project. Mainly because I was writing assembly that accessed memory directly, and I wanted to make sure the compiler didn't optimize away the variable. I think that's maybe the last C keyword on my bucket list.
by iisan7 | 2025-12-04 23:12:39+00:00
I appreciated the parallels in this idea to the concept of wu wei (無為), or achieving by doing nothing. The idea appears in writing attributed to Confucius and Lao Zi, that regarding political leadership, the best leaders can order their group or society even simply by the strong example that they set and correct judgments that they execute. This isn't meant to be carried to its extreme of course, a leader doesn't do nothing all day, and may indeed pitch in to work, but they should be making time to think and reflect. I read it as an ideal (you know when things are good when you can do nothing), not as an instruction (do nothing).