MurphyA/hacker-news huggingface dataset:
by lblume | 2025-07-19 21:03:30+00:00
Think of Rust as a kind of kernel guaranteeing correctness of your program, the rules of which your transpiler should not have to reimplement. This may be compared to how proof assistants are able to implement all sorts of complicated simplification and resolution techniques while not endangering correctness of the generated proofs at all due to them having a small kernel that implements all of verification, and as long as that kernel is satisfied with your chain of reasoning, the processes behind its generation can be entirely disregarded.
by jng | 2025-07-19 21:03:50+00:00
The white keys form a sequence of notes (frequencies) that is known as the diatonic scale. It's the foundation underlying all popular western music. It is not random or arbitrary, it has some nice dual mathematical and musical properties: intervals between the notes in the scale have special frequency ratios that sound pleasing to the ear (read Helmholtz's "On the sensations of tone" for a fascinating physically-based take on why it is like that -- he is known as "the father of acoustics", and that book contains the distillation of 8 years of deep, smart research way before we had the means or understanding we hav today). A ton, if not most, of popular music can be played using only the white keys.

There used to be keyboards with other different arrangements, which were actually extremely cumbersome and actually didn't allow very rich and interesting musical excursions like modulations (look up "microtonal keyboards"). Today's standard keyboard and tuning is a compromise between those fundamentally mathematical and perceptual acoustic relations (the tonic, the fourth, the fifth, the sixth, the major and minor third, the "sensible" or subtonic...) and the ability to perform those trans-tonality excursions. A fully regular keyboard like you propose would lend itself more easily to those excursions, at the cost of being less apt at the foundational diatonic model and most popular music.

Interestingly also, the notes used by modern keyboards and all modern instruments, and to which we are all so accustomed that we thing it "just is", is an imperfect compromise that needed a lot of selling back in the day, much of which was done by Bach (the compromise scale is called the "tempered scale", and Bach authored the arch-famous "Well-tempered clavier" pieces to show it off -- impossible to perform on keyboards with other tunings).

And of course, there is a tradition factor. English isn't written like this because it's optimizing for any easily describable or measurable optimization metric, more like it minimized a socio-perceptual function covering many centuries of UX.

Finally, if you want an instrument where all keys are equal, you can always move to a fretboard based one like the guitar. Funnily, it has a one-semitone-short jump between strings 3 and 2 that will throw off the desire of full regularity... again due to diatonic leanings. A bass guitar is fully regular, even when they add a 5th and 6th string, so that may fulfill your wish of a fully regular instrument... and it sounds awesome! Just can't do the same things as a piano or a guitar.
by jacquesm | 2025-07-19 21:04:25+00:00
For the former: technically they are about as undefined as they could be on read. On write, it's a different matter (you could decide to resize the array under the hood). Even so, I think arrays with a particular size always were simply an illustration that there is a point where you have to allocate a physical resource to something entirely imaginary and that's where infinite bounds are no longer acceptable. In the 80's that was '256', in the 90's '65535', nowadays it is more like '4G' but no matter how far we advance there are still hard limits. And on the wire it gets even more constrained.
by Mawr | 2025-07-19 21:04:26+00:00
Youtube's compression already butchers the quality of anything 1080p and below. Uploading in 1440p or 4K is the only way to get youtube to preserve at least some of the bitrate. There's a 1080p extra bitrate option available on some videos, but it's locked behind premium, so I'm not sure how well it works.

Depending on the type of video this may not matter, but it often does. For example, my FPS gaming and dashcam footage gets utterly destroyed if uploaded to youtube at 1080p. Youtube's 4K seems roughly equivalent to my high bitrate 1080p recordings.
by Danjoe4 | 2025-07-19 21:04:57+00:00
Who writes python this way? Good Python code, being such a flexible language, relies on conventions. Never seen the id() function in production code. "Is" is canonically used for "if var is None", not string comparisons. Python has a rich library of string methods, maybe use them?

You're finding bugs because you're using the language like a QA tester instead of the way its intended. If I saw string_var is "some_string" in a PR, I would reject it. Even the triple boolean comparison example should just be separated with an "and".

