MurphyA/hacker-news huggingface dataset:
by phatskat | 2025-07-25 03:22:27+00:00
To me, the problem is distance. Once a project reaches a certain size, the distance between a thing like a component and where its styles live grows to be too far for mental context.

If you’re working on a page that gets variables from this file, component styles from a scoped style block, typefaces from one file, layout from another…it all becomes a bit much.

Pair that with tooling that doesn’t _seem_ to easily lend itself to discovery - with any function or method or variable in my Vue files, I can tell the LSP to Go to Definition and I’m there. But CSS classes? Maybe. Depends - is there a preprocessor? Is there an abstraction layer that makes it hard to follow? What if someone did an “oops” and overwrote a global style in a scoped block?

On smaller projects or regimented teams, keeping styles in a well-organized structure of CSS/SASS can definitely work. But once you have even a modest handful of imports, or you’re bikeshedding the discussion around how to name classes and variables, it gets unwieldy.

Anecdote time: when I came into my current workplace, our project was already a mess of sorts - Craft CMS, Vue, SASS, just for the frontend. Backend is a separate service that drives a lot of the main content (CMS side is secondary for marketing stuff). The style situation was a mix of SASS in folders for “general stuff”, “project specific stuff”, and “administrative portal stuff”. Oh and then scoped styles per component. There was no clear design language that was shared among teams - the Craft team largely did the original SASS work and painstakingly implemented the design team’s vision for everything from breakpoints to grids to colors to forms. But we weren’t really keyed in on that, and by the time I got there we were rolling up some…50? individual SASS imports plus scoped styles - yikes!

Last year we began the process of separating the various sites from each other - CMS keeps being CMS, customer frontend and admin areas are both separate projects. I made a push to adopt Tailwind and there were the expected “I don’t get it” people and i gave them the crash course on the naming conventions and using the docs. Add the Tailwind LSP and it’s really a no-brainer: we have one single CSS file, per project, that configures things like color tokens and base style overrides for eg breakpoints. Everything else is pure Tailwind.

I’m in a button, my button styles are all right there - no context switching, no hunting down disparate selectors, no worrying if someone slipped an !important into the code somewhere down the line and broke something for everyone else.

I was hugely skeptical of Tailwind some three years ago, gave it a shot, and wouldn’t go back at this point. Sure the syntax is verbose, and I embrace that over the hidden nature of your styles being defined in one (or several) places and your makeup being elsewhere.
by boroboro4 | 2025-07-25 03:22:41+00:00
I kinda agree on overall sentiment but it’s important to write it down: we went from

1. Court doing legislation by making decision on important topics, coming with reasoning, mostly building on previous reasoning and gradually changing things

2. Court makes a decision and then just build up a reasoning to support it, sometimes completely off

3. Court makes a decision without reasoning at all

I think 1 is reasonable, with 2 being bad and 3 being ugly.
by burnt-resistor | 2025-07-25 03:22:42+00:00
Cliché corporate leader herd mentality. In absence of leadership direction, do what everyone else is doing (and what the consultants recommend) including many rounds of layoffs and reorgs to simulate progress and achievement.

The problem is that multiple layoffs are terrible for morale and basically obliterate the motivation and mood of the remaining workers.

Reorgs are another common pattern of incompetent management that introduce chaos without bringing net positive value.

This is similar shit that happened in the '80's, '90's, and '00s and was captured culturally by Dilbert and Office Space.

Those who ignore the lessons of the past will make history rhyme once again.
by vtbassmatt | 2025-07-25 03:22:57+00:00
> Down Syndrome leads to an objectively worse outcome for the affected individuals. And their parents, I might add.

Please cite your sources and show your work.

My child with Down syndrome is a giant pain in my ass, I worry about him constantly, and there are days where I wonder “why me?”

