MurphyA/hacker-news huggingface dataset:
by noobermin | 2025-09-23 21:14:37+00:00
So, the OP is an actual educator whereas I've only really advised grad students or undergrads. I'm surprised being exposed to any new language doesn't come with it's "whys" for students. Like why should we care about type safety anyway? Or why not loop over all indices, why use (:) for some of them? May be I'm not really convinced that the whys from students in a python class are worse than the whys in fortran. Honestly, if there is some compiler option for turning on implicit none by default, I'd just do that too just to get people in the door as that too feels like more confusion than it's worth keeping, although they do need to learn what it means before they leave.

Also, the downside is fortran does not have nice plotting capabilities without an external tool. At least I know of no nice libraries like matplotlib, which again is a point in just teaching them a more general purpose language from the get go to get used to it so they can plot and code in the same language...or perhaps, matlab/octave et al as others suggested. I feel like the niceness of fortran (namely, well defined type safe function/subroutine interfaces and easy path to writing performant code) that isn't offered by python is only useful after the first threshold of learning to put algorithm to paper. The literally second (and arguably for some fields, even more important) task of actually plotting results doesn't have the same convenience as the intrinsic procedures in fortran, whereas if they had learned julia or python, these tools would be at the very least be at the same convenience level of the array facilities, essentially behind a rather easy[^] to use library. In fact, in julia, you're already mostly there although it's not my cup of tea. Perhaps the answer is julia after all.

Does OP's courses just use an external program (like gnuplot) or a black box to plot?

[^] easy to use once you know how to program a little, of course.
by jaggederest | 2025-09-23 21:14:52+00:00
If you do not believe that is already true on multiple axes, you are probably mistaken. The combination of automated license plate scanners, phone beacon data, and behavioral metrics make that relatively straightforward to get, in aggregate.

I worked on a project where we could tell how many users were in a given store at a time (historically, not realtime) based on wifi traces, mobile data aggregation from carriers, and bluetooth pings. We could generally back it up to even general demographic data like how much disposable income the users were likely to have. Interesting project, deeply worrying how much data is running around out there.
by fluoridation | 2025-09-23 21:15:09+00:00
>what an actual non-Markovian LLM would look like? Something which has an infinite context? It's not physically possible... At this point it sounds like "it's a Markov chain" is not a very useful statement.

Uh... You're moving the goalposts. I don't know the exact definition of "LLM", but let's suppose that it and the definition of "Markov chain" make us conclude that LLMs are necessarily Markov chains. "It's a Markov chain" is still a useful statement, because there are processes that are neither LLMs nor Markov chains.
by Ostrogoth | 2025-09-23 21:15:45+00:00
Another vote for Organic Maps. I use it as a lightweight maps app for backcountry or traveling in foreign countries where I don’t have a sim card. You can also record tracks in the app, or import .gpx files. In airplane mode it has low impact on battery consumption.