Read PEP20 and PEP8. A goal of Python is to be as readable as possible, not to conform to some spec. You may not agree with that design decision, but all these examples have an obviously more readable alternative which would work.

Jeez. It's like me complaining that Rust looks ugly (it does). The language was designed with a different set of priorities.
by hibikir | 2025-07-19 21:05:00+00:00
America's rail faces significant challenges those other countries don't. An equivalent rail track in the US is vastly more expensive, new right-of-ways are much, much harder to acquire, especially near cities, and even when you do connect two metros that are in the happy medium where high speed rail can typically beat car and plane, you still find yourself that your terminals are low density sprawl, so the car will be more attractive in distances where in, say, Spain, it's just not.

Some connection pairs are probably still worth doing anyway, but we won't get the multi million trips a year of a really successful line in many cases. So it's all a much harder sell
by zahlman | 2025-07-19 21:05:37+00:00
`id()` is documented and mandated to exist, and the result provides guarantees that make it suitable for identity (not equality) checks[1] (although of course you should normally use the `is` operator). Pitfalls involving it are generally really pitfalls with understanding object lifetimes[2].

[1]: https://docs.python.org/3/library/functions.html#id

[2]: see e.g. https://stackoverflow.com/questions/52096582
by Jtsummers | 2025-07-19 21:05:41+00:00
The document explains it. When dealing with these comparators, when chained they get separated and you have the equivalent of this:

False == False in [True] => (False == False) and (False in [True])

If you put it into a function like this:

def foo(): return False == False in [True]

And then disassemble it you'll get this byte code (3.13, may vary by version):

RESUME 0 LOAD_CONST 1 (False) LOAD_CONST 1 (False) SWAP 2 COPY 2 COMPARE_OP 72 (==) COPY 1 TO_BOOL POP_JUMP_IF_FALSE 5 (to L1) POP_TOP LOAD_CONST 2 ((True,)) CONTAINS_OP 0 RETURN_VALUE L1: SWAP 2 POP_TOP RETURN_VALUE

There is no literal `and` operation occurring here, instead it first does the `False == False`, then jumps if false or continues to the second comparison.

For the literals we've given it, it'll go on to the second comparison which will result in false since `False` is not in `(True,)`.

EDIT: And here's the non-chained version disassembled:

def bar(): return (False == False) in [True] RESUME 0 LOAD_CONST 1 (False) LOAD_CONST 1 (False) COMPARE_OP 72 (==) LOAD_CONST 2 ((False,)) CONTAINS_OP 0 RETURN_VALUE
by lblume | 2025-07-19 21:06:12+00:00
Arc<Box<T>> is redundant, for the contents of the Arc are already stored on the heap. You may be thinking of Arc<Mutex<T>> for multithreaded access or Rc<RefCell<T>> for singlethreaded access. Both enable the same "feature" of moving the compile-time borrow checking to runtime (Mutex/RefCell) and using reference-counting instead of direct ownership (Arc/Rc).
by zahlman | 2025-07-19 21:07:18+00:00
> As soon as the stakes rise that far, however, I reach for a whole-ass Unix environment with a shell, a filesystem, and a stateful process model.

I don't understand what you mean by "reach for". Don't, for example, Linux desktop users have all these things at hand all the time? For me it would take much more effort to set up a "notebook" than a virtual environment.
by tjwebbnorfolk | 2025-07-19 21:07:35+00:00
You know it's possible to make good reasoned points without cramming in "<psuedo-marxist buzzword> capitalism" into a sentence for absolutely no reason.

All I want is to not be forced to irritate my customers about something that nobody cares about. It doesn't have to be complicated. It is how the internet was for all of its existence until a few years ago.
by its-summertime | 2025-07-19 21:08:02+00:00
return False == False in [False]

is roughly

a = False b = False c = [False] (a == b) and (b in c)

is less roughly

