MurphyA/hacker-news huggingface dataset:
by dkersten | 2025-10-23 14:58:09+00:00
> I would pick function over macros every single time.

I should have went into a little more detail, maybe.

The general advice has always been "prefer data over functions, prefer functions over macros", but I don't think "prefer" is strong enough. I would rephrase it as:

"Prefer data over functions. Only use macros if there's absolutely no other option."

That means that macros shouldn't be used to make code more terse, or more convenient, or more "pretty". They should be used when they make code possible that wouldn't otherwise be possible (at least without jumping through a lot of hoops). For all my complaints, core.async is actually a good example of a good use of macros, as far as a library goes. It adds functionality that would be quite difficult to do cleanly without macros. My complaint is just that a macro implementation of something so integral is very much inferior to an implementation that was part of the language itself. I don't think async should be something tacked on to a language as an afterthought.

An example of what I consider a bad use of macros would be something like this:

Imagine you have a system to register event handlers that can then be triggered by name:

(defhandler my-event (println "my-event triggered")) (trigger! my-event)

Many clojure libraries exist with patterns like this, especially from earlier on before the community began to shift more closely to the `data > functions > macros` mentality.

A macro-less version might look something like this:

(register-event! :my-event (fn [] (println "my-event triggered"))) ; or maybe: (def my-event (register-event (fn [] ...))) ; or maybe even (def registry2 (register-event registry :my-event (fn [] ...))) (trigger! :my-event)

Where the expression that the macro makes possible is wrapped in an anonymous function and the naming is explicit. Its not quite as convenient as the macro version, but it avoids magic and therefore surprises, and its more flexible because you can compose it or operate on it like any other function.
by palmotea | 2025-10-23 14:58:21+00:00
>> The final reason why China is winning is that the trade war has made Mr Xi and the Communist Party stronger, not weaker.

> I am not so sure of this. The CCP just had to go through a massive purge [0] on the top, right before elections. This is not an indicator of "stronger" position of a despot.

A despot that can pull of a purge is stronger than one who cannot, and purges might be necessary to keep people in line an maintain strength.
by pton_xd | 2025-10-23 14:58:36+00:00
The parent was arguing in favor of bias by suggesting that in some instances, there is an underlying fundamental truth so having bias is more accurate.

As my comment suggests, I believe society is relativistic and there are no objective truths, but I'm open to being convinced otherwise. Of course, I have my own beliefs and principles but I recognize those are a product of where and when I was born and not some objective law of the universe.
by glenstein | 2025-10-23 14:59:21+00:00
This is easily the best definition of bias (and diagnosis of bad ones) in this thread. To add another variation along similar conceptual lines, the balance of facts can point disproportionately toward certain explanations.

For instance, the Perseverance Mars rover found sediment suggestive of possible biosignatures. Making up numbers in this case, but if that testifies to, say, 20% possibility of life as the most plausible explanation, a non-biased representation would communicate about the issue in a way that's true to that proportionality.

Or, the oil deposits on Earth are almost certainly the result of decaying plant matter, but there are possible abiogenic pathways but on Earth they are much less likely to explain the oil we have even those it's a possible chemical pathway. Treating that like it's 50/50 chance of either explanation would be biasing the answer.
by LegionMammal978 | 2025-10-23 14:59:25+00:00
To the extent that some champion machines have Collatz-like behavior, it's usually not by iterating a function with randomized scale factors until the value hits zero (like in the original Collatz iteration), but instead by iterating a function with a fixed scale factor until it hits a certain modular value.

E.g., the BB(5) machine [0] repeatedly multiplies a unary counter by 5/3 and adds a small offset, until the value becomes 2 mod 3 and the machine halts. In further domains, these kinds of "halt once a certain modular value is reached" conditions are used to terminate iterated exponentiation and higher operations.

The main similarity with the original Collatz iteration is that the machines repeatedly divide out a certain factor to produce a pseudorandom stream of remainders. In some cases, a machine measures a statistical property of the stream that is expected to hold forever, but cannot easily be proven to do so, as in the infamous Hydra/Antihydra machines [1].

Somewhat curiously, a candidate for the BB(3,3) champion machine [2] does not use any sort of Collatz-like modular-value conditions. Instead, it repeatedly samples points and compares them against the subdivisions of a sort of Cantor set, until one of the points perfectly hits the edge of a subdivision. It's expected to halt after roughly 10^135 iterations.

[0] https://wiki.bbchallenge.org/wiki/5-state_busy_beaver_winner

[1] https://www.sligocki.com/2024/07/06/bb-6-2-is-hard.html

[2] https://wiki.bbchallenge.org/wiki/1RB2LC1RC_2LC---2RB_2LA0LB...
by steveklabnik | 2025-10-23 14:59:58+00:00
I can’t speak to people’s motivations, but I have been a very active member on this forum for a long time, and I was on the Rust team for about a decade, beginning before 1.0.