I was also pleasantly surprised to find out iOS Star Chart app (https://apps.apple.com/us/app/star-chart/id345542655) functions entirely offline. Recently used it while camping, and it just needed a GPS coordinates fix to adjust sky map to location.
by mattwilsonn888 | 2025-09-23 21:16:01+00:00
I think you are clearly good-faith.

The issue is the underlying and unfair assumption that is so common in these debates: that the memory-unsafe language we're comparing against Rust is always C/C++, rather than a modern approach like Zig or Odin (which will share many arguments against C/C++).

You can prove to yourself this happens by looking around this thread! The topic is Zig vs. Rust and just look at how many pro-Rust arguments mention C (including yours).

It's a strong argument if we pose C as the opponent, because C can be so un-ergonomic that even Rust with its added constraints competes on that aspect. But compare it to something like Zig or Odin (which has ergonomic and safety features like passing allocators to any and all functions, bounds checking by default, sane slice semantics which preclude the need for pointer arithmetic) and the ergonomics/safety argument isn't so simple.
by thesz | 2025-09-23 21:16:02+00:00
> It ‘just’ needs a state for every possible random color between.

You can use skipgrams - prefixes with holes in them.

Sparse Non-negative Matrix Language Model [1] uses them with great success.

[1] https://aclanthology.org/Q16-1024/

The pure n-gram language models would have hard time computing escape weights for such contexts, but mixture of probabilities that is used in SNMLM does not need to do that.

If I may, I've implemented an online per-byte version of SNMLM [2], which allows skipgrams' use. They make performance worse, but they can be used. SNMLM's predictive performance for my implementation is within percents to performance of LSTM on enwik8.

[2] https://github.com/thesz/snmlm-per-byte
by 9rx | 2025-09-23 21:16:45+00:00
> Go is a language with structs, arrays

Just like Ruby. Just like pretty much every language people actually use.

> value semantics and pointers

Value semantics are one of the tricks it uses to satisfy the "but faster" part. It is decidedly its own language. But it only supports value semantics, so this is more like Ruby, which only supports reference semantics. Rust supports both value and reference semantics, so it is clearly a very different beast.

> and an `unsafe` package for performing low-level operations on those pointers

The Ruby standard library also includes a package for this.

> And in practice Go and Rust have found use in a lot of the exact same systems programming and network programming domains, as replacement languages for C.

Maybe in some cases, but the data is abundantly clear that Go was most adopted by those who were previously using Ruby and Python. The Go team did think at one point that it might attract C++ programmers, but they quickly found out that wasn't the case. It was never widely adopted in that arena. Whereas I think it is safe to say that many C++ programmers would consider Rust. Which makes sense as Rust is intended to play in the same ballpark as C++. Go was explicitly intended to be a 'faster Python'.

> but to say it's at all similar to Python or Ruby is nonsensical.

Go is most similar to Go, but on the spectrum is way closer to Python and Ruby than it is Rust. It bears almost no resemblance to Rust. Hell, even the "Rustacians'" complaint about Go is that it is nothing like Rust.
by tiltowait | 2025-09-23 21:16:52+00:00
I also attended one. I liked it, except for the odd way people spoke of him in the past-tense, as if he weren't, y'know, present. But I assume that was this particular crowd being weird. Probably the first person started it, and everyone after unconsciusly adopted the same language.

When he did pass, I was sad, but less sad, I think, than I would have been. It was an interesting experience.
by b_e_n_t_o_n | 2025-09-23 21:17:04+00:00
I'm kind of in the same boat although the timeline is more compressed. People claim they're more productive and that AI is capable of building large systems but I've yet to see any actual evidence of this. And the people who make these claims also seem to end up spending a ton of time prompting to the point where I wonder if it would have been faster for them to write the code manually, maybe with copilot's inline completions.
by edenr | 2025-09-23 21:17:16+00:00
Inference Gateway just released a new browser-agent as an OCI image, now publicly available in the registry: https://registry.inference-gateway.com/

It’s essentially an A2A server agent that can browse the web on your behalf - including visiting pages and performing searches.

The example is pretty simple, but you can do with it all sort of things you like.
by TheAlchemist | 2025-09-23 21:17:17+00:00
It's very funny that people still take it seriously. They should add that they can also deliver anywhere on Mars, thanks to FSD. Optimus would take care on moving the cargo from Starship to trucks, once on Mars. Still TBD if it will be Tesla Semi, Cybetruck (made for Mars) or maybe Nikola trucks that rolls down the hill very well and the CEO seems to want to get back in this business (the business of selling promises).

US is becoming a joke. It still has a lead in a lot of areas, but much less than they think, and they seem more interested in selling narratives than real products.
by NielsAndersen67 | 2025-09-23 21:17:44+00:00
I have been writing Rust code for 3.5 years. I never fight the borrow checker. The ownership rules are a blessing, when ever the compiler yells at me, then I know I am doing something that would have caused a seg fault i. C. It took a little while to get used to Rusts syntax, but once I got it, it was the best programming language I have ever used. It is just so beautiful how it enables multi threading and ensures that all errors are handled.
by tomhow | 2025-09-23 21:17:53+00:00
We're having to point out almost the same guidelines that we did just a few months ago:

Please don't fulminate.

Please don't use Hacker News for political or ideological battle. It tramples curiosity.

You can't comment like this on HN, no matter who or what you're commenting about. HN is only a place where people want to participate because others make the effort to keep the standards up. Please read the guidelines and make an effort to observe them if you want to keep participating here.

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

Edit: looking at your posting history, you it appears you are using HN primarily for ideological battle, which is against the intended purpose of HN. We have to ban accounts that keep up this kind of activity, so please make an effort to use HN as intended in future.
by on_the_beach | 2025-09-23 21:18:09+00:00
This is super cool. Hopefully it will flush out other issues in Go too.

But I wonder why its not trivial to throw a bunch of different inputs at your cyphering functions and measure that the execution times are all within an epsilon tolerance?

I mean, you want to show constant time of your crypto functions, why not just directly measure the time under lots of inputs? (and maybe background Garbage Collection and OS noise) and see how constant they are directly?

Also some CPUs have a counter for conditional branches (that the rr debuger leverages), and you could sample that before and after and make sure the number of conditional branches does not change between decrypts -- as that AGL post mentions branching being the same is important for constant time.

Finally, it would also seem trivial to track the first 10 decrypts, take their maximum time add a small extra few nanoseconds tolerance, and pad every following decrypt with a few nanoseconds (executing noops) to force constant time when it is varying.

And you could add an assert that anything over that established upper bound crashes the program since it is violating the constant time property. I suppose the real difficulty is if the OS deschedules your execution and throws off your timing check...
by toast0 | 2025-09-23 21:18:30+00:00
> It's just inherently incompatible with overcommit, isn't it?

It's true that if overcommit is enabled, you can't guarantee you won't end up with a page fault that can't be satisfied.

But my experience on FreeBSD, which has overcommit enabled by default and returns NULL when asked for allocations that can't be (currently) satisfied is that most of the time you get a NULL allocation rather than an unsatisfied page fault.

What typically happens is a program grows to use beyond available memory (and swap) and it does so by allocating large, but managable chunks, using them, and then repeating. At a certain point, the OS struggles, but is typically able to find a page for each fault, but the large allocation looks too big, and the allocation fails and the program aborts.

But sometimes a program changes its usage pattern and starts using allocations that had been unused. In that case, you can still trigger the fatal page faults, because overcommit let you allocate more than is there.

If you don't want to have both scenarios, you can choose to eliminate the possibility of NULL by strictly allowing all allocations (although you could run out of address space and get a NULL at that point) or you can choose to eliminate the possibility of an unsatisfied page fault by strictly disallowing overcommit. I prefer having NULL when possible, and unsatisfied page faults when not.
by kelnos | 2025-09-23 21:18:42+00:00
I think the GP actually meant a third of eligible voters, not of those who actually vote. Turnout is often not that great in countries that don't legally require voting, especially when voters are dissatisfied with the choices they have. In the 2024 US presidential election, for example, ~89 million eligible voters did not vote, which puts Trump's win at 32% of eligible voters, just under a third.

Whether or not this is a useful/interesting metric is debatable, I suppose.

Swing voters / swing states / whatever the particular country-specific analog is -- this is a symptom of poor voting systems; unfortunately the people in power like how this works, and so it won't change.

It's also, at least in the US, a collective action problem: a state that tries to be more "fair" (doesn't gerrymander, perhaps awards presidential electoral votes in proportion to the popular vote percentages, etc.) will end up giving seats/votes to the "other side" more often than polarized states that stick with FPTP.
by imoverclocked | 2025-09-23 21:18:45+00:00
I can see how you got there since I did use the term "both sides." My argument is that anyone can make the same claim towards any stance with the exact same passion. Making that claim simply polarizes the opposing viewpoint further. The discourse doesn't provide constructive feedback nor a reason outside of a bandwagon style pressure to conform to a different opinion. Arguably, a cult of personality is part of the problem in the first place.

