MurphyA/hacker-news huggingface dataset:
by franga2000 | 2025-11-08 10:34:32+00:00
You can act quickly and decisively and also correctly. Take the average number of reports per day times the average length of a reported segment times two, divide effective work hours per day by that number and hire that many people to process reports. Congrats, your average time to resolution is 24 hours.

If that's too expensive, your platform is broken. You need to be able to process user reports. If you can't, rethink what you're doing.
by 59nadir | 2025-11-08 10:34:38+00:00
If you wanted to have a parameter that gets filled in when there is an error, this exact issue will remain, it's completely unrelated to which language construct you use to capture errors and has more to do with having a good idea of how your errors are allocated, if they require allocation. I don't think the commenter in the GitHub issue thought this through at all, and probably didn't expect to have it be held up as some example of why you can't return tagged unions (because it's not an example of that, not even remotely).
by AlotOfReading | 2025-11-08 10:34:46+00:00
The point is that Bluetooth descends from an independent intellectual heritage. No one was aware of her patent. The original experiments with Frequency hopping happened in the early 1900s with Marconi and Tesla. FSK was used for military radio in the 1930s and by the 40s had trickled out into widespread knowledge. Here's an example of a trade magazine from 1948 describing FSK [0] citing military work in the late 1930s, which also says

It may appear to the reader that this recent advance in telegraph technique is a rather obvious one

Going on to say that it's little studied because there simply isn't a good method to synchronize the transmissions yet. That's what Hedy and others were trying to solve, but the widespread solution would come from the independent invention of Barker codes in 1953. Many decades later when the people at Ericsson were designing what became Bluetooth, they looked at the FCC requirements that had been written to accept FSK radioteletypes in widespread use after the war and common best practices for radio system design.

[0] https://worldradiohistory.com/UK/Wireless-World/40s/Wireless...
by westurner | 2025-11-08 10:39:34+00:00
> have no idea what a feature flag is in this context nor why they would be standardized (there's only one manufacturer/vendor/supplier of TPUs).

X86, ARM, and RISC have all standardized on feature flags which can be reviewed on Linux with /proc/cpuinfo or with dmidecode.

cat /proc/cpuinfo | grep -E '^processor|Features|^BogoMIPS|^CPU'

There are multiple TPU vendors. I listed multiple AI accelerator TPU products in the comment you are replying to.

> How reconfigurable are TPUs?

TIL Google's TPUs are reconfigurable with OCS Optical Circuit Switches that can be switched between for example 3D torus or twisted torus configurations.

(FWIW also, quantum libraries mostly have Line qubits and Lattice qubits. There is a recent "Layer Coding" paper; to surpass Surface Coding.)

But classical TPUs;

I had already started preparing a response to myself to improve that criteria; And then paraphrasing from 2.5pro:

> Don't rank by TOPS/wHr alone; rank by TOPS/wHr @ [Specific Precision]. Don't rank by Memory Bandwidth alone; rank by Effective Bandwidth @ [Specific Precision].

Hardware Rank criteria for LLM hosting costs:

Criterion 1: EGB (Effective Generative Bandwidth) Memory Bandwidth (GB/s) / Precision (Bytes)

Criterion 2: GE (Generative Efficiency) EGB / Total Board Power (Watts)

Criterion 3: TTFT Potential Raw TOPS @ Prompt Precision

LLM hosting metrics: Tokens Per Second (TPS) for throughput, Time to First Token (TTFT) for latency, and Tokens Per Joule for efficiency.
by 59nadir | 2025-11-08 10:40:21+00:00
No, I write Odin for production and there is no performance difference to speak of coming from the way the compiler or language works. If you have one it's likely because of an older/different LLVM version being used, but AFAIK Odin stays as up-to-date as you can without tearing your hair out (and that's good because GingerBill has none of that to spare).

There might be a few pathological code paths in the core libraries or whatever for certain things that aren't what they should be, but in terms of the raw language you're in the land of C as much as with any of these languages; Odin really doesn't do much on top of C, and what it's doing is identifiable and can be opted out of; if you find that a function in a hot loop is marginally slower than it ought to be, you can make it contextless, for example, and see whether that makes a difference.

We haven't found (in a product where performance is explicitly a feature, also containing a custom 3D engine on top of that) that the context being passed automatically in Odin is of much concern performance-wise.

Out of the languages mentioned Rust is the one I've seen in benchmarks be routinely marginally slower, but it's not by a meaningful amount.
by anthk | 2025-11-08 10:42:00+00:00
More like complex, overloaded. ML languages have a complex syntax but are manageable. OTOH, on Lisp, about bloated languages like Common Lisp compared to Scheme, you don't have to follow all the Common Lisp Hyperspec in order to create something; a subset would be pretty fine, even without CLOS. Scheme IMHO it's worse with SRFI's with tons of opaque numbers in order to guess what does that. And don't let me start on Guile modules vs the Chicken ones...

People rants about CL being a bit 'huge', but with the introduction to the Symbolic Computation book and Paradigms of Artificial Intelligence Programming you are almost done except for a few modules from QuickLisp (CL's CPAN/PIP), such as bordeaux-threads, usockets and MCClim for an UI, which will run everywhere.

C++ templates can be far more complex than Common Lisp macros. At least with CL you have a REPL to trivially debug and inspect then. Clang and GCC just recently began to introduce * understandable* help and error messages over template parsing walls...
by nandomrumber | 2025-11-08 10:42:07+00:00
€0.1 is about AU$0.18

That’s about what our electricity used to cost.

Back before we locked ourselves in to wind and solar, and gas peaker plants, and a massive pumped hydro project that will approximate never be finished.

Sweden’s energy mix is predominantly nuclear, oil, and hydro. Wind and solar account for 10% and 1% respective.

There’s no escaping the fact everything wind and solar go electricity prices go up. Drastically.

In Australia, since 2005 wind and solar have increased to about 11% and 17% of electricity generation respectively.

And that time period correlates perfectly with the just over 100-200% increase in electricity prices, depending on where you live.

In 2005 I was paying AU$0.17 per kWh in South Australia, now that’s up around AU$0.44 per kWh. Elon even put in a big battery in South Australia. Hadn’t helped. Hasn’t helped reduce the cost of electricity. And that’s what the Australian government wants us to hail a success.

That’s 250% increase. While general inflation in the same period has been 67%.

Wind and solar haven’t even really started to put a dent in Australia’s over all energy use, which is dominated by gas and oil, and people are falling over each other to get in line to vote for more of it.

Other locations with big batteries and big electricity prices include Victoria Australia, Melbourne the capital is widely considered the California of Australia, and California itself. Big batteries, big solar, big electricity prices. Fact. Find me a counter example.

Germans are hanging solar panels off their apartment balconies. Not because they want to. Out of desperation. Just like poverty Africa. That’s equality: everyone can have nothing, and they’ll like it. My god.

No one is running an industrial economy on their balcony.
by tgv | 2025-11-08 10:42:44+00:00
Software freedom, at least for end users, is a smokescreen, too. I can revert your argument: "you want more ransomware because of a few OSS enthousiasts?" What we need is a way to curb the excesses, such as high entrance barriers to the store.

A phone/tablet is a tool, with very intense usage, and huge privacy value, not an engineer's toy.
by ojosilva | 2025-11-08 10:43:18+00:00
Here's a customer of the $200 max plan for 2 months. I fell in love with the Qwen3 Coder 480B model, Q3C, that was fast, twice the speed of GLM. GLM 4.6 is just meh, I mean, way faster than competitors, and practically at Sonnet 4.x level in coding and tool use, but not a life-changing difference.

Yes, Qwen3 made more mistakes than GLM, around 15% more in my quick throwaway evals, but it was a more professional model overall, more polished in some aspects, better with international languages, and being non-reasoning, ideal for a lot of tasks through the API that could be ran instantaneously. I think the Qwen line of models is a more consistent offering, with other versions of the model for 32B and VL, now a 80B one, etc. I guess the problem was that Qwen Max was closed source, signalling that Qwen may not have a way forward for Cerebras to evolve. GLM 4.6 covers precisely that hole. Not that Cerebras is a model provider of any kind, their service levels are "buggy" (right now it's been down for 1h and probably won't be fixed until California wakes up at 9am PST). So it does feel like we are not the customers, but the product, a marketing stunt for them to get visibility for their tech.

GLM feels like they (Z.ai) are just distilling whatever they can get into it. GLM switches to Chinese sometimes, or just cuts off. It does have a bit of more "intelligence" than Q3C, but not enough to say it solves the toughest problems. Regardless, for tough nuts to crack I use my Codex Plus plan.

Ex: In one of my evals, it took 15 turns to solve an issue using Cerebras Q3C. I took 12 turns with GLM, but overall GLM takes 2x the time, so instead of doing a full task from zero-to-commit in say 15 minutes, it takes 24 minutes.

In another eval (Next.js CSS editing), my task with Q3C coder was done in 1:30 minutes. GLM 4.6 took 2:24. The same task in Codex took 5:37 minutes, with maybe 1 or 2 turns. Codex DX is that of working unattended: prompt it and go do something else, there's a good chance it will get it right after 0, 1 or 2 nudges. With CC+Cerebras it's a completely different DX, given the speed it feels just like programming, but super-fast. Prompt, read the change, accept (or don't), accept, accept, accept, test it out, accept, prompt, accept, interrupt, prompt, accept, and 1:30 min later we're done.

Like I said I use Claude Code + a proxy (llmux). The coding agent makes a HUGE difference, and CC is hands-down the best agent out there.
by matiasmolinas | 2025-11-08 10:45:50+00:00
A year ago, if you told me I could:

• Describe a workflow once to Claude

• Have a 2GB local model execute it daily with actual reasoning

• Generate production mobile apps with on-device AI

• All for zero marginal cost

...I would've said "maybe in 5 years."

We built it. It's called LLMunix.

What if you could describe any mobile app - "personal trainer that adapts," - "study assistant that quizzes me" - and get a working prototype with on-device AI in minutes, not months?

What if every workflow you do more than once becomes an agent that improves each time?

What if AI ran locally, privately, adapting to you - not in the cloud adapting to everyone?
by chrismorgan | 2025-11-08 10:45:51+00:00
The page started out working without JavaScript as it says, but then the replacement HTML was encoded as text:

<noscript> <style>#strYQt8 { display: none; }</style> &lt;div id=&#39;stro29i&#39;&gt; …

(Edit: filed https://github.com/hackclub/how-did-i-get-here/pull/3.)
by PhilipRoman | 2025-11-08 10:46:04+00:00
The website seems to be just AI filler, I guess this is the real GitHub repo: https://github.com/am-kantox/cure-lang

I was curious about the examples but this does not seem promising...

def sort(list: List(T)): List(T) where Ord(T) = match list do [] -> [] [pivot | rest] -> sort(rest) end
by shevy-java | 2025-11-08 10:46:04+00:00
I don't really like the API design. Perhaps in the rails-world this makes sense, but it looks really strange to me.

Billing::Plan::Factory.find_or_create_by!( name: :pro, interval: 1.month, amount: 50 )

It is not only the verbosity or use of trailing '!' in a method for no real reason, IMO, but also things such as "1.month". I understand that rails thrives as a DSL, but to me having a method such as .month on an Integer, is simply wrong. Same with HashWithIndifferentAccess - I understand the point, to not have to care whether a key is a String or a Symbol, but it is simply the wrong way to think about this. People who use HashWithIndifferentAccess do not understand Symbols.
by _mocha | 2025-11-08 10:46:20+00:00
This is honestly one of the worst blog posts I've ever read, and probably does a disservice to representing MIT grads (who shaped my entire career 20-30 years ago). Anyways, as someone who was in this space, my 2 pieces of advice are: 1) either get a PhD in the field (and Apple would pick you up relatively easily) 2) have a small history of contributing to languages like rust, go or be prominent on the clang committees, llvm, ghc.

At least up until 5 years ago, the bar to join compiler teams was relatively low and all it required was some demonstration of effort and a few commits.

(Disclosure: am retired now)
Ask HN: What's a Purchase You Regret?
by znpy | 2025-11-08 10:47:09+00:00
Hello there!

I was thinking... In an era where we're constantly into buying this and that, why don't we have a thread where we just talk about stuff we bought but regret buying?

I'll start:

- I got a 34" ultrawide curved display. Philips, 34B2U5600C (3440x1440, 120Hz, USB-c and a lot of bells and whistles). It's just enormous, it takes half of my desk in depth and ~90% of my desk (130 cm) in width. Paid 400 Euros for that (new, off Amazon). It was cool at first but after a while it was feeling "heavy" on my desk. I kinda put it away and now I'm doing most of my work on "just" my 16-inches laptop display. It didn't really improve my life. Maybe I should have avoided the curved display. I'm torn between selling it and getting another one or selling it and keeping using just my laptop display.

- My ThinkPad X13G1. It just doesn't feel right. I bought it to replace my rusty X270. Supposedly it's much better (8c/16t+32GB ram vs 2c/8t+16gb ram on the X270) but it doesn't feel much snappier (same OS/Software) and battery life isn't that great either (the battery was in very good conditions when I received it). Also, when suspended the battery will drain incredibly quickly, sometimes overnight. Compared to my work macbook, it really feels like an inferior machine. Paid 400 Euros for that as well (used).
by TFYS | 2025-11-08 10:47:46+00:00
The trend is universal because birth control is becoming universal. The only places that still have high birth rates are places where birth control isn't easily available (and religious cultures). It could be driven by other factors as well, but I'm betting it's mostly just birth control. We don't have a very strong innate desire to have kids, it is the desire for sex that human reproduction has mostly relied on. We're only a couple of generations into birth control, so we're only now starting to feel the effect.
by shevy-java | 2025-11-08 10:47:59+00:00
> this is honestly the sort of thing I grew to hate in Ruby

But nobody forces you to use a DSL such as rails, so I am not sure why ruby should be hated for this when it is a rails dev who does that.

The blog has much more to do with rails than ruby; such API design is really strange.

I don't think this design causes problems as such, but it is too verbose and way too ugly. To me it seems that they are just shuffling data structures around; that could even be solved via yaml files.
by exmadscientist | 2025-11-08 10:48:09+00:00
> Simply add an MPN attribute to your component and that is it.

No, that's the problem, right there. KiCad doesn't have a parts library. KiCad has schematic elements you can manually tack parameters on to. And everyone does it slightly differently!

There's no way to have a set of parts you can select from that are guaranteed-approved (because we used them previously or whatever). There's no way to have the software just show you the entire E24+E96 series of standard 0603 resistors so you can just grab one and go and know that it's orderable. There's no way to be able to get that confusing series of diode footprints and orientations right once and store it forever so the software gets it right for you from now on. (Diodes are the worst. At least Panasonic got out of the diode business. And, yes, I was thinking of their product line when I said that.)

Yeah, sure, you can do anything by tacking parameters on schematic components. Sometimes you even have to do that. Just like programming in assembly: there's no job it can't do. But sometimes you really need a little bit more, right?

And that's notwithstanding the fact that many people who use KiCad, like our article author here, don't even bother to tag parts with an MPN parameter! That's a cultural issue, but it is one the software can and should be pushing back on.
by KronisLV | 2025-11-08 10:49:03+00:00
> [most used web framework, powering innumerable successful businesses]

> [literally unusable]

It's gotten a lot of critique over the complexity it has over the years, the same way how Next.js also has. I've also seen a frickload of render loops and in some cases think Vue just does hooks better (Composition API) and also state management better (Pinia, closer to MobX than Redux), meanwhile their SFC compiler doesn't seem to support TypeScript types properly so if you try to do extends and need to create wrapper components around non-trivial libraries (e.g. PrimeVue) then you're in for a bunch of pain.

I don't think any mainstream options are literally unusable, but they all kinda suck in subtly different ways. Then again, so did jQuery for anything non-trivial. And also most back end options also kind of suck, just in different ways (e.g. Spring Boot version upgrades across major versions and how verbose the configuration is, the performance of Python and the dependency management at least before uv), same could be said for DBs (PostgreSQL is pretty decent, MariaDB/MySQL has its hard edges) and pretty much everything else.

Doesn't mean that you can't critique what's bad in hopes of things maybe improving a bit (that Spring Boot config is still better than Spring XML config). GMail is mostly okay as is, then again the standards for GUI software are so low they're on the floor - also extends to Electron apps.
by amriksohata | 2025-11-08 10:49:18+00:00
I never got the argument that its too expensive so we can't have kids. Look at the most impoverished countries - they have much less money but have more kids and often strong senses of purpose and community.

All of it is societys perception, how we are being bought up as men and women, our actual purpose, and greed that has killed the desire for children.
by fmajid | 2025-11-08 10:49:44+00:00
I read a lot, mostly ebooks, and have an extensive collection of DRM free ebooks. That said, e-ink devices are ridiculously overpriced, seemingly because e-ink tech is patent-encumbered. Fortunately I don't mind reading on LCD and OLED screens, have been doing that for 20 years, originally on PalmOS devices.

I'd love to get a Kobo to run Koreader but not until prices have come down to under $200 for a 8" device. I'm also consideeing the PocketBook Verse, the SD card slot means I could carry my entire 67GB collection with me..
by Ameo | 2025-11-08 10:50:11+00:00
I miss when posts like this mattered.

That's not to say performance doesn't matter anymore or that blog posts on niche topics don't matter anymore.

It's more that there are 30 opponents on all sides fighting to minimize the impact of this kind of post. CPUs are still getting faster even now despite Moore's law being dead. The business or career impact of choosing between an associative list vs hashmap in a garbage-collected language like Guile Scheme is so minimal that it's hard to quantify.

If it's in a hot enough path that it matters, it's likely that there are at least 3 things you can do within 20 minutes of work (or 5 minutes of GPU time) that will solve the problem as effectively or better.

I remember the very specific period of time when blog posts talking about functional programming for React developers were en vogue. You can speed up you Scheme app by 15%, or you can build and deploy a completely new service from scratch in Node.JS in the same amount of time.

It used to feel like code had some kind of meaning or value. Now, it's just an artifact produced as a side effect of work. But that's been a trend for a decade or so now, AI is just the latest (and most significant) iteration of it.
by threeducks | 2025-11-08 10:50:21+00:00
> but we literally have no way to prove they're right

Of course we do. Just run a benchmark with Cerebras/Groq and compare to the results produced in a trusted environment. If the scores are equal, the model is is either unquantized, or quantized so well that we can not tell, in which case it does not matter.

For example, here is a comparison of different providers for gpt-oss-120b, with differences of over 10 % for best and worst provider.

https://artificialanalysis.ai/models/gpt-oss-120b/providers#...
by hgomersall | 2025-11-08 10:50:35+00:00
I'm actually curious now how this is stored on `Range` in rust. I've certainly used ..= for exactly the reason you say, but as far as I'm aware `.end` on the range is the exclusive upper bound in all cases. What happens to `.end` in the overflowing case?

Edit: it doesn't use Range for ..=, but rather RangeInclusive, which works fine.
by westurner | 2025-11-08 10:50:40+00:00
Were the procedures for handling Null and Null pointers well defined even for C in 1985 when IEEE-754 was standardized?

There's probably no good way to standardize how to fill when values are null or nan. How else could this be solved without adding special cases for NaN?

In a language with type annotations we indicate whether a type is Optional:

def sum(a: float|None, b: Optional[float]) -> None|float : def sum(a: float|np.nan|None, b: Optional[float|np.nan]) -> None|float|np.nan :
by byroot | 2025-11-08 10:50:45+00:00
> I understand that rails thrives as a DSL, but to me having a method such as .month on an Integer, is simply wrong

It's not that different from `1.times` or `90.chr` which are vanilla Ruby.

> HashWithIndifferentAccess

HashWithIndifferentAccess was an unfortunate necessity to avoid DOS attacks when Symbols used to be immortal. There's no longer a reason to use it today, except for backward compatibility.
by jwr | 2025-11-08 10:52:25+00:00
Transducers are IMHO one of the most under-appreciated features of Clojure. If you want a really good intro, watch Rich Hickey's talk about transducers: https://www.youtube.com/watch?v=6mTbuzafcII (Rich is an excellent speaker and most of his talks are really worth watching, even if you don't use Clojure).

The thing about transducers is that once you start using them, the abstractions click in your mind and you start using them more and more in your code. Many things our software does can be looked at as pipelines, and transducers let you write composable functions and put them together into pipelines. As you see more pipelines in your code, you will write those composable functions and reuse them in various places.

Experienced Clojure programmers will rarely use loops, for me transducers are the #1 choice whenever I have to process a collection of any kind.

Their efficiency (no intermediate collections!) is a nice bonus — you get both high-level composable code and efficiency, which is incredible.

One thing I dislike about transducers is when I need a stateful one: these are hard to understand and very difficult to write. I rarely do this, except when I really want to stick to the transducer abstraction and I have a couple of hours to spend on a puzzle. But you rarely need to write your own stateful transducers, usually the built-in ones are enough (things like take/drop).