MurphyA/hacker-news huggingface dataset:
by saurik | 2025-09-22 16:11:28+00:00
"YAML" should mean something. When I saw GitHub Actions supported "YAML", I thought "OK, certainly not my favorite, but I can deal with that", and so I read the YAML specification, saw anchors, and then had to realize the hard way that they didn't work on GitHub Actions, leaving me unsure what even would or wouldn't work going forward. Is this even the only way it differs? I don't know, as they apparently don't use YAML :/.

This also means that, if you use an off-the-shelf implementation to parse these files, you're "doing it wrong", as you are introducing a parser differential: I can put code in one of these files that one tool uses and another tool ignores. (Hopefully, the file just gets entirely rejected if I use the feature, but I do not remember what the experience I had was when I tried using the feature myself; but, even that is a security issue.)

> Except: GitHub Actions doesn’t support merge keys! They appear to be using their own internal YAML parser that already had some degree of support for anchors and references, but not for merge keys.

Well, hopefully they also prioritize fixing that? Doing what GitHub did, is apparently still doing, and what you are wanting them to keep doing (just only in your specific way) is not actually using "YAML": it is making a new bespoke syntax that looks a bit like YAML and then insisting on calling it "YAML" even though it isn't actually YAML and you can neither read the YAML documentation nor use off-the-shelf YAML libraries.

Regardless, it sounds like your tool already supports YAML anchors, as your off-the-shelf implementation of YAML (correctly) supports YAML anchors. You are upset that this implementation doesn't provide you source map attribution: that was also a problem with C preprocessors for a long time, but that can and should be fixed inside of the parser, not by deciding the language feature shouldn't exist because of library limitations.
by eirikbakke | 2025-09-22 16:11:44+00:00
The PostgreSQL data directory format is not very stable or portable. You can't just ZIP it up and move it to a different machine, unless the new machine has the same architecture and "sufficiently" similar PostgreSQL binaries.

In theory the data directory works with any PostgreSQL binaries from the same major version of PostgreSQL, but I have seen cases where this fails e.g. because the binaries were from the same major version but compiled with different build options.
by wqaatwt | 2025-09-22 16:11:50+00:00
> de-nazification

It was very superficial, though. The German government was still full of nazis until the entire generation who held power in the nazis regime died out. They became extremely lenient and protective towards war criminals as soon as the allies stopped caring.

Of course that’s unlikely to work in Gaza since Hamas (and similar organizations) are inherently unwilling to compromise about anything unlike the [former] nazis in Germany.
by siva7 | 2025-09-22 16:11:56+00:00
The DSM is an international expert collection of acknowledged diseases - it just answers briefly the "what is this?" question, nothing more while the medical societies in your respective country implement the actual guidelines on how to diagnose and treat the diseases by using the recent scientific conclusions. So a MD isn't using the DSM to diagnose and treat you - this is a common misconception.
by IggleSniggle | 2025-09-22 16:12:09+00:00
Of course. And I thought I acknowledged that mentorship is many things and there are many things that we need to grow as individuals. I've had a lot of great mentors in my life.

I still think you've missed the point. You can be grateful for the many gifts you've received and still wish to have had engineering guidance from a trusted mentor. There is not enough time in a life to go down every single rabbit hole; it's nice to have experienced people accurately point out where the rabbit holes are. Non-engineers are not equipped to help spot engineering rabbit holes; they might even tell you that engineering itself is ultimately a pointless rabbit hole.

But even then...that's just my own experience and my own wishes for my past self. I try to give what I wish I had had, of course.. think that's what drives most mentorship, and maybe that's the point you're trying to make, that mentorship is given out of that wistful feeling of wishing you had received advice/help and passing along the lessons that took you too long to find.

But still, if your role is getting stuck alone in the server room or whatever with a team of people who don't understand or respect what you do, good luck.