HN tends to value academic discourse rather than emotional triggers. While both do exist here, academic discourse is generally the goal.
by kgeist | 2025-09-23 21:19:19+00:00
I have an idea of how they work. At the end of the day, it's all just numbers. You say you put "one message", but in reality it's N input numbers corresponding to the tokens (where N can very from 1 to any size). Basically N variables. An LLM is one large function which takes N values as input and produces a new output value. So you can view an LLM as y = f(a, b, c, ...)

What I don't understand is how the line is drawn between "past" and "present". Why are variables a,b,c viewed as "present" and not "past"? How is past defined? Why can't you view token generation as f(past1, past2, past3, present)?

As I said, it does look "Markovian" if the number of "pasts" is fixed, but again, what exactly is not Markovian then? Infinite inputs? Everything in the real world is finite.
by brap | 2025-09-23 21:19:33+00:00
The problem is that once you load a tool’s response into context, there’s no telling what the LLM will do. You can escape it all you want, but maybe it contains the right magic words you haven’t thought of.

The solution is to not load it into context at all. I’ve seen a proposal for something like this but I can’t find it (I think from Google?). The idea is (if I remember it correctly) to spawn another dedicated (and isolated) LLM that would be in charge of the specific response. The main LLM would ask it questions and the answers would be returned as variables that it may then pass around (but it can’t see the content of those variables).

