MurphyA/hacker-news huggingface dataset:
by harmmonica | 2025-07-24 16:01:52+00:00
Sounds like the author said this is indexed somewhat to California so thought I'd chime in. Your pessimism is legit, but some of the major ones are either already done or are in process in California and/or the city of Los Angeles in particular, which, although not the nimby capital of California, is pretty terrible as far as anti-change sentiment is concerned. Numbers 1, 3, 5, 8, and (sort of) 11 are either already done or are likely to happen.

And those are some of the most meaningful ones on the list because importantly they a) don't require government funds to execute b) decrease the cost to build. Best way to make places beautiful and walkable is to put more people in them because then the demand and funds become available for some of the items that require material funding.
by thewebguyd | 2025-07-24 16:02:31+00:00
Use your distro's package manager and repos first and foremost. Flatpak is also a viable alternative to distribution, and if enabled, comes along with some level of sandboxing at least.

"Back in the day" we cloned the source code and compiled ourself instead of distributing binaries & install scripts.

But yeah, the problem around curl | bash isn't the delivery method itself, it's the unsafe user behavior that generally comes along with it. It's the *nix equivalent of downloading an untrusted .exe from the net and running it, and there's no technical solution for educating users to be safe.

Safer behavior IMO would be to continue to encourage the use of immutable distros (Fedora silverbue and others). RO /, user apps (mostly) sandboxed, and if you do need to run anything untrusted, it happens inside a distrobox container.
by 9rx | 2025-07-24 16:02:34+00:00
> How much slower is it in comparison to other languages?

It's about the same as most other languages that aren't specifically optimized for C calling. Considerably faster than Python.

Which is funny as everyone on HN loves to extol the virtues of Python being a "C DSL" and never think twice about its overhead, but as soon as the word Go is mentioned its like your computer is going to catch fire if you even try.

Emotion-driven development is a bizarre world.
by legobmw99 | 2025-07-24 16:02:38+00:00
I think this is a very interesting way to think about and categorize languages. One of the reasons I've always preferred OCaml to Haskell, for example, is how less-escape-hatch-y mutation is. It's still not the preferred path, but it is certainly way closer to a first party feature and you won't immediately be asked to leave the room for suggesting using it to solve a problem.

You give up some stuff in exchange for this, of course!
by bix6 | 2025-07-24 16:02:40+00:00
My dream is for my section of my town to ban cars. It’s already heavy pedestrian but if the cars went away (and everyone had to walk or e-bike or mobility scooter in the zone) it would be a utopia. Sure there’d be some issues to address and frustrations but we’d figure it out. The net would be amazingly positive.
by jchw | 2025-07-24 16:03:02+00:00
This comes up now and again, somewhat akin to the Rust soundness hole issue. To be fair, it is a legitimate issue, and you could definitely cause it by accident, which is more than I can say about the Rust soundness hole(s?), which as far as I know are basically incomprehensible and about as likely to come across naturally as guessing someone's private key.

That said in many years of using Go in production I don't think I've ever come across a situation where the exact requirements to cause this bug have occurred.

Uber has talked a lot about bugs in Go code. This article is useful to understand some of the practical problems facing Go developers actually wind up being, particularly the table at the bottom summarizing how common each issue is.

https://www.uber.com/en-US/blog/data-race-patterns-in-go/

They don't have a specific category that would cover this issue, because most of the time concurrent map or slice accesses are on the same slice and this needs you to exhibit a torn read.

So why doesn't it come up more in practice? I dunno. Honestly beats me. I guess people are paranoid enough to avoid this particular pitfall most of the time, kind of like the Technology Connections theory on Americans and extension cords/powerstrips[1]. Re-assigning variables that are known to be used concurrently is obvious enough to be a problem and the language has atomics, channels, mutex locks so I think most people just don't wind up doing that in a concurrent context (or at least certainly not on purpose.) The race detector will definitely find it.