a = False b = False if not (a == b): # short circuits https://news.ycombinator.com/item?id=44619401 return False c = [False] if not (b in c): return False return True
by fzeroracer | 2025-07-19 21:09:01+00:00
In a 'rebooting society' doomsday scenario you're assuming that our language and understanding would persist. An LLM would essentially be a blackbox that you cannot understand or decipher, and would be doubly prone to hallucinations and issues when interacting with it using a language it was not trained on. Wikipedia is something you could gradually untangle, especially if the downloaded version also contained associated images.
by exiguus | 2025-07-19 21:09:36+00:00
I really like the idea, even the ISBN search works. However, I noticed that when I search for Nietzsche, for example, not all of his works are listed.

I asked myself: Which book databases does the application use? And what are/were the challenges? From my own experience (e.g. application that digitizes the offline book stock) I had a hard time finding open book databases that are well maintained and complete. IIRC at the time google and open library was the best solution besides some commercial ones.

In general, I have to say: I'm a bit lazy when it comes to choosing books. So when I'm not sure what to read, I just email my bookseller and ask for recommendations. The nice thing is, I don't have to name an author or title. They know me. If I decide to order a book, I just send them another email (maybe I can use your app to send them the ISBN and correct Title and Author). They then let me know when the book has arrived in the store and I pick it up. Sometimes I browse through the books in the store, or ask for recommendations.

Another way I get book recommendations is through friends. Over lunch, we talk about what we've just listen to or read.

And I have to admit that I listen to 2-3 audiobooks a month, the app gives me recommendations.

I've also thought about exporting my data from the audiobook app and letting AI give me recommendations. But at the moment I've bought more books than I bought time to read them.
by jaredcwhite | 2025-07-19 21:09:38+00:00
If it took you no time to write it, I'll spend no time reading it.

The holier than thou people are the ones who are telling us genAI is inevitable, it's here to stay, we should use it as a matter of rote, we'll be left out if we don't, it's going to change everything, blah blah blah. These are articles of faith, and I'm sorry but I'm not a believer in the religion of AI.
by IshKebab | 2025-07-19 21:09:45+00:00
We do admit it needs work. The issues the author highlights can be annoying, a smarter borrow checker could maybe solve them.

The point is the borrow checker has already gone beyond the point where the benefits outweigh those annoyances.

It's like... Static typing. Obviously there are cases where you're like "I know the types are correct! Get out of my way compiler!" but static types are still vastly superior because of all the benefits they convey in spite of those occasional times when they get in the way.
by lblume | 2025-07-19 21:10:04+00:00
It would not just be "confusing". It would be fundamentally unacceptable because there would just be no local reasoning anymore, and a single private field change might trigger a whole cascade of nonlocal borrowing errors.

Unfortunately, this behavior does sometimes occur with Send bounds in deeply nested async code, which is why I mostly restrain from using colored-function style asynchronous code at all in favor of explicit threadpool management which the borrow checker excels at compared to every other language I used.
by klabb3 | 2025-07-19 21:10:31+00:00
> Why? Copyright is 1) presented as being there to protect the interests of the general public, not creators

Doesn’t matter, both the ”public interest” and ”creator rights” arguments have the same impact: you’re either hurting creators directly, or you’re hurting the public benefit when you remove or reduce the economic incentives. The transfer of wealth and irreversible damage is there, whether you care about Lars Ulrichs gold toilet or our future kids who can’t enjoy culture and libraries to protect from adversarial and cynical tech moguls.

> 2) Statute of Anne, the birth of modern copyright law, protected printers - that is "big businesss" over creators anyway, so even that has largely always been a fiction.

> The vast majority of creators have never been able to get remotely close to make a living from their creative work

Nobody is saying copyright is perfect. We’re saying it’s the system we have and it should apply equally.

Two wrongs don’t make a right. Defending the AI corps on basis of copyright being broken is like saying the tax system is broken, so therefore it’s morally right for the ultra-rich to relocate assets to the Caymans. Or saying that democracy is broken, so it’s morally sound to circumvent it (like Thiel says).
by Shacklz | 2025-07-19 21:10:51+00:00
> I have run into a lot of JS wtf's trying to write code for work