So the article is more like “Here’s why I started using Rust. If you thought I made a good choice then, well, I’m making a similar choice in case you want to join me.” Seems people find that compelling.

Just like Rust’s success was not inevitable, neither is jj’s. But I think it might work out.

You could also consider this a disclosure of sorts, I post a lot on this forum about jj (and Rust), and so knowing that I now have a financial incentive is important context to some people.
by talkingtab | 2025-10-23 14:59:59+00:00
OMG ASN.1.

For those of you who missed this, there was a very interesting thing that happened in the growth of the internet.

At the time people were evolving the protocols through the IETF. So all the things that you rely on now - for the most part - just came into being. One day there was email. There was ftp. There was TCP. There were the Van Jacobson TCP mods.

At this time corporate types paid no attention to the internet. Academic types and the IETF were from what I saw the main developers.

Then one day the corporate world realized they might make money. But the development process of the protocols was incomprehensible (and incompatible) with the corporate culture. TCP was clearly a mess, all these protocols like DNS were a mess. From the corporate perspective.

So began the protocol wars https://en.wikipedia.org/wiki/Protocol_Wars.

Whether ASN.1 was a product of that war or just a product of the corporate mentality, it serves as a powerful instance of the what the corporate world looks like vs the academic world looks like. You can find the wreckage from the war littered around. If you see and X.something protocol it could well be one of the relics. There were a few X.things that were adopted and useful, but were others that would haunt your dreams.

Although this is ancient history, and pretty much now told from the corporate perspective, it suggests to us that the corporate process for thinking is not as effective as the alternative - the IETF and Academic.

One is a sort of recipe culture. You write a recipe, everyone follows it and you are happy. The other is a sort of functional culture. If you can make bread and eat it you are happy. When the bread doesn't taste good you fix it.

Given the kind of bread that is commonly available in the US now, we can draw some conclusions about recipe thinking, recipe culture, corporate culture etc. One could even extend this paradigm of thinking to new things like AI. Or not.
by zelphirkalt | 2025-10-23 14:59:59+00:00
Maybe this seems like a bit strange design. Couldn't `<!` itself be made a macro, so that it doesn't matter where it is, instead of `<!` being something to transform? EDIT: No, it couldn't, because then that `<!` macro wouldn't know enough context, as it typically cannot look into outer scopes.

Another thing that comes to my mind reading this is, that in Guile I wrote a macro for function contracts. This macro references a unique value as the thing that should be replaced. That unique value can be imported from another module and aliased, so that name clashes are avoided. In the case of function contracts, I have a special define form `define-with-contract`, which recognizes the placeholder, where it should insert the result of applying function, to check the output contract of the function. I guess, if the placeholder made sense in other places than the contract definition/specification, then I would face the same problem, of the macro not seeing it in helper functions. Say for example I use the unique placeholder value inside a helper function, which I then use inside the contract definition.

I guess in case of a placeholder value, it couldn't be a macro itself, because then it would lack context about what should be in its place, as the scope would then be too limited.

The basic problem seems to be as you already explained, that macros cannot look inside function bodies hidden behind calls. Sort of like macros can only deal with "one layer", which is the syntax that is passed to the macro, but if that syntax contains calls to functions, then the macro is clueless about what happens inside those functions. I wonder if this limitation is present for all lisps, or if there is some macro system or method of designing them, that circumvents this problem.

But also it seems, that this is only (?) a limitation, when the macro needs to look for something specific like a placeholder. For a timing macro for example, there is no such thing and expressions merely get reordered and maybe wrapped in some `let` or something.
by stasw | 2025-10-23 15:00:07+00:00
We've just released SVAR React Gantt v2.3 with React 19 and TypeScript support.

New features also include hour/minute-level precision, custom time scales (sprints, quarters), inline task editing, tooltips, localization, and keyboard shortcuts. Available on GitHub under GPLv3.

Release article: https://svar.dev/blog/react-gantt-2-3-released/
by BradleyChatha | 2025-10-23 15:00:17+00:00
Not heard of either of those projects before, but I love how libasn1's README has a thinly veiled hint of disdain for ASN.1

> which can transform ASN.1 into a much more parseable JSON AST

The sign of a person who's been hurt, and doesn't want others to feel the same pain :D
by ToucanLoucan | 2025-10-23 15:00:28+00:00
With plentiful energy and scalable supply chain we could've also done it with the people we already have, without creating huge swaths of the country that look barely better off than the fishing villages we blew to shit in Vietnam.