For some performance hit, though, the torn reads problem could just be fixed. I think they should probably do it, but I'm not losing sweat over all of the Go code in production. It hasn't really been a big issue.

[1]: https://www.youtube.com/watch?v=K_q-xnYRugQ
by Aurornis | 2025-07-24 16:03:05+00:00
> Making it a technical problem means it’s an arms race forever. Making it a regulation problem, if done right, can simply end the arms race.

“If done right” is doing a lot of work in that sentence.

The way hypothetical regulation is spoken of in abstract terms where it’s perfect, solves everything, and everyone complies perfectly is at odds with how regulation works in the real world.
by jerf | 2025-07-24 16:03:13+00:00
This technique makes me sad.

Not because it's a bad idea. Quite the contrary. I've sung the praises of it myself.

But because it's like the most basic way you can use a type system to prevent bugs. In both the sense used in the article, and in the sense that it is something you have to do to get the even more powerful tools brought to bear on the problem that type systems often.

And yet, in the real world, I am constantly explaining this to people and constantly fighting uphill battles to get people to do it, and not bypass it by using primitives as much as possible then bashing it into the strict type at the last moment, or even just trying to remove the types.

Here on HN we debate the finer points of whether we should be using dependent typing, and in the real world I'm just trying to get people to use a Username type instead of a string type.

Not always. There are some exceptions. And considered over my entire career, the trend is positive overall. But there's still a lot of basic explanations about this I have to give.

I wonder what the trend of LLM-based programming will result in after another few years. Will the LLMs use this technique themselves, or will people lean on LLMs to "just" fix the problems from using primitive types everywhere?
by user____name | 2025-07-24 16:03:17+00:00
> Nope, that is the gist that game devs then apply to ECS story.

What do you mean? ECS is simply a game programming pattern to implement an entity system.

> If you want to go down the rabbit hole, lets start with the first question, how are ECS systems implemented in any random C++ or Rust game code?

Conversely how would you implement it in a procedural language like C or Pascal? ECS is just a switch in emphasis from an array of structures (entities) to a structure of arrays (systems) paradigm. I fail to see what the Object Oriented paradigm has to do with any of it.
by iLemming | 2025-07-24 16:03:32+00:00
> specifically engendered by Python trauma

Well, yes, Python can sure feel pretty fucking awkward from both perspectives. It started as fully dynamic, then added type hints, but that's not the main problem with it, in my opinion, the problem that you're still passing around opaque objects, not transparent data.

Compare it with Clojure (and to certain extent Elixir as well). From their view, static typing often feels like wearing a suit of armor to do yoga - it protects against the wrong things while making the important movements harder.

- Most bugs aren't type errors - they're logic errors

- Data is just data - maps, vectors, sets - not opaque objects

- You can literally see your data structure: {:name "Alice" :age 30}

- The interesting constraints (like "end-date > start-date") are semantic, not structural and most static type systems excel at structural checking but struggle with semantic rules - e.g., "Is this user authorized to perform this action?" is nearly impossible to verify with static type systems.

What static types typically struggle with:

- Business rules and invariants

- Relationships between values

- Runtime-dependent constraints

- The actual "correctness" that matters

Static type systems end up creating complex type hierarchies to model what Clojure does with simple predicates. You need dependent types or refinement types to express what clojure.spec handles naturally.

Elixir also uses transparent data structures - maps, tuples, lists, and structs are just maps. It has powerful pattern matching machinery over type hierarchies - you match on shape, not class. Elixir thinks in terms of messages between processes and type safety matters less when processes are isolated.

Python's type hints do help with IDE support and catching basic errors, yet, they don't help with the semantic constraints that matter. They add ceremony without data transparency. You still need runtime validation for real invariants.

So Python gets some static analysis benefits but never gains a truly powerful type system like Haskell's, while also never getting "it's just data" simplicity. So yes, in that sense, Python kinda gets "meh" from both camps.
by avinassh | 2025-07-24 16:03:37+00:00
> How would this work differently?