JS certainly does have plenty of wtfs but honestly, when sticking to somewhat modern JS, it's not so bad anymore these days. Function-scoping-shenanigans can mostly be circumvented by simply sticking to const/let, use a 3rd-party-library like date-fns instead of the dumpsterfire that is native Date and you're almost there - throw typescript into the mix and I have a very hard time imagining running into the meme-worthy JS-warts on a daily basis.
by ericmay | 2025-07-19 21:12:25+00:00
No, it's a common practice in most western countries and can confirm for you a list of a dozen or more hotels ranging from $100/night to $1000/night that do this in countries ranging from Ireland to France to Japan. It's really no big deal and is extremely common. In fact, France as I discovered does this at the gas stations where they put $200 or so authorizations on your card for absolutely no good reason.

There are various scenarios but I think the one you are thinking of is you show up to the hotel, hand them your cash, and pay at the desk. Often times, though I have not been in a hotel that will not ask for a card, they ask you for a credit card and put an authorization on there in case you smoke in the room, or maybe turn it into spaghetti or any other random incidentals.

An authorization is basically the hotel telling the credit card that they're "reserving space" so to speak on your credit limit on the card.

Regarding your rental car experience, that's a common scam and again moreso seen in Europe, but not really anything to do with the method of payment. They would have just mailed you a bill for the damages instead. I guess you could ignore it.
by lbotos | 2025-07-19 21:12:58+00:00
> And what part of watching japanese videos in japanese makes superior?

We do have to acknowledge that putting in the effort to learn a second language (whatever language) "takes more skill" than watching a dubbed video, ya?

I took up the hobby of learning a second language to challenge myself. If I watch the videos dubbed in English, where is the challenge?

> failing to acknowledge that the world is diverse and people have diverse needs that we can't even start to imagine.

I think you missed my point because I (lovingly) called my dad dumb -- Youtube has absolutely liberated him and given him access to a rich world of woodworking content that cable TV could never. This feature is helping him access more of that.

Youtube also gave me a world of Japanese content that I could never imagine, but this feature is hurting me by making it harder for me to get the content I'm looking for. Maybe I'm no longer Youtube's target audience, but 1 toggle switch to disable this feature and I'm back in the target audience.
by Theresa_i_a | 2025-07-19 21:13:09+00:00
Hey everyone!

Try out the new Remotely Good job board and get rewarded for feedback!

Check it out here: remotelygood.lovable.app & Complete our survey here: https://www.jotform.com/form/251538756931062 (here's survey #2: https://forms.gle/K5d8Z8vCSPR8y9Ge6)

Employers & hiring managers: I’m still looking for 10 impact employers to complete our 2 quick surveys!

In return:

Get a $5 Amazon gift card Join our Founding Member waitlist (save up to $3,000 on job promotions!) Get early access to AI recruiting tools

DM me for more details!

P.S. If you support what we’re building, subscribe to our newsletter at remotelygood.substack.com. We also have a hybrid Social Impact San Francisco group, subcribe here: lu.ma/socialimpactsf. We're having a virtual meetup on July 27th at 1pm PST: https://lu.ma/8m3wxpiy
by Benjammer | 2025-07-19 21:13:49+00:00
Why are engineers so obstinate about this stuff? You really need a GUI built for you in order to do this? You can't take the time to just type up this instruction to the LLM? Do you realize that's possible? You can just write instructions "Don't modify XYZ.ts file under any circumstances". Not to mention all the tools have simple hotkeys to dismiss changes for an entire file with the press of a button if you really want to ignore changes to a file or whatever. In Cursor you can literally select a block of text and press a hotkey to "highlight" that code to the LLM in the chat, and you could absolutely tell it "READ BUT DON'T TOUCH THIS CODE" or something, directly tied to specific lines of code, literally the feature you are describing. BUT, you have to work with the LLM and tooling, it's not just going to be a button for you or something.

You can also literally do exactly what you said with "going a step further".

Open Claude Code, run `/init`. Download Superwhisper, open a new file at project root called BRAIN_DUMP.md, put your cursor in the file, activate Superwhisper, talk in stream of consciousness-style about all the parts of the code and your own confidence level, with any details you want to include. Go to your LLM chat, tell it to "Read file @BRAIN_DUMP.md" and organize all the contents into your own new file CODE_CONFIDENCE.md. Tell it to list the parts of the code base and give it's best assessment of the developer's confidence in that part of the code, given the details and tone in the brain dump for each part. Delete the brain dump file if you want. Now you literally have what you asked for, an "index" of sorts for your LLM that tells it the parts of the codebase and developer confidence/stability/etc. Now you can just refer to that file in your project prompting.

