MurphyA/hacker-news huggingface dataset:
by nonameiguess | 2025-04-28 20:13:12+00:00
Factors I personally think led to Python's popularity:

1) Perl kind of shooting itself in the foot 20 years ago and Python becoming the de facto scripting language for Linux distributions that needed to do anything more complicated than was suitable for shell scripts but didn't require entirely new compiled software projects.

2) The above meant Python is almost always available and a good tool to have handy if you need to do something one-off and simple but more complicated than what you can do with a built-in calculator app. For instance, ever curious if you can pull the exponents off of x509 certificates and manually verify signatures by hand? Pretty easy to do in Python.

3) The C API and compiled modules made it possible to link against pre-existing BLAS implementations, and the extensible syntax and user-defined operators made it possible to mimic the style of MATLAB and R. Thus, Python became a popular choice as a lingua franca for engineers, scientists, and stats geeks who just wanted to do some data exploration or modeling and weren't trying to create shippable software.

4) MIT decided to make Python its primary teaching language in the early 2000s or so and a lot of CS programs in the US followed suit.

5) It became possible at some point to write Microsoft Office macros in Python, giving marginally technical business types a nice option to learn that was more broadly useful than VB script to automate their own workflows.

Why it ever became so popular among actual software developers I have a harder time answering, but for research, exploratory work, prototyping, scripting, workflow automation, it's as good as anything else you can come up with, usually already available, and it has an extremely "batteries included" standard library that means you probably don't need to worry about the kind of ecosystem dependency hell you're envisioning here.

Possibly some factors include the rise of LeetCode, as Python's "executable pseudocode" style means it is very easy to find or translate examples of algorithm implementations into Python solutions for learning, and the fact that a large trend of the post big data era is trying to turn exploratory data analysis pipelining tasks into real software, along with people who used to brand themselves as "data scientists" deciding to become software developers instead, and already knowing Python.

Python also gives you a pretty good first order approximation of a solution when you want to turn some researcher's data model into a service, provided your app is also written in Python. This has become far less important these days with data APIs, ML APIs, standardized formats for model serialization, but previously, a very popular solution to the so-called "two language problem" was just making Python fast enough to let it be both languages itself rather than trying to add web app frameworks to Julia.
by zb3 | 2025-04-28 20:13:15+00:00
> the absolute best delivery mechanism right now is static HTML and JavaScript served from a free web host with an established reputation.

Exactly, not only is that cross-platform and frictionless, but it additionally solves the trust issue since the app runs in a more secure browser sandbox.

This is also why I recently ported my fork of the FreeJ2ME emulator to the web (with help of CheerpJ which runs Java in browser), I believe this is the most future-proof way to preserve access to J2ME games: https://github.com/zb3/freej2me-web
by robocat | 2025-04-28 20:13:37+00:00
Your incentive "analysis" is wildly incorrect.

Electricity markets and electricity networks are designed by the regulator.

Incentives are planned by the regulator so that individual stations or companies have the correct incentives to have capabilities that the network grid needs.

One example is financial incentives to provide black start capabilities. Another example is incentives to provide power during peak loading (peaker plants). There are many more examples of incentives designed so that the needs of the whole network are met.

If an operator is incentivised to act selfishly in such a way that the grid will fail, then that is a failure of the regulator (not the individual operator).

Blaming individual people or companies for systemic faults is generally a bad thinking habit to form. There are too many examples where I see individuals get blamed. Fixing our systems is hard but casting blame in the wrong places is not helpful. It's difficult to find a good balance between an individual's responsibilities and society's responsibilities.
by michaelmrose | 2025-04-28 20:13:38+00:00
This isn't an argument for absolutely any cost one should choose to impose. I had a hard time finding exact stats but one should I think assume that less than 1/10th of 1% of cars have such a device installed.

This means that one is installing 1000 devices for each one in use. It should make more sense to me to provide a means to communicate with such a device wirelessly and software support for making starting contingent on such communication.
by bitmasher9 | 2025-04-28 20:13:41+00:00
> You’re (probably) not going to “change things from the inside”