The point I was trying to make (and maybe failed because I got too focused on my own experience) is that really, not everyone gets mentors, even of the broader sort that you're referring to (which I might say are more accurately called friends or peers). But even if we widen the scope of what mentorship is, it's also perfectly reasonable for field-specific mentorship to be a cultural expectation for software engineering. I think it's a good thing to expect this of each other, and to encourage explicitly making space for the practice.

But again, however you want to widen the scope of what mentorship is, not everyone is getting it. The reason people look under rocks is because they don't know where to look. Or they do know where to look but also know they have blind spots and don't know how to get them addressed. "Look up" is nice and all, but it's a bit rude and distracting when you're trying to build something and need help understanding the foundation below your feet. Sometimes you don't need someone telling you to look up, you need help seeing where to look closer.
by balamatom | 2025-09-22 16:12:28+00:00
>We don't have anything near as extreme in Western culture.

I'd argue that yes, you do.

>I'd argue that our quirk is that we constantly tell people to just be themselves

And this is the means by which you do that.

>in reality, it's often not what people actually want

That is true. Tbf I can't really imagine what could be accomplished by normalizing a blatant untruth about something as essential as the principles of who one should be and how their motivations should work; other than to signal "for the love of all that is holy don't examine the underpinnings of this too closely or all the common ground that the cultural edifice supposedly provides will begin to fall apart at the seams rather quickly"
by cosmic_cheese | 2025-09-22 16:12:35+00:00
Both are already happening.

Google markets Chrome relentlessly, with popups in search and YouTube if you're using other browsers, browser choice dialogs in Google iOS apps (despite iOS having a default browser setting for 5 years now), Chrome getting bundled into random Windows software installers, etc.

Many devs actively desire single-engine development and testing and many aren't shy about using Chrome only features already. If they had the capability to tell users to go install Chrome instead of targeting broadly supported features, they would do so in a heartbeat.
by sumuyuda | 2025-09-22 16:12:55+00:00
Local first isn’t limited to web apps. It’s a style of application development in which you locally store and operate on the data rather than fetching it from a cloud backend every time. For native apps that means a local database or individual files on the file system.

> phoning home, telemetry, and other privacy violations; forced upgrades; closed source, etc.

This describes proprietary software developed by capitalist companies. This has nothing to do with local first.
by theamk | 2025-09-22 16:13:04+00:00
Why introduce all-new langugage, like Dhall, just for configuration? This seems like a total waste of time. And you still need to use "real" language (or bash) to write glue to connect to github configuration.

The config generators are very simple, and should to be written in whatever language your developers already know - which likely means Python or Javascript or Go.
by xienze | 2025-09-22 16:13:08+00:00
> For example, the 9500 millionaires widely reported to be leaving the UK in 2024 represented 0.3% of the UK’s 3.06 million millionaires.