Unfortunately that's not as profitable in the short term as financializing the entire economy was, and we don't make decisions here based on good long-term planning, we let the failsons of the last generations industrial titans decide things they barely comprehend from positions they didn't earn, and they ran the economy into the ground, exactly as the monarchs of eras past did elsewhere.
by usrbinenv | 2025-10-23 15:00:59+00:00
So, I also write Go and I don't get the part about tooling. I don't need formatters or linters as I'm adult enough to know how to format my code (in fact I dislike tools doing it for me). D also has dub, which is fine, as far as package managers go. The ecosystem is the only issue and Go does arguably have a lot of very cool libraries for virtually anything, but outside of webdev, I can't see myself using them. This is why D works a lot better for projects where I don't need all those dependencies and would do better without them.
by jopsen | 2025-10-23 15:01:22+00:00
I can totally see how this is attractive.

But I personally find SQL and triggers/stored procedures to have:

- Horrible syntax - Poor LSP support and poor auto complete - poor debugging experiences, error reporting, etc.

I kind of wish someone would make a better syntax with better LSP tooling and solid auto-complete. Geared compiling application logic into databases. I would personally love to see tooling for compatibility analysis too.

It always feels weird that app logic and database are two completely different languages.
by dfox | 2025-10-23 15:01:43+00:00
It is not only that ASN.1 was there before SSL, but even the certificate format was there before SSL. The certificate format comes from X.500, which is the "DAP" part of "LDAP", L as in "Lightweight" in "LDAP" refers mostly to LDAP not using public key certificates for client authentication in contrast to X.500 [1]. Bunch of other related stuff comes from RSA's PKCS series specifications, which also mostly use ASN.1.

1] the somewhat ironic part is that when it was discovered that using just passwords for authentication is not enough, the so called "lighweight" LDAP got arguably more complex that X.500. Same thing happened to SNMP (another IETF protocol using ASN.1) being "Simple" for similar reasons.
by fellowniusmonk | 2025-10-23 15:01:52+00:00
Loro is the open source project I am most excited about, their documentation is also stellar as an intro to the subject.

As an aside, I find FugueMax to be amazing to solve interleaving issues.

I've found for collaborative editing fuguemax for resolving intraline edits and h-lseq for the lines themselves has been amazing.

https://loro.dev/blog/crdt-richtext
by pnathan | 2025-10-23 15:01:57+00:00
> I've been playing with the hypothesis that if information is controversial/surprising and targeted at laypeople, it is almost guaranteed to be misleading or outright false.

This is my general perspective with history books - most mass market history books simplify the complexity dramatically. You have to get into books with piles of citations before the complexity & nuance level starts to approximate something perhaps like a correct take.

This gets more and more painful the more 'hot' the topic is.
by jsmith45 | 2025-10-23 15:02:17+00:00
> COM is just 3 predefined calls in the virtual table.

COM can be as simple as that implementation side, at least if your platforms vtable ABI matches COM's perfectly, but it also allows far more complicated implementations where every implemented interface queried will allocate a new distinct object, etc.

I.E. even if you know for sure that the object is implemented in c++, and your platforms' vtable ABI matches COM's perfectly, and you know exactly what interfaces the object you have implements, you cannot legally use dynamic_cast, as there is no requirement that one class inherits from both interfaces. The conceptual "COM object" could instead be implemented as one class per interface, each likely containing a pointer to some shared data class.

This is also why you need to do the ref counting with respect to each distinct interface, since while it is legal from an implementation side to just share one ref count for it all, that is in no way required.
by nebula8804 | 2025-10-23 15:02:31+00:00
When those Belkin Weemo devices came out a few years back I used to joke with a friend about how we should write apps for our devices like our washing machine, where it would interact with us via Twilio, so you'd get a random text from your washing machine like "Hey, Whats up?" and "what the heck did you do to those jeans?!!"

I wouldn't mind all our appliances having personalities. Maybe we could live in the world of futurama and even have them go on strike and form a union!

[1]: https://www.youtube.com/watch?v=b0Bt0lkpV_U
by jeffrallen | 2025-10-23 15:02:37+00:00
And reader macros are a special kind of satanic evil, making sure that the next guy can't even read the code without reading all the macros first.

Or my favorite example of insanity from $WORK: a file that claims to be declarative, claiming to be "just" EDN, but which through the satanic evil of reader macros, is actually executable code.

Argh.
by walkabout | 2025-10-23 15:03:10+00:00
Depends on your cooking. Lots of baking, or lots of certain dishes (pastas, stir fries, that call for or benefit from eggs)? You’ll tear through eggs even if nobody eats them scrambled or over-easy for breakfast.

One angel food cake or batch of soufflé and you’ll use a bunch right there. Just a glaze on some meat pasties might burn two or three, and they’re barely even an ingredient in that case. Hell, family of five, one scrambled egg breakfast a week can knock out an entire dozen if you use zero other eggs that week for anything.