I’ve had this exact conversation with so many students across so many industries. A good chunk of them end up middle managers keeping their head down never feeling empowered enough to make the changes they want to see. Those that end up actually making impactful changes were disrupting from the beginning.
by anticrymactic | 2025-04-28 20:14:03+00:00
This could be different in game dev, but in the last years of writing rust (outside of learning the language) I very rarely need to index any collection.

There is a very certain way rust is supposed to be used, which is a negative on it's own, but it will lead to a fulfilling and productive programming experience. (My opinion) If you need to regularly index something, then you're using the language wrong.
by gmuslera | 2025-04-28 20:14:13+00:00
The article points out that the 2004 earthquake slowed down Earth's rotation by 2.68 microseconds, vs 0.06 that may slow down when the reservoir is filled at capacity, 50 times less. And the 2004 quake wasn't the only one in this century doing so (i.e. the one in Japan in 2011), and other events can have that effect too (extreme weather, glacier melting, changes in atmospheric circulation).

Overall it may be better to have a cleaner energy generation than a small change in the day duration. Because what we are doing with global climate is already changing that duration, and more things, and that will hit us before the effect of the Dam have a chance to be visible.
by cuuupid | 2025-04-28 20:14:25+00:00
You are confusing secret+ classification with CUI.

Above I specifically refer to SCI, the designation for things of dire national security impact, which quite literally mandates that information be fully compartmentalized and unattainable to the public. Above that we have SAPs or special clearances (e.g. Q for Nuclear, YW for White House).

It is not possible to work with nuclear weapons, serious satellites, advanced drone weaponry, or similar without first getting an SCI clearance. In fact all of these are prime examples of their specific marking compartments. There are even regulations below this (e.g. ITAR) that control who gets to work on military technology in general.
by susam | 2025-04-28 20:14:32+00:00
> I haven't seen GitHub break a working URL that they have hosted in the 17+ years since they first launched.

Nice post! This is only a nit: They did break working URLs at least once sometime between 2020 and 2023. Until 2013, GitHub served GitHub Pages from the USERNAME.github.com subdomains. Understandably, this was a security nightmare, due to which in 2013 they made the switch to USERNAME.github.io for GitHub Pages.

For several years they took care of automatically redirecting something like <http://newmerator.github.com/> to <http://newmerator.github.io/>. But if you click on those links now, you'll find that the former does not work anymore.

You can read more about it at <https://github.blog/news-insights/product-news/new-github-pa...>. The example link I've shared in the previous paragraph has been picked from this article.

In fact, <https://web.archive.org/web/20200000000000*/http://newmerato...> shows that the redirection worked until at least Feb 2020. But by Nov 2023, the redirect was already broken.
by legobmw99 | 2025-04-28 20:14:39+00:00
It's a bit heavy handed, but the VSCode "Live Server" plugin is the closest I've come. If I set code as the default file association for `.html`, then it's just one extra click to get it open in a browser with a local server.

This isn't going to work for everyone, but if you're dealing with non-tech-savvy but mostly-able-to-use-a-computer users, it can, and it being graphical seems to be less of a hill than if I tell people to run `python -m http.server` in the terminal (because, "what is a terminal"...)
by porphyra | 2025-04-28 20:14:41+00:00
Other countries can build entire rail lines entirely on viaducts for the same cost as it takes to grade separate a single Caltrain station. For example it was recently estimated that grade separating Broadway Station with a center platform would take $889 million and 5-5.5 years [1]. This is mind boggling.

[1] https://burlingameca.granicus.com/DocumentViewer.php?file=bu...
by etra0 | 2025-04-28 20:14:41+00:00
I like doing silly apps, basically just a bunch of SPAs, for either testing something or doing a favor for someone, and (sadly) I agree, the best way of distributing software right now for the vast majority of non-techy people is through the web.

I don't like javascript much, but the option to statically host something for free while solving real problems is... something else.