Edit: found it. https://arxiv.org/abs/2503.18813

Then there’s another problem: how do you make sure the LLM doesn’t leak anything sensitive via its tools (not just the payload, but the commands themselves can encode information)? I think it’s less of a threat if you solve the first problem, but still… I didn’t see a practical solution for this yet.
by itopaloglu83 | 2025-09-23 21:20:16+00:00
It’s a mind blowing achievement, nothing below sorcery if you think about it.

ASML machines are hitting tin droplets with 25kW laser 50,000 times a second to turn them into plasma to create the necessary extreme ultraviolet light, and despite generating 500W of EUV, only a small fraction can reach the wafer, due to loses along the way. I believe it was like 10%.

Here’s an incredible, very detailed video about it: https://youtu.be/B2482h_TNwg
by 0xbadcafebee | 2025-09-23 21:20:33+00:00
I don't think every website you visit should be paid. Who says this random website even deserves payment? This would incentivize people to use tricks to redirect traffic to their websites (which already happens..). Imagine a world where, in order to step into a retail store and browse the merchandise, you had to pay $0.25. Payment systems are already a nightmare, this would add headaches. And just because it's a non-profit or federated doesn't mean anything; show me a non-profit and I'll show you a hierarchical organization with a rich board, poor workers, and problematic outcomes.

People need to think long and hard about why they think there should be unlimited stuff on the internet. Have you looked around? It's mostly crap. Random scribblings by opinionated amateurs, exhibitionists shilling snake-oil, "products" like online games or unlimited videos designed to sell your personal information for a profit, "news" that is 100% gossip, and an unlimited number of echo chambers. We need less incentive for all this crap, not more. But ads are never going away, so it's moot.
by xg15 | 2025-09-23 21:21:45+00:00
I've never understood how that legitimacy extends to foreign policy though, especially the "coercive" kind.

Like, democratic elections obviously give the elected legitimacy to govern the populace that just elected them. But sanctions (or military interventions or wars) by their very definition are enacted on a different population, that had no democratic means to influence that decision.

UN sanctions are at least somewhat different because they are supposed to be decided by vote of the constituent countries.

But US sanctions are essentially "some people elected the President because they liked his views on domestic tax policy or trans people, therefore he gains the right to call airstrikes on some place halfway across the world or forbid the entire world from doing business with that place".

It makes no sense.
by bluehatbrit | 2025-09-23 21:22:11+00:00
The hubris on display in this article is wild, even for DHH. As a Brit, he's got no idea what he's on about. The bit about "the boats" is just a complete misunderstanding of the facts.