The things are little chemical miracles somewhere between useful and indispensable for all kinds of stuff in the kitchen, or good as a (usually…) dirt-cheap source of protein, vitamins, and flavor that can be added to lots of dishes or eaten on their own, making them remarkably versatile and easy to use.
by nerdponx | 2025-10-23 15:04:07+00:00
The irony is that rental markets are probably one of the better markets to apply Econ 101 principles. Yes you have problems with information asymmetry, but for the most part you have a huge number of relatively small buyers and sellers, and prices freely ebb and flow based on supply and demand conditions. So if you are going to analyze the effect of algorithmic pricing in the real estate market, starting with the simple free market assumptions actually is not a bad idea at all.

It's also common practice to show the effect of something on an idealized free market, with the idea of being that even under supposedly ideal conditions, the something being analyzed is still problematic.
by cashsterling | 2025-10-23 15:04:49+00:00
The better analogy here, in my opinion, is until someone builds a car that actually drives forward...

A lot of these quantum computing papers are just loud engine rev'ing.

But you are right... "zero attention" is hyperbole... I shouldn't have said "I pay zero attention"... I should have said, "I am underwhelmed and don't give a lot of credence to systems until they demonstrate ability to perform high fidelity calculations of reasonable complexity and depth."

I do think superconducting qubits approaches will continue to improve in fidelity and ability... there are just too many brilliant people working on these challenges to count them out.
by glenstein | 2025-10-23 15:04:52+00:00
>Aside from say math and physics, could you provide an example of an objective truth within human society?

This is a fascinating pet topic for me so I'll jump in. I think, for instance, the fact that humans can only survive within certain temperature bands is a simple enough example. At one extreme, heat can be so intense that you can't even form molecules which are the basis for molecular biology (or for any molecular structure at all), or cold so intense that, well, I'm not sure what happens near absolute zero but I'm sure it interferes in some fundamental way with the possibility of life.
by ModernMech | 2025-10-23 15:05:04+00:00
Yeah, I was once at an Apple interview and they couldn't tell me what I'd be working on if they hired me (I assume it was a mobile robot, as my background is in robotics motion planning). I politely left the interview after the third one tried to keep me in the dark and insist whatever it was it was world changing and bigger than iPhone. To me, job interviews are a two-way street, but they wanted to assess me while not allowing me to assess them, so I felt like they had wasted my time.
by lolc | 2025-10-23 15:05:25+00:00
I've seen a few dead posts where there was an innocent misunderstanding or wrong assumption. In those cases it would have been beneficial to keep the post visible and post a response, so that readers with similarly mistaken assumptions could have seen a correction. Small minority of dead posts though. They can be vouched for actually but of course this is unlikely to happen.

I agree that most dead posts would be a distraction and good to have been kept out.
by hypeatei | 2025-10-23 15:05:26+00:00
> One must laud the transparency this administration has introduced.

What transparency? What is transparent about running a meme coin that anyone in the world can bribe- sorry, "invest" in with no trace of who they are while you're President?

As for the topic at hand: Trump truly has no vision for anything we do on the world stage so I don't believe it's a deliberate effort at "transparency"
by bityard | 2025-10-23 15:05:40+00:00
The installation instructions seem to agree with you:

1. curl this shell script

2. Run it as root.

Anytime you see that, you can assume the software wants to take over the whole box and isn't likely to make any attempt to play nicely with other services/software/users already running on the same host.

To their credit, they do have a docker image (https://stalw.art/docs/install/platform/docker).
by locallost | 2025-10-23 15:06:07+00:00
One reason I agree with the article is that the more you have, the more you fear to lose. The US is currently still a much more developed country, but this makes it more fragile, as people are more afraid to lose what they have. This was IMHO the exact reaction that led to Trump's election.

Another reason is, Trump went to war with the whole world. This works for now as other countries still obey the wishes of the most powerful country, but I have no doubts new alliances are being forged. At the end of the day, people will do what's in their interest, and if they can get a a better deal, they will ditch alliances with the US.

And all that before you remember there's a war on the US educational system going on as well.
by 47282847 | 2025-10-23 15:06:16+00:00
For an extensive critical review on research on prenatal trauma (“in the womb”) and theories around it, see Philipp Ployés “The Prenatal Theme in Psychotherapy”, available on libgen. Especially in the past 20 years with improved ultrasound, you can view a lot of what is going on inside, and reason about it. Of course there is no way to fully prove it, but the scientific consensus definitely is that factors like stress of the mother or substance abuse have a long-lasting and measurable negative effect on the child.
by DrScientist | 2025-10-23 15:06:41+00:00
So from 2022 ( full scale invasion ) to 2025 when Biden was president it was going swimmingly?

If you look at the situation on the front line when Trump got in to power in Jan Russian already had the momentum ( if slow and grinding ).

So blaming Trump specifically seems like a bit like scapegoating. Sure he is against it and thus hasn't helped ( this started with me pointing to an incident where he appeared to be actively helping Russia ) - but surely it was already was going south before he became president.