The same is 100% true about my typically-developing daughter.
by mrbonner | 2025-07-25 03:23:57+00:00
The Glock, on the other hand, doesn't have a safety lever. Instead, it uses a double trigger pull mechanism to help prevent accidental firing. I've often wondered if a safety lever gives people a false sense of security. With the Glock, you must always assume the gun is ready to fire, which requires careful handling.

I thought most law enforcement and military agencies use the Glock as standard issue. Isn't it?
by wonderwonder | 2025-07-25 03:24:07+00:00
I was a neighbor... I was friends with the neighbors. I literally lived across the street from the home. I'm sure the nursing staff was nice and they got as great a life as one could have in a group home. I never claimed having downs invalidated anyone's existence, I simply stated that I don't think its a condition anyone would willingly desire if given an alternative.

Also they had an ambulance or fire truck there at least once every couple months.
by bsimpson | 2025-07-25 03:24:22+00:00
This is one of the things I find infuriating about the Subway in NYC.

There are local trains and express trains. Often, you'll have to wait on the platform for an extra ~10 minutes for a local (v.s. getting on the first available express).

Then partway through the journey, they'll declare that the local needs to go express to make up time. You'll be kicked off and told to wait for the next train.

To make matters worse, the next train is usually in the same predicament, so you end up waiting indefinitely (or giving up and finding another way home).
by matthewdgreen | 2025-07-25 03:24:46+00:00
And that is why we’ve continued to pay about 2.5-3% since the 1980s, despite the fact that every element of the card networks’ technical infrastructure and hence cost structure has radically changed since that time.

A simple way to determine whether “look, the burden of proof is on you to prove this is abusive” is the correct standard is this: try to get precise details on how much the underlying service costs, how much the various types of revenue are shared between card processors, Visa, and issuing banks. You’ll find that it’s almost impossible to get a clear picture of those details without signing an NDA. But if I’m wrong about this, come back to me with it and we’ll discuss how to use it to evaluate whether the fees are reasonable.
by optymizer | 2025-07-25 03:25:14+00:00
> Sucks that Lenovo doesn't think supporting Linux on your laptop is important.

This is the downside of not owning both software and hardware. The integration is lacking. I already gave money to Lenovo when I bought my laptop, and clearly they're not going to support Ubuntu. Maybe if I gave money to Ubuntu, they would support this hardware. It's worth a try, because leaving it at "sucks" is not acceptable.
by relaxing | 2025-07-25 03:25:38+00:00
> But if you have good reason to believe someone is after you, this is the only way to go.

What pray tell is this hypothetical threat? Who is this attacker who comes in your bedroom in the middle of the night to use lethal force against you, but gives you time to rouse, grab your weapon, and acquire target? Or they wake you by running in with full knowledge committed to memory of the layout of your house and your sleeping arrangements so that they can beat you to your gun safe? They’ve cased the joint but they’re not going to wait until you come out to get in your car in the morning?

If you believe someone is after you, your resources would be better spent getting support from others, or physically securing your living space, or getting the hell out of dodge.
by hn_throwaway_99 | 2025-07-25 03:26:43+00:00
> This is what happens when the MBAs and the bean counters take over. They cut the fat, then they slice right through the muscle and bone.

Agree with the first sentence, strongly disagree with the second.

Intel's problems over the past 15 or so years certainly wasn't that they had cut away all the "fat" and then into the "muscle and bone". It was they had gotten too fat and directionless. Indeed, one of the quotes from the letter regarding their foundry business is that they invested in the wrong things: "Over the past several years, the company invested too much, too soon – without adequate demand. In the process, our factory footprint became needlessly fragmented and underutilized. We must correct our course." If they had ruthlessly prioritized before (which may have included getting rid of ill-fated initiatives earlier) they would most likely be in a better position today.
by pizlonator | 2025-07-25 03:26:45+00:00
> By these definitions, doesn't that mean go is neither memory or thread safe?

Yes, with the caveat that you can't treat "memory safe" as a binary condition.