I would like it to raise an error and then provide an option to continue or stop. Since continuing is the default, we need a way to opt in to stopping on checksum failure.

Not all checksum errors are impossible to recover from. Also, as the post mentions, only some non important pages could be corrupt too.

My main complaint is that it doesn't give developers an option.
by pydry | 2025-07-24 16:03:48+00:00
>The author then can't avoid but take a dig at Israel and Zionism - her point/connection is a bit hard to understand but also feels warped. The Emirates being part of the Abraham accords was one of the greatest signs of the possibility of cross-religious existence and cooperation in the region

It's a sign of little more than that the United States will throw its weight around on behalf of the Israeli regime, no matter how racist it is, even when doing so is diametrically opposed to the interests of the United States (which these days is almost always the case).

In the case of the Abraham accords, Trump's son in law traded normalization of ties with the regime for an (empty as it turns out) promise to the UAE that further colonial annexation of the West Bank was off the table. The accords led to a dramatic uptick (https://www.ohchr.org/en/press-releases/2021/11/un-experts-a...) in colonialist violence against Palestinians in the West Bank in the run up to Oct 7th.
by 90s_dev | 2025-07-24 16:04:04+00:00
Yeah exactly, this is why I stopped liking DSLs about 15 years ago, shortly after using Ruby extensively (probably not a coincidence) and converting to Clojure, where there was a large movement away from macros despite it being lisp. They're good in very isolated situations, and only when designed very carefully. This wm is quite possibly one of them; if you need more complexity than the macros here allow, and adding/changing macros only makes it worse, just use another wm.
by mk_chan | 2025-07-24 16:04:06+00:00
I’ve been using hacks to do this for a long time. I wish it was simpler in C++. I love C++ typing but hate the syntax and defaults. It’s so complicated to get started with.

https://github.com/Mk-Chan/libchess/blob/master/internal/Met... https://github.com/Mk-Chan/libchess/blob/master/Square.h
by tptacek | 2025-07-24 16:04:14+00:00
This is a canard.

What's happening here, as happens so often in other situations, is that a term of art was created to describe something complicated; in this case, "memory safety", to describe the property of programming languages that don't admit to memory corruption vulnerabilities, such as stack and heap overflows, use-after-frees, and type confusions. Later, people uninvolved with the popularization of the term took the term and tried to define it from first principles, arriving at a place different than the term of art. We saw the same thing happen with "zero trust networking".

The fact is that Go doesn't admit memory corruption vulnerabilities, and the way you know that is the fact that there are practically zero exploits for memory corruption vulnerabilities targeting pure Go programs, despite the popularity of the language.

Another way to reach the same conclusion is to note that this post's argument proves far too much; by the definition used by this author, most other higher-level languages (the author exempts Java, but really only Java) also fail to be memory safe.

Is Rust "safer" in some senses than Go? Almost certainly. Pure functional languages are safer still. "Safety" as a general concept in programming languages is a spectrum. But "memory safety" isn't; it's a threshold test. If you want to claim that a language is memory-unsafe, POC || GTFO.
by dragonwriter | 2025-07-24 16:04:24+00:00
> If you eat 4k calories but burn 5k, you'll lose a lot more weight than if you ate 1000 and burned 2000.