Please, everyone, for the love of god, just start prompting. Instead of posting on hacker news or reddit about your skepticism, literally talk to the LLM about it and ask it questions, it can help you work through almost any of this stuff people rant about.
by ajennings | 2025-07-19 21:13:55+00:00
I'm curious on your response to GP's question. Have you heard of AHSME, AMC, or AIME?

Nobody mentioned them in high school (1997) until I heard of them online and got my school to participate. 30 kids took the AHSME. Only one qualified for the AIME. And nobody qualified for IMO (though I tell myself I was close).

I believe the 1 in a million number.
by sandreas | 2025-07-19 21:14:13+00:00
Nice writeup... Although I'm missing a few points...

In my opinion a good backup (system) is only good, if it has been tested to be restorable as fast as possible and the procedure is clear (like in documented).

How often have I heard or seen backups that "work great" and "oh, no problem we have them" only to see them fail or take ages to restore, when the disaster has happened (2 days can be an expensive amount of time in a production environment). Quite too often only parts could be restored.

Another missing aspect is within the snapshots section... I like restic, which provides repository based backup with deduplicated snapshots for FILES (not filesystems). It's pretty much what you want if you don't have ZFS (or other reliable snapshot based filesystems) to keep different versions of your files that have been deleted on the filesystem.

The last aspect is partly mentioned, the better PULL than PUSH part. Ransomware is really clever these days and if you PUSH your backups, it can also encrypt or delete all your backups, because it has access to everything... So you could either use readonly media (like Blurays) or PULL is mandatory. It is also helpful to have auto-snapshotting on ZFS via zfs-auto-snapshot, zrepl or sanoid to go back in time to where the ransomware has started its journey.
by lvl155 | 2025-07-19 21:15:02+00:00
At what point are we going to say browsers with JS is outdated and painful? Every few months there’s some new framework. I think it stems from the fact that we refuse to change the browser. HTML was nice but all these solutions to make it modern are…ugly. And don’t get me started on JS. I just want an elegant solution that’s intuitive and built for modern applications.
by drewg123 | 2025-07-19 21:15:11+00:00
My undergrad university was involved in developing hand-writing recognition for the postal service when I was there in the late 80s / early 90s (https://cedar.buffalo.edu/hwai/hwai_home.html). They brought in a ton of grant money, and even hired undergrads to help with the research. My roommate worked for them when we were seniors, and I was envious of the fact he had access to his own sparcstation. This was in a time where the undergrad labs just had VT-220 terminals connected to a shared and overloaded sparc server.
by mathluke | 2025-07-19 21:15:11+00:00
I'd disagree with this take. Math olympiads are some of the most intellectually creative activities I've ever done that fit within a one day time limit. Chess and go don't even come close--I am not a strong player, but I've studied both games for hundreds of hours. (My hot take is that chess is not even very creative at all, that's why classical AI techniques produced super human results many years ago.)

There is no list of tricks that will get a silver much less a gold medal at the IMO. The problem setters try very hard to choose problems that are not just variations of other contests or solvable by routine calculation (indeed some types of problems, like polynomial inequalities, fell out of favor as near-universal techniques made them too routine to well prepared students). Of course there are common themes and patterns that recur--no way around it given the limited curriculum they draw on--but overall I think the IMO does a commendable job at encouraging out-of-the-box thinking within a limited domain. (I've heard a contestant say that IMO prep was memorizing a lot of template solutions, but he was such a genius among geniuses that I think his opinion is irrelevant to the rest of humanity!)

Of course there is always a debate whether competition math reflects skill in research math and other research domains. There's obvious areas of overlap and obvious areas of differences, so it's hard to extrapolate from AI math benchmarks to other domains. But i think it's fair to say the skills needed for the IMO include quite general quantitative reasoning ability, which is very exciting to see LLMs develop.