The strictest notion of memory safety is what I call GIMSO: "Garbage In, Memory Safety Out". I.e. there does not exist any sequence of bytes you could feed to the compiler that would result in a memory-unsafe outcome at runtime. Java aims for this. Fil-C does too. JavaScript also does.

But there are languages that I think it's fair to consider to be memory safe that offer escape hatches that violate GIMSO. Rust with `unsafe` is an example. C# with `unsafe` is another. Java if you include `sun.misc.Unsafe` (arguably it's not part of the language).

So I think if a language is memory safe, not thread safe, and the memory safety is gated on thread safety, then it's kinda fair to make statements like, "it's memory safe", if you have fine print somewhere that says "but the memory safety does not hold under the following kinds of races".

All of that said, I'd rather we just said that "memory safety" means what I call "GIMSO". But the ship has sailed. Lots of languages are called "memory safe" to mean something like, "you can get memory safety in this language if you obey certain idioms" - and in Rust that means "don't use unsafe" while in Go that means "don't race in certain ways".
by dang | 2025-07-25 03:27:19+00:00
We've banned this account for using HN primarily for ideological battle. Regardless of ideology, that's not allowed here. It's not what this site is for, and destroys what it is for.

https://news.ycombinator.com/newsguidelines.html

p.s. This isn't a response to this particular comment, but to the account's overall pattern of behavior, which is way over the line.
by archargelod | 2025-07-25 03:27:30+00:00
Nim[0] supports subrange types:

type Foo = range[1 .. 10] Bar = range[0.0 .. 1.0] # float works too var f:Foo = 42 # Error: cannot convert 42 to Foo = range 1..10(int) var p = Positive 22 # Positive and Natural types are pre-defined

[0] - https://nim-lang.org/docs/manual.html#types-subrange-types
by 7thaccount | 2025-07-25 03:28:03+00:00
Yes, it's most likely they saw some kind of sales meeting, but collusion also happens often. I watched a documentary not long ago about how smart they are about it now. For groceries the major chains just all report each product's price to the same company which then tells them how much they can mark up their products without being undercut. Is it illegal, almost assuredly yes. Is there anybody enforcing this anymore? No.
by lock1 | 2025-07-25 03:28:11+00:00
That's what I thought at first too. At first glance they look equivalent, telling API users what the expected result of a method call is. In that sense, both are equivalent.

But after experimenting a bit with checked exceptions, I realized how neglected exceptions are in Java. - There's no other way to handle checked exceptions other than try-catch block - They play very badly with API that use functional interfaces. Many APIs don't provide checked throws variant - catch block can't use generic / parameterized type, you need to catch Exception or Throwable then operate on it at runtime

After rolling my own Either<L,R>, it felt like a customizable typesafe macro for exception handling. It addresses all the annoyances I had with checked exception handling, and it plays nicely with exhaustive pattern matching using `sealed`.

Granted, it has the drawback that sometimes I have to explicitly spell out types due to local type inference failing to do so. But so far it has been a pleasant experience of handling error gracefully.
by ifeanyi_sa | 2025-07-25 03:28:29+00:00
The way I’m understanding it, it’s basically a way to turn your website into an MCP server by defining the list of tools your site has, is that correct?

Really cool idea! It’s true that the web isn’t yet agent-ready, and this could be an easy way to start that process. I think the main challenge that comes to mind is auth on the tool-calling side, unless I’m not understanding correctly
by oblio | 2025-07-25 03:28:29+00:00
Again, those prices aren't stable.

Nobody is investing half a trillion in a tech without expecting a 10x return.

And fairly sure soon those $20/month subscriptions will sell your data, shove ads everywhere AND basically only allow you to get that junior dev for 30 minutes per day or 2 days a month.

And the $200/month will probably be $500-1000 with more limitations.

Still cheap, but AI can't run an entire project, can't deliver. So the human will be in the loop, as you said, so at least a partial cost on top.
by crossroadsguy | 2025-07-25 03:28:31+00:00
I actually like Graphene's focus in Pixel. It is available in a lot of countries unlike Fairphone - via Pixel of course.