I know WASM has been here for a long time but last time I tried I still had some issues setting it up (maybe just skill-issues), but I'd like to live in a world where I could do the same stuff but with other languages. Maybe just the UI code in javascript, or at least, that's what I would wish for.
by tzs | 2025-04-28 20:15:04+00:00
That's a possible solution to the problem of cars in general going too fast for a given area.

That is not the problem Virginia is trying to deal with with this legislation. They are trying to deal with the problem of a very small number of drivers who are driving much faster than the speed limit and much faster than even most speeders go.

These are drivers that have been convicted of speeding at more than 100 mph. That is a criminal offense of the same level as drunk driving rather than a mere traffic infraction.

It is just those drivers that they are trying to slow down.
by zahlman | 2025-04-28 20:15:12+00:00
I probably should have added a link: https://esolangs.org/wiki/Befunge

The main thing that appealed to me about this idea is that it would require a two-dimensional program counter. As I recall from the original specification, skipping through blank space is supposed to take O(1) time, but I didn't plan on implementing that. I did, however, imagine a machine with 256x256 bytes of memory, where some 80x25 (or 24?) region was reserved as directly memory-mapped to a character display (and protected at boot by surrounding it with jump instructions).
by gregschlom | 2025-04-28 20:15:18+00:00
I was actually meaning to post this as an Ask HN question, but never found the time to word it well. Basically, what happens to new frameworks and technologies in the age of widespread LLM-assisted coding? Will users be reluctants to adopt bleeding-edge tools because the LLMs can't assist as well? Will companies behind the big frameworks put more resources towards documenting them in a way that makes it easy for LLMs to learn from?
by hackerkarlos | 2025-04-28 20:15:38+00:00
Im working on a Discord Bot that can spin up game servers on demand. We are two developers, me and my friend from uni. Its called SLASHPLAY (https://slashplay.gg) . We are trying to make it as convienient as possible to spin up a game server for friends or fellow gamers. Currently we are trying to find out if we can make a living from it :?
by zoklet-enjoyer | 2025-04-28 20:16:13+00:00
§ 46.2-862. Exceeding speed limit. A person is guilty of reckless driving who drives a motor vehicle on the highways in the Commonwealth (i) at a speed of 20 miles per hour or more in excess of the applicable maximum speed limit or (ii) in excess of 85 miles per hour regardless of the applicable maximum speed limit.

https://law.lis.virginia.gov/vacodefull/title46.2/chapter8/a...
by rayiner | 2025-04-28 20:16:43+00:00
It’s structurally impossible. The half of the political coalition that contains virtually all the people who want to build any sort of urban infrastructure is too fractured into groups that each have their own distinct priorities unrelated to infrastructure or good governance. And of course the other half of the polity hates the government.

If you’re a democrat in california, where does infrastructure fall on your list of priorities? What big voting bloc does it get you?

Here in Maryland, we’ve been building a 16 mile above ground, mostly non-grade-separated light rail for a decade already and it’s nowhere near done: https://en.wikipedia.org/wiki/Purple_Line_(Maryland). I don’t know a single person other than myself who is motivated to make it happen. Nobody is agitating to get our miserable commuter rail system to run more timely. Road construction is the only thing that ever penetrates into the public consciousness. Making anything better is very low on everyone’s list of priorities.
by NoMoreNicksLeft | 2025-04-28 20:17:04+00:00
Humans don't have a self-preservation instinct. Instead, like all life, they properly have a reproductive instinct. We only have self-preservation instincts as far as is necessary to make reproduction possible. In an age where many are deliberately "child free" it might start to look as if terror management is the name of the game, but that's just an artifact of a bunch of other neuroses that have taken hold.

I need to die so that there's room for my grandchildren and great-grandchildren.
by elchiapp | 2025-04-28 20:17:16+00:00
How is that different from choosing not to adopt a technology because it’s not widely used therefore not widely documented? It’s the timeless mantra of “use boring tech” that seems to resurface every once in a while. It’s all about the goal: do you want to build a viable product, quickly, or do you want to learn and contribute to a specific tech stack? That’s the trade off most of the time.
by tmnvix | 2025-04-28 20:17:27+00:00
I think things are different now, at least where I live.

Take a look at this photo from 1995: https://www.reddit.com/media?url=https%3A%2F%2Fi.redd.it%2F5...

Note how visible all of those primary school children would be to anyone using one of those cars in the car park. Now imagine the same scene today with the car park full of modern cars (and 'trucks') where the bottom of any of the vehicle's windows would be well above many of those children's heads.
by ChadNauseam | 2025-04-28 20:17:33+00:00
I wish more languages would lean into having a really permissive compiler that emits a lot of warnings. I have CI so I'm never going to actually merge anything that makes warnings. But when testing, just let me do whatever I want!

GHC has an -fdefer-type-errors option that lets you compile and run this code:

a :: Int a = 'a' main = print "b"

Which obviously doesn't typecheck since 'a' is not an Int, but will run just fine since the value of `a` is not observed by this program. (If it were observed, -fdefer-type-errors guarantees that you get a runtime panic when it happens.) This basically gives you the no-types Python experience when iterating, then you clean it all up when you're done.

This would be even better in cases where it can be automatically fixed. Just like how `cargo clippy --fix` will automatically fix lint errors whenever it can, there's no reason it couldn't also add explicit coercions of numeric types for you.
by pavel_lishin | 2025-04-28 20:17:51+00:00
(Also submitted here: https://news.ycombinator.com/item?id=43822992)

Neat, though I expected every individual board to have "turns" - I didn't expect that I could just pick a random board, liberate the black queen, and have her clean up every single white piece on the board without my "opponent" getting to do anything in return.
by Ygg2 | 2025-04-28 20:18:06+00:00
> If you choose to support 1.0 sure.

If you choose not to, then people wait for x.0 where x approaches infinity. I.e. they lose confidence in your crates/modules/libraries.

I mean, a big part of why I don't 1.x my OSS projects (not just Rust) is that I don't consider them finished yet.
by shadowgovt | 2025-04-28 20:18:34+00:00
Excellent write-up.

On the topic of rapid prototyping: most successful game engines I'm aware of hit this issue eventually. They eventually solve it by dividing into infrastructure (implemented in your low-level lanuage) and game-logic / application logic / scripting (implemented in something far more flexible and, usually, interpreted; I've seen Lua used for this, Python, JavaScript, and I think Unity's C# also fits this category?).

For any engine that would have used C++ instead, I can't think of a good reason to not use Rust, but most games with an engine aren't written in 100% C++.
by birdman3131 | 2025-04-28 20:19:28+00:00
So unless I am missing something this seems much less useful than windows builtin screen recorder. Any mouse movement causes it to zoom in and cut off large portions of the screen and I don't see a way to prevent this. (I can see the occasional use case but the fact that there appears no way to turn it off is a deal breaker.)

One potential useful (And I have no clue how hard to implement) thing I could see implementing would be the ability to mask out private details and have the mask follow the details as the screen is scrolled. It feels like something an LLM/AI could do.
by legitster | 2025-04-28 20:19:31+00:00
This could be absolutely true if people adapt to it, but that wouldn't happen overnight.

I would also strongly doubt that even after full adoption, Bakersfield to LA in 30 minutes is going to be much more useful and heavily trafficked on a daily basis than SF to LA in 2 hours would.

Even in Europe, their marquee city-to-city rail routes contribute a small share of overall rail traffic compared to their daily commuters.
by ChadNauseam | 2025-04-28 20:19:49+00:00
This is getting downvoted but it's kind of true. Indexing collections all the time usually means you're not using iterators enough. (Although iterators become very annoying for fallible code that you want to return a Result, so sometimes it's cleaner not to use them.)

However this problem does still come up in iterator contexts. For example Iterator::take takes a usize.
by xp84 | 2025-04-28 20:20:21+00:00
I hear you, and in my second job 20+ years ago we were still trained (in a cursory fashion) to use physical charge slips in case of a POS system network outage, a full power outage would strain my imagination for ability to transact business at the majority of stores other than small mom and pop operations, and tbh even if such an outage had happened to me in 2005, I would not expect my department store to remain open and conduct sales.

Most retail workers are GenZ and struggle to understand what this would even look like because they’ve never conducted any transaction without POS computers (for looking up prices, for tallying them, for figuring tax and total, and computing change), so even if a dusty manual in the stockroom technically spells out a method of ringing sales using nothing but pen and paper and maybe a solar calculator, I would be surprised if any of the clerks working any given day would have the initiative to initiate an offline protocol. Most likely the store manager would usher customers out, lock up the store, keep the staff for 30 minutes to see if it came back on, and then go home.
by porphyra | 2025-04-28 20:20:48+00:00
The operating speed on the fast stretch is actually one of the fastest in the world at 350 km/h, it's just that it has to waste half an hour on the Caltrain tracks from San Francisco to Gilroy and from Burbank to Anaheim. It's kinda like how the TGV from Paris to Nice goes from Paris to Marseille super fast but then has to spend hours to go from Marseille to Nice even though the latter part is a small fraction of the distance.

And yes, I agree that this "blended" design that has a lengthy slow section is very lame and bad. If only Caltrain could be quad tracked elevated viaducts.
by jpc0 | 2025-04-28 20:20:57+00:00
The SSE spec has an event id and the spec states sending last event id on reconnection. That is by its nature stateful, now you could store that in a DB/KV itself but presumably you are already storing session data for auth and rate limiting so now you had to implement a different store for events.

And I too naively believed there won’t be a need for ping/pong, then my code hit the real world and ping/pong with aliveness checks was in the very next commit because not only do load balancers and proxies decide to kill your connection, they will do it without actually closing the socket for some timeout so your server and client is still blissfully unaware the connection is dead. This may be a bug, but it’s in some random device on the internet which means I have to work around it.

Long polling might run into the same issues but in my experience it hasn’t.

I really do encourage you to actually implement this kind of pattern in production for a reasonable number of users and time, there’s a reason so many people recommend just using long polling.

This also assumes long running servers, long polling would fall back to just boring old polling, SSE would be more expensive if your architecture involves “serverless”.

Realistically I still have SSE in production, on networks I can control all the devices in the chain because otherwise things just randomly break…
by ammar2 | 2025-04-28 20:21:15+00:00
> it includes instructions for stack manipulation, binary operations

Your example contains some integer arithmetic, I'm curious if you've implemented any other Python data types like floats/strings/tuples yet. If you have, how does your ISA handle binary operations for two different types like `1 + 1.0`, is there some sort of dispatch table based on the types on the stack?
by excerionsforte | 2025-04-28 20:21:19+00:00
I love Rust, but I would not try to make a full fledged game with it without patience. This post is not so much a moving away from Rust as much as Bevy is not enjoyable in its current form.

Bevy is in its early stages. I'm sure more Rust Game Engines will come up and make it easier. That said, Godot was great experience for me but doesn't run on mobile well for what I was making. I enjoy using Flutter Flame now (honestly different game engines for different genres or preference), but as Godot continues to get better, I personally would use Godot. Try Unity or Unreal as well if I just want to focus on making a game and less on engine quirks and bugs.
by __MatrixMan__ | 2025-04-28 20:21:50+00:00
Even so, you have to run a webserver and then run a browser separately and let the app sort of envelop you in this bubble made of norms that don't jive with the rest of your OS. Like, good luck making it append logs to a file without writing a third component that you now have to manage the state of in addition to the first two.

For the majority of things I do I just want to shove data in one end and get data out of the other end without ever having to build a UI or wondering if it's "up" or "down".
Show HN: Chat to Design Forms in Minutes
by adamskrocki | 2025-04-28 20:21:56+00:00
Typeform/Jotform/etc. don't allow for true customization of their forms (e.g. a Typeform always looks like a Typeform), so I built an alternative. Chatform uses AI to generate your form design, so matching your brand or vision is as simple as describing what you want or pasting in your site.