If one is not from a country, has no family from that country, and has never lived there - one shouldn't have much of an opinion about what's going on there. To then assume those opinions could be even remotely correct is an arrogance of an astounding proportion.
by danans | 2025-09-23 21:22:34+00:00
> Why are you demanding absolute, unimpeachable rigour when vendors give specific figures, but are comfortable with hand waving when it comes to complaining about energy use?

Because the evidence that AI data centers are using a lot of energy (generated by fossil fuels in particular) is observable in current concrete reality, like the xAI datacenters running gas turbines adjacent to a neighborhood in Memphis, TN:

https://gasoutlook.com/analysis/xai-data-centre-emits-plumes...

Companies like OpenAI, Google, and xAI have an incentive to downplay the energy usage of their facilities. If not, they should publish their methodology. The burden is on them to prove that they won't drive up energy prices and increase emissions.
by djeastm | 2025-09-23 21:23:11+00:00
I had a similar experience. There was a point where my expectations became greater than my skill. Whatever simplicity I started with, I kept wanting more interactivity. I kept having to ask myself, "ok, now am I going to implement THAT in HTMX?" and I'd figure out some clever solution that worked... but only just.

I also could never quickly refactor or move things around without a headache. Skill issue, possibly...

So I ended up rewriting in React, which overall has been just better to meet the ever increasing interactivity requirements of my site and also my preferred workflow.
by kelnos | 2025-09-23 21:23:22+00:00
> Low turnout means non-voters [...] find no palpable option on the ballot sheet.

That alone is pretty un-democratic, no? Certainly politics is a world where it's hard to find an ideal situation pretty much ever, but I think a democracy where a third or more of eligible voters don't want to support any available candidate... that doesn't sound particularly democratic.

The US with its two-party system suffers from this problem, and it's a very bad one. There were more eligible voters in our 2024 presidential election that didn't vote at all (89M) than there were people who voted for Trump (77M) or Harris (73M). It's pretty messed up that more than a third of the electorate was so dissatisfied with their options that they didn't cast a ballot at all.
by brewtide | 2025-09-23 21:23:23+00:00
Same here for all of the 'self hosted' things. I've also just realized that my UDM has a wireguard implementation titled 'teleport' that seems to do basically the same thing. This is nice because sometimes the server at home that is hosting tailscale breaks, and the UDM will let me into the network at the router level. Knock on wood, that's yet to crash.
by mike1o1 | 2025-09-23 21:23:38+00:00
My youngest is absolutely obsessed with construction trucks. We really love the "Construction Site" series by Sherri Duskey Rinker. Some of the later books in the series go into how roads are built, airports, etc. Really lots of fun for anybody else who has little ones interested in construction. https://www.goodnightconstructionsite.com/
by xyzzy_plugh | 2025-09-23 21:23:48+00:00
I disagree that the bank models are broken. At face value, a more effective method is to pay the fee to the issue to get the updated card, if it exists. Nearly every issuer supports this nowadays. If you've ever wondered why your subscription magically updated to your new card after your old one expired, then this is precisely what they did. It's easy to do this with Stripe as well.

If customers care deeply about their subscription and you support adding multiple cards to ensure payments don't fail, then great. I'm not sure this makes sense as a product, though. It's very easy to implement this sort of dunning, roll over to next card, rinse-repeat strategy. The TCO of an additional vendor in this critical path is unlikely to be worth it, especially with the direction the merchant-of-record-as-a-service industry is headed.

In any case, one path I was insinuating is that these failure cases are good opportunities for customer engagement. Often times it can be as simple as the card-holding manager left a the company and no one realizes the sub is on their account. Depending on your response, this sort of event can make a huge difference to your funnel/lifecycle.

I wish you luck but I just don't think the market is there.

If, however, you also have an off-ramp to debt collecting then I think this is a viable product when targeting certain markets.
by tptacek | 2025-09-23 21:24:17+00:00
There are all kinds of desires local communities might have that are proscribed by state law. Why should this one be different? If you don't want those laws passed, organize for a candidate who will oppose them. If the state goes the other way on a land-use issue within that state, it's hard for me to see why there's some moral mandate that local NIMBYs be allowed to overrule them.