I think this study is a bit misleading. If the UK truly has 3M millionaires I strongly suspect a large majority of them are regular people with OK jobs that are “millionaires” by virtue of owning a house and having retirement savings. The vast majority of these people are likely making decent but not remarkable incomes and likely can’t afford to relocate to another country. Without breaking this down into income groups, this article seems fairly misleading. But that’s par for the course I guess, since media and politicians a) frequently conflate wealth with income and b) are counting on people thinking a net worth of a million (dollars|pounds) makes a person “rich.”
by SilverElfin | 2025-09-22 16:13:14+00:00
Yep. Rich can mean a lot of things. In Norway the wealth tax starts applying at about $150K USD of assets, which is a very low threshold. The pattern I see across countries is that over time the tax rates keep increasing and the thresholds at which apply keep coming down. And that is because governments are badly mismanaged most of the time and they rely on a tax base Ponzi scheme. When your tax base isn’t growing you have to extract more from the existing one. Rarely is efficiency or waste talked about.
by Workaccount2 | 2025-09-22 16:13:30+00:00
People generally have the sense that the internet is a free for all, and compensating creators is optional (i.e. I don't have to load the ads on your website if I don't want to, your ads are malware, your ads are scams, it's my eyes, etc. etc.).

I'm not sure why there would be an expectation from most users that AI should compensate creators.
by nu11ptr | 2025-09-22 16:13:30+00:00
> Does this use an external binary or CGO or Wazero (Wasm) or is it rewritten in Go?

Since Postgres is always a network connection, I don't believe any CGo is required.

> I try to avoid CGO if I can because it adds compile-time complexity, making it unfriendly for a user to compile.

Using zig as your C compiler mostly fixes this, but you can't 100% get rid of the complexity, but I've cross compiled using Zig cc to Windows/Mac/Linux pretty easily via CGo.
by wqaatwt | 2025-09-22 16:13:50+00:00
> the Likud Party the same way you view Nazi Germany

Well.. that’s a highly hyperbolized statement. It’s still a very fringe/minority view.

Even if Israel didn’t have nuclear weapons no Western power would be willing to overhaul its regime or let alone invade it (and obviously there wouldn’t be sufficient public support for it either even in France or Britain e.g. even recognizing Palestine is not particularly popular https://www.jns.org/nearly-75-of-french-oppose-macron-push-t...).
by PaulHoule | 2025-09-22 16:14:02+00:00
See

https://mogami.neocities.org/files/otaku.pdf

the author makes the case that the anime Otaku were already post-narrative by 2000. That is, they are trained like animals to react to "attributes" of characters and settings. All it takes is a girl with a set of animal ears.

This paper has to be sharpened into bite-sized pieces that would fit into a tweet or two if it's going to be the basis for intervention.

I was thinking this weekend that the thing about memes is that they spread: they don't have to communicate anything in the ordinary sense, they don't have to serve any purpose, they just have to spread.

When I was in elementary school I remember a student who was provoked acting out what I think was a scene from a movie where he took off his jacket and said "I'm taking off that jacket, it means I'm really serious" and thought at the time, and I still do, that somebody might kill somebody else just because they saw some image that resonated with them.
by sbuttgereit | 2025-09-22 16:14:09+00:00
Or... just open up big warehouses, only do online sales, and then deliver to customer?

The truth is we have tried it and on a large scale: The Automat (https://en.wikipedia.org/wiki/Automat). Don't see to many of those around anymore, except maybe analogues in Japan.

With some perspective on the idea, would you invest in the retail real estate, the technology development, and later maintenance, and then still need to have staff to stop people from just breaking into the machine?
by nobody9999 | 2025-09-22 16:14:16+00:00
8. A tiny (less than 1% of the population) group of people who you are (somehow) imbuing with enormous power and clout in our society, even those these are people who have been loudly derided, shamed, beaten and even killed by a sizable group of folks in our society.

Leave those folks alone, for heaven's sake. If you don't like them, stay away from them. If you don't want to give them simple human respect, it's legal to be an asshole.

All this anger/hatred focused on a tiny group. What gives you (or me or anyone else, for that matter) the right to tell other people how they should live -- especially when it doesn't affect you in the slightest.

People don't just "choose" to be transgender. And they certainly don't choose to do so because of the much higher risk of discrimination, abuse, violence and murder.

Did I mention that trans folks are an incredibly tiny sliver of the population (<1%)?
by rcrowley | 2025-09-22 16:14:49+00:00
All our list prices are monthly and our bills are actually even finer-grained - there's no commitment to pay for a database longer than you run it.

If you do decide to operate on PlanetScale long-term, check out <https://planetscale.com/pricing> for consumption commitment discounting and other options that might make sense for your company.
by burnerthrow008 | 2025-09-22 16:14:49+00:00
The only thing I would add to your point #3 is this:

* Given the same profit margin, higher overall prices mean that firms will have higher profits.

* The value of an equity is the discounted sum of all future profits.

That is, stocks are a hedge against inflation. Investors are willing to pay "unreasonable" prices today because they expect that increased future cashflows will cause the price to become reasonable.
by dragonwriter | 2025-09-22 16:14:52+00:00
> recognized as genocide by Jewish scholars, ICC/ICJ.

Neither the ICJ nor the ICC (not even the ICC prosecutor) has made any determination of genocide. The ICC prosecutor sought warrants on (and the ICC itself issued warrants on some and rejected other) various offenses that are typically means of genocide, but not on genocide itself, while the ICJ has allowed to a case to proceed charging genocide, but has made no determination that that took place.

There are other international institutions which have determined that genocide is occurring, but the ICC and ICJ are not among them.

That’s not to say that Israel isn’t committing genocide (it plainly is), but it doesn’t help to misrepresent where determinations about that have been made.
by throw5t4323rt | 2025-09-22 16:15:11+00:00
I’m surprised DHH made the blog post on the hey.com domain, since it’s also the domain of their email service.

If I was a customer I would be canceling my service because I really don’t want my emails to be associated with any type of controversial topic. Why doesn’t he post it under his own domain, rather than a company one?

I’ve used Basecamp in the past, and actually considered signing up for hey.com. Good thing I didn’t waste my money on it. Would be such a pain to have to switch my email address.
by addaon | 2025-09-22 16:15:43+00:00
> If understanding this special IMMEDIATE mode is required to understand the Forth interpreter for something as fundamental as control-flow, it seems fair to say that Forth is not a simple language. It's not just an advanced programmable RPN calculator An RPN calculator has a program counter, which makes control-flow easy to understand.

"Simple" is not a well-defined threshold but rather a continuum, so it's hard to agree or disagree with this. I think it's perfectly valid to observe that Forth is more complex than an RPN calculator, though.

But think of it this way: An RPN calculator has two types of tokens, literals and symbols. When seeing a literal, it evaluates a push of that literal to the stack. When seeing a symbol, it evaluates an immediate call to the behavior associated with that symbol.

Forth adds exactly one more concept: non-IMMEDIATE words. Everything an RPN calculator can do can be done as IMMEDIATEs in Forth. But by adding one metadata bit to the symbol table (IMMEDIATE or not), and adding a threaded call to any non-IMMEDIATE words to the output code stream, Forth gains function definition, full generic control flow support, compiler extensibility, support for embedding domain-specific languages (just IMMEDIATE words that consume the interesting tokens), and more.

I don't know if this counts as "simple" compared to C, but it surely counts as "parsimonious." It's hard to think of a more cleanly defined single semantic change that adds as much power to a language.

(And of course in C, once you understand the language understanding the runtime library is mostly about understanding runtime behavior, some macros not withstanding; but in Forth, the runtime library and the language are conflated through IMMEDIATE symbols, so this separation is much less clear; totally accept that this could be considered less "simple", although in practice most Forths have about as many pre-defined IMMEDIATE words as C has keywords.)
by neogodless | 2025-09-22 16:15:58+00:00
I think some other terms cover this:

ambitions, drafts, mistakes.

Not a negative connotation with "mistake" either. If I had an idea and spent money on a domain name, but never take that idea to launch, it was a mistake to spend the money. But it was also a tiny bet, a necessary step in the direction of a launch. And I probably learned something along the way, which is the great value in mistakes.

The cost of undoing mistakes varies greatly. While I can sell a book I paid $20 for, and get a few dollars back, if I ever decide I want that book again, maybe I can go to the library, or maybe I can pay $20 again. If I give up a $10/year domain name, the odds are if I ever want it again, the cost will be much, much higher. Unused sketches and designs? Those are simply drafts, and drafts can be archived or discarded. The cost of storage is often inconsequential.

I think there's potential value in reflecting on unfulfilled ambitions, and maybe learning which of those past decisions weren't worth making. I'd say I don't think this article necessary puts forth a judgement of whether you should or should not have made those mistakes, or if you should make a change going forward, but merely puts it "out there" to reflect on.
by kragen | 2025-09-22 16:16:01+00:00
Actually compile is not an immediate word (at least in F83). I was wrong about that. Here's the F83 definition:

: COMPILE (S -- ) R> DUP 2+ >R @ , ; \ COMPILE Compile the following word when this def. executes

This takes its return address (which points to the following word in the colon definition that called it), dups it, adds 2 to it, and puts that back on the return stack as its new return address. Then, it fetches from its original return address with @ (thus getting the address of the word that followed it in the colon definition, such as ?branch in my if example above) and compiles it with , into whatever is currently being compiled. Then, when it returns, having added 2 to the return address means that we don't actually execute ?branch or whatever; we've skipped over it.

So it doesn't change the state of the interpreter at all!

I think you're asking if you can use things like ?branch usefully without writing any immediate words. In some sense I think the answer is yes in F83 but no in standard Forth. I think you can put a code sequence like ?branch [ here 0 , ] into a colon definition to do what if does, and then later on say [ here swap ! ] to do what then does. I just typed this definition into F83, and it seems to work†:

: is3 3 = ?branch [ here 0 , ] ." yes" [ here swap ! ] ;

You could sort of think of if and then as being macros for ?branch [ here 0 , ] and [ here swap ! ] respectively (although I'm omitting the checks they use for proper control structure nesting).

On the other hand, this is only possible because [ is an immediate word, and because ?branch is exposed, and happens to take an absolute address in the next word in the colon definition (as opposed to a byte delta or something). As it happens, exactly the same definition of is3 appears to work in GForth 0.7.3 and PFE 0.33.71, but it definitely will not work on, for example, any native-code-compiling Forth.

The standard way to invoke things like ?branch is using if, while, and so on. And you don't have to define any immediate words to do that, either.

______

† By "work" I mean it seems to behave the same as

: is3 3 = if ." yes" then ;
by palmotea | 2025-09-22 16:16:03+00:00
> But unknowingly, my brain entered that deep-think mode like a Large Language Model by then.

That sentence is stupendously dumb, but is so 2025. Is he saying read no further, because the article is slop? Has he forgot what thinking is, and that LLMs don't do it (despite feature-branding decisions by their promoters)?
by troupo | 2025-09-22 16:16:12+00:00
> This is not really evidence-based reasoning, it’s just “I can imagine something evil that Google might do.”

Please read Mozilla's story on how Google sabotaged them: https://archive.is/tgIH9

Oh. And they very literally killed Internet Explorer: https://blog.chriszacharias.com/a-conspiracy-to-kill-ie6

Oh. And Google's mobile apps always conveniently forget the setting of "always use system browser and never ask me", and will keep asking you to open with "chrome", "google", or "system browser".

Oh and...
by voxgen | 2025-09-22 16:16:19+00:00
> without punishing regular browsing humans.

As a content consumer, I'm also hoping to be part of the ecosystem. I already use Patreon a lot as "AdBlock absolution", but it doesn't fix the market dynamics. Major content platforms tend to stagnate or worsen over time, because they prefer to sell impressions to advertisers than a good product to consumers.
by woodruffw | 2025-09-22 16:16:23+00:00
> But if they call it GFY and do what they want, then that would probably be better for everyone involved.

Yes, agreed.

> I think this is YAML 1.2. I have not done or seen a breakdown to see if GitHub is aiming for YAML 1.2 or not but they appear to think that way, given the discussion around merge keys

I think GitHub has been pretty ambiguous about this: it's not clear to me at all that they intend to support either version of the spec explicitly. Part of the larger problem here is that programming language ecosystems as a whole don't consistently support either 1.1 or 1.2, so GitHub is (I expect) attempting to strike a happy balance between their own engineering goals and what common language implementations of YAML actually parse (and how they parse it). None of this makes for a great conformance story :-)

> (though it's still not clear why flattening the YAML would not be sufficient for a static analysis tool. If the error report references a key that was actually merged out, I think users would still understand the report; it's not clear to me that's a bad thing actually)

The error report includes source spans, so the tool needs to map back to the original location of the anchor rather than its unrolled document position.

(This is table stakes for integration with formats like SARIF, which expect static analysis results to have physical source locations. It's not good enough to just say "there's a bug in this element and you need to find out where that's introduced," unfortunately.)