No, you’ll lose less weight (I mean, assuming the difference in what you are burning is from exercise, if you find a way, e.g. by some chemical intervention, to kick your metabolism up to burning 4× your baseline amount without doing additional exercise, this doesn't apply), because you have the same calorie deficit and more of the weight you lose (unless you are in fairly great shape to start with, more than 100% of the weight you lose!) will be fat, and it takes a greater calorie deficit to lose a pound of fat than a pound of muscle.

OTOH, most people want to lose fat and avoid losing muscle, so this is a good thing, but its not more weight loss.
by dagmx | 2025-07-24 16:04:25+00:00
That assumes you have the means to bring the production domestically first.

This is a confluence of the previous administration having the forethought to do this, before the current administration tried to kill the CHIPS act.

If they hadn’t done that, you likely wouldn’t have seen domestic production able to satisfy the needs.

Tariffs alone are a misguided cudgel.

Also your comment about a “major impact to the consumer” ignores that this is an increase in cost just for the silicon. There’s a lot of tariffs on different parts of the actual product.
by nurettin | 2025-07-24 16:04:26+00:00
2013 to learn some android I wrote a program which allows my wife to track every call, every sms, payments, and later whatsapp notifications, number of steps, vitals, current location, location history and current vehicle.

It is a hugely unsecure and foolish thing to do, but hilarious when she shows the report pages to her friends.
by zahlman | 2025-07-24 16:04:31+00:00
> I don't know if Rust is overhyped, it's calmed down again but at one point a recurring post on HN was "solved problem X... but written in Rust!", where the latter was the main selling point instead of e.g. the 10x performance boost that a lot of applications get from a rewrite to a lower-level language

Even the routine posts about uv seem to have settled down from that, honestly. The "written in Rust" fanfare is mostly contained to GitHub READMEs now. I still get the sense that it occupies quite a bit of mindshare in the background, though.
by alexjplant | 2025-07-24 16:04:43+00:00
The last time I built a PC was around a decade ago but I always bought AMD simply because they were cheaper for equivalent performance in the middle. Getting an adequate CPU for hundreds of dollars cheaper than the higher-end Intel chips meant that I could afford the second-highest-end GPU that NVidia had at the time. This made a lot more sense for gaming workloads as $300 towards the GPU had a much bigger effect on frame rate than $300 towards the CPU.

These days iGPUs run pretty much any game I care to play so it doesn't matter.
by AshleyJanssen | 2025-07-24 16:04:50+00:00
As one of the creators whose entire business relied on website clicks for long-form, high-quality content, which is now being amalgamated into AI slop, I can confirm that search clicks are WAY down. I write a free bi-weekly newsletter/blog, which has been the primary lead gen for my consulting business. No particular effort at SEO, but up until 6 months ago, I was highly ranked on many terms. Now, my newsletter signups and leads are almost at a standstill.
by qsort | 2025-07-24 16:05:04+00:00
It's also 50 bytes longer than the original. More LOC only because my Vim formats on save.

Whenever somebody comes up with some big brain idea with macros, ORMs, DSLs, 180 IQ templates, language extensions that even Haskell nerds would say are too much, there's a good chance that the grugbrained version is just as readable, just as concise without going against the language.

I'm this close to go completely nuts with this industry and commit to full butlerian jihad against anybody who goes higher in abstraction than ANSI C.
by fsckboy | 2025-07-24 16:05:21+00:00
a zillion comments here and it's not mentioned yet:

packages are installed as root/admin with elevated privilege

packages are run as ordinarly lusers

this is why curl|bash is a more dangerous thing to do.

traditionally, the people with the root password were experienced and trained for this type of analysis, but with personal machines this line of defense does not exist

yes, there are scripts also built into package installers. now you can understand why there shouldn't be, or at least the post-install script can be inspected (this is a major benefit of scripts)

all the noise you want to make about how different distros make the problem harder is part of the problem if your solution is to capitulate to practices which are unsafe-by-design
by tristor | 2025-07-24 16:05:22+00:00
I love a Jack Rose. Unfortunately it's hard to find any good Applejack. I bought some Laird's Apple Brandy that was supposed to be of a special release, thinking it'd be good, but it was very harsh and ended up (before a move) getting dumped. It's really difficult to find any decent Applejack, even though this used to be a quintessentially American drink.
by bevr1337 | 2025-07-24 16:06:35+00:00
I'm of the opinion that Erlang/Elixir are terrible for repeat tasks like a standard CRUD server over a SQL database. Because yes, it IS cumbersome! Behaviors and type hints only get so far, and it is exhaustingly slow to sit with epgsql in the REPL to figure out what a query actually returns.

I find them much better suited for specific tasks where there is little overlap or repetition.
by Romario77 | 2025-07-24 16:06:50+00:00
I think often times it's enough to have enums for known ints, for example and have some parameter checking for ranges when known.

Some languages like C++ made a contracts concept where you could make these checks more formal.

As some people indicated the auto casting in many languages could make the implementation of these primitive based types complicated and fragile and provide more nuisance than it provides value.
by nanfinitum | 2025-07-24 16:07:08+00:00
> "This also spills over into just basic big corp office politics. Technical work is very well suited to be increasingly eaten up by AI because of it’s D&D (definable and deterministic) property. So as more technical work is outsourced to the AIs, the value of someone who can manage the AIs to work faster, be more productive and present polished results to shareholders increases. In large organizations, the production process is often invisible to shareholders and upper management. They don’t see how the work was done, just what was delivered. So as AI makes execution cheaper and more commoditized, the perceived value of presentation, packaging, and strategic delivery rises. People who can align AI output with business goals, communicate clearly, and drive visible outcomes will increasingly hold power and not necessarily those doing the raw technical implementation. I understand that this may already be the case, but the scales will tip more in the manager’s favour."
by ryanjshaw | 2025-07-24 16:07:09+00:00
> What I want: throw an error when corruption is detected and let the code handle it.

I wonder what that code would look like. My sense is that it’ll look exactly like the code that would run as if the transactions never occurred to begin with, which is why the SQLite design makes sense.

For example, I have a database of todos that sync locally from the cloud. The WAL gets corrupted. The WAL gets truncated the next time the DB is opened. The app logic then checks the last update timestamp in the DB and syncs with the cloud.

I don’t see what the app would do differently if it were notified about the WAL corruption.
by pclowes | 2025-07-24 16:08:03+00:00
I like this approach, there are often calls for increased testing on big systems and what they really mean is increased rigor. Don't waste time testing what you can move into the compiler.

It is always great when something is so elegantly typed that I struggle to think of how to write a failing test.

What drives me nuts is when there are testing left around basically testing the compiler that never were “red” then “greened” makes me wonder if there is some subtle edge case I am missing.
by tptacek | 2025-07-24 16:08:40+00:00
I don't care, in part because the claim is false, but there's literally a guideline saying you can't do this, so I guess it's worth knowing that you're wrong too.

Please don't post insinuations about astroturfing, shilling, brigading, foreign agents, and the like. It degrades discussion and is usually mistaken. If you're worried about abuse, email hn@ycombinator.com and we'll look at the data.
by Proofread0592 | 2025-07-24 16:08:58+00:00
> “It’s like they’ve never seen a block,” says Hornbeck, an instructional coach at Beverly City Public Schools in New Jersey, describing how kids fumble when asked to stack just three blocks. “The things they do with the block when you’ve just shown them what to do is boggling.”

Whenever I see quotes about "kids these days can't do X", I'm always skeptical.

You remember the kids in your class that were just absolutely, indefensibly stupid? These quotes are probably talking about those specific kids. I seriously doubt out of a class of 30 kids, all 30 of them couldn't stack the blocks. It was probably the 5 kids in the class that are just stupid, and every class throughout the history of time has had those stupid kids, and always will.
by nunez | 2025-07-24 16:09:13+00:00
Maybe I'm reading the study wrong, but it doesn't seem like they accounted for caloric intake at all? https://www.pnas.org/doi/10.1073/pnas.2420902122

They accounted for total EE and basal EE, but the data they've supplied in the appendix doesn't track caloric intake.

This seems like a huge miss to me, as it is absolutely possible to have a sky-high TEE while being insanely fat (American football linebackers) and also having a low TEE and being skinny as a rail (by basically not eating, i.e. most fad diets).

Also, they categorize most of Africa as either horticulturalist, agropastoralist (why couldn't they say "farmers"???) or hunter-gatherer) despite the table at the bottom ranking their economies as "lowHDI", and the BEE for this cohort is N/A, which invalidates their PAL ratio (TEE/BEE).

idk this seems like a "fat ppl bad" study to me.