So Graphene is actually not limited to the developed/western world. As for not supporting other devices, I believe the reason could be the team size and the fact that the fragmented Android world is known for unique shenanigans of every OEM. Besides Google's update/upgrade cycle is another reason it is an appropriate choice.
by MPSimmons | 2025-07-25 03:29:29+00:00
Agree with your experiences. I've also found that if I build a lightweight skeleton of the structure of the program, it does a much better job. Also, ensuring that it does a full fledged planning/non-executing step before starting to change things leads to good results.

I have been using Cline in VSCode, and I've been enjoying it a lot.
by emmelaich | 2025-07-25 03:29:32+00:00
The odd thing is that RPN is actually pretty intuitive for people. It's the "language" of cash registers! I had never used cash registers, and I lent my HP rpn calculator to my girlfriend to use. I said it's a bit weird, do you need help.

She gave me the dirtiest "are you mansplaining me" look.

Using the HP was perfectly natural for her as she had used cash registers.
by matthewfcarlson | 2025-07-25 03:29:36+00:00
Relying on static power being significantly lower means the heat requirements for chips is easier. But that means the clock speeds are significantly slower since you can't switch as fast without melting the chip. In particular, I see challenges as MoS2 dissipates heats different than silicon. That said, we are solving this problem for stacked chips already (think 3d cache or 3d nand chips).
by physix | 2025-07-25 03:30:12+00:00
Talking about hilarious, we had a Close Encounter of the Hallucinating Kind today. We were having mysterious simultaneous gRPC socket-closed exceptions on the client and server side running in Kubernetes talking to each other through an nginx ingress.

We captured debug logs, described the detailed issue to Gemini 2.5 Flash giving it the nginx logs for the one second before and after an example incident, about 10k log entries.

It came back with a clear verdict, saying

"The smoking gun is here: 2025/07/24 21:39:51 [debug] 32#32: *5902095 rport:443 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 10.233.100.128, server: grpc-ai-test.not-relevant.org, request: POST /org.not-relevant.cloud.api.grpc.CloudEventsService/startStreaming HTTP/2.0, upstream: grpc://10.233.75.54:50051, host: grpc-ai-test.not-relevant.org"

and gave me a detailed action plan.

I was thinking this is cool, don't need to use my head on this, until I realized that the log entry simply did not exist. It was entirely made up.

(And yes I admit, I should know better than to do lousy prompting on a cheap foundation model)
by TheDong | 2025-07-25 03:30:28+00:00
> I mean, you're basically passing a pointer to another thread to processData()

And yet, "bytes.Buffer.ReadBytes(delim)" returns a copy of the underlying data which would be safe in this context.

The type system does not make it obvious when this is safe or not, and passing pointers you own across channels is fine and common.

> That code would never pass a human pull request review

Yes, that was a simplified example that a human or AI could spot.

When you actually see this in the wild, it's not a minimal example, it's a small bug in hundreds of lines of code.

I've seen this often enough that it obviously does actually happen, and does pass human code review.
by giantg2 | 2025-07-25 03:31:25+00:00
The fact that it's smaller changes two important factors for trigger systems - mass and geometry. Geometric differences for things like sear engagement or even travel of the striker before encountering the block can change how it functions. Mass is another critical element when it comes to dropping it and how the parts could move to release the striker, etc. These are the types of changes they tried to implement in the FCU update for the P320. The P365 is a completely different design for the FCU anyways. For all we know the fatal difference could be that the stamped housing for the P320 FCU flexes in a certain way to trigger the disconnect while the P365 is machined and doesn't flex as much or in the same way. Whether or not something like that would scale without affecting the desired weight or dimensions, I dont know. It certainly would affect price for larger stainless billet and more machining.
by crawshaw | 2025-07-25 03:31:33+00:00
All bets aren’t off, we empirically measure the safety of software based on exploits. C memory handling is most of its exploits.

Show me the exploits based on Go parallelism. This issue has been discussed publicly for 10 years yet the exploits have not appeared. That’s why it's a nice theoretical argument but does not hold up in practice.
by righthand | 2025-07-25 03:31:35+00:00
The fix command just upgrades or downgrades the package to the first-known-unaffected-version. Meaning if “audit” api is unaware of a modern version for the fix (due to cache or human latency), then you can be downgraded to when the version before the bug was introduced, for ex. 25 major versions prior or something.
by 7thaccount | 2025-07-25 03:31:36+00:00
Management consulting is a big one. It's illegal for companies to all tell each other their prices and costs. What isn't illegal? Apparently each firm hiring McKinsey who will tell you what your competitors costs and prices are because they have "industry knowledge". They'll then share your information too and then everyone can largely figure out how they can set prices above their marginal costs with some nice padding. It's probably still illegal, but it's what these firms do.
by BeetleB | 2025-07-25 03:31:48+00:00
> What pray tell is this hypothetical threat?

I said "if you have good reason to believe someone is after you". That precludes hypothetical threats.

People sometimes make enemies who threaten to kill them. Some of them actually try to kill them. Some of them are people who know them and their house/apartment intimately. Start looking around. Lots and lots of cases of people who get out on bail and kill the person in the next few days.

> They’ve cased the joint but they’re not going to wait until you come out to get in your car in the morning?

If you're going to kill someone, are you going to do it that openly, when it may be easier to do it in the home?

> If you believe someone is after you, your resources would be better spent getting support from others, or physically securing your living space, or getting the hell out of dodge.

I actually agree, with the caveat that only the last one works, and is not feasible for many.
by rayiner | 2025-07-25 03:32:14+00:00
The rise of the “shadow docket” is driven by changing behavior of litigants and the district courts. The main reason cases get on the shadow docket is litigants seeking, and district courts granting, TROs and preliminary injunctions against major executive or legislative actions without trials or often even full briefing. It can’t possibly be true that a district court can block a major action within days but the Supreme Court can’t correct it until years later through the regular appeal and certiorari process.
by kstrauser | 2025-07-25 03:32:30+00:00
"Well actually..."

That wasn't a prayer. It was a quote from Proverbs, a collection of pithy sayings and life advice. Other quotes from it include "above all else, guard your heart, for everything you do flows from it" and "pride goes before destruction, a haughty spirit before a fall". It's literally a book of, well, proverbs. Many are religious, but plenty of others are general life advice.
by derektank | 2025-07-25 03:33:25+00:00
Correcting what is essentially a developmental defect (albeit a defect that occurs in the germ cells rather than in the womb) isn't eugenics. It's not caused by any genes carried by the parents, it's caused by a failure in the development process, specifically meiosis. Would preventing fetal alcohol syndrome be eugenics? It's caused by changes in gene expression from alcohol exposure after all.
by phire | 2025-07-25 03:33:34+00:00
Keep in mind that the 2012 presentations dates to 10 months after Rust's first release, and its version of "Memory Safety" was collecting quite a bit of attention. I'd argue the definition was already changing by this point. It's also possible that Go was already discovering their version of "Memory Safety" just wasn't safe enough.

If you go back to the original 2009 announcement talk, "Memory Safety" is listed as an explicit goal, with no carveouts:

"Safety is critical. It's critical that the language be type-safe and that it be memory-safe."

"It is important that a program not be able to derive a bad address and just use it; That a program that compiles is type-safe and memory-safe. That is a critical part of making robust software, and that's just fundamental."

https://youtu.be/rKnDgT73v8s?t=463
by esafak | 2025-07-25 03:33:40+00:00
https://nim-by-example.github.io/types/distinct/

https://kotlinlang.org/docs/inline-classes.html

https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3320.htm

https://doc.rust-lang.org/rust-by-example/generics/new_types...