MurphyA/hacker-news huggingface dataset:
by Theofrastus | 2025-05-08 08:20:35+00:00
Slightly related: I'm currently reading manga on a normal Android tablet using Mihon. I'd love to read on an eInk display, but I'd rather manage my library on device instead of having to use a pc and transferring chapters manually.

Does anyone have experience with Anrdoid capable eInk tablets? Are there any good, affordable ones?
by virgilp | 2025-05-08 08:20:36+00:00
I find that structural typing is the most useful thing and unfortunately few languages support it. I'd like a language where:

- If I have a class Foo and interface Bar, I should be easily able to pass a Foo where Bar is required, provided that Foo has all the methods that Bar has (sometimes I don't control Foo and can't add the "implements Bar" in it).

- I can declare "class Foo implements Bar", but that only means "give me a compilation error if Bar has a method that Foo doesn't implement" - it is NOT required in order to be able to pass a Foo object to a method that takes a Bar parameter

- Conversely, I should be able to also declare "interface Foo implementedBy Baz" and get a compilation error if either one of them is modified in a way that makes them incompatible (again - this does not mean that Baz is the _only_ implementor, just that it's one of them)

- Especially with immutable values - the same should apply to data. record A extends B, C only means "please verify that A has all the members that B & C have, and as such whenever a B record is required, I can pass an A instead". I should be able to do the reverse too (record B extendedBy A). Notably, this doesn't mean "silently import members from B, and create a multiple-inheritance-mess like C++ does".

(I do understand that there'd be some performance implications, but especially with a JIT a feel these could be solved; and we live in a world where I think a lot of code cares more about expressiveness/ understandability than raw performance)
by buran77 | 2025-05-08 08:21:09+00:00
The "boiling the ocean" argument comes up every once in a while for some time now, just a lot more structured and number packed in the age of LLMs. There are even funny "security" levels based on this [0] like "lake security".

The picture they paint is very useful to help people grasp the scale of "worst case" brute forcing while being completely misleading on the effort needed to break encryption "somehow". Cracking the encryption isn't usually about brute forcing every possible combination, it's all about finding or building a flaw in the algorithm.

Bike thieves don't go through the 10000 combinations on your lock, scammers don't try every possible email password, etc.

Brute forcing a key finds you one answer at a time, hacking the algorithm finds you all answers at once. Without boiling the ocean.

[0] https://asecuritysite.com/blog/2018-08-05_Boiling-Every-Ocea...
by omneity | 2025-05-08 08:21:53+00:00
> The strictness even allows us to remove the if check inside the function, since now TypeScript gives us the compile-time guarantee that obj will always have property key.

This is a dangerous suggestion. While the author does acknowledge it is a compile-time guarantee only, that doesn’t imply it is safe to remove the if inside the function.

An API call, reading a file, calling less well-behaved libraries or making some system calls can all result in objects that pass compile-time checks but will cause a runtime exception or unexpected behavior.

As for the thesis of TFA itself, it sounds quite reasonable. In fact a high “level” of typing can give a false sense of security as that doesn’t necessarily translate automatically to more stable applications.
by rendx | 2025-05-08 08:23:00+00:00
Congrats! This looks really nice!

Unfortunately, a big no and showstopper for me is the current lack of pricing information. The only thing I can find about the subscription is buried in the FAQ under "Account".

"All paid plans include premium features such as unlimited receipt storage, advanced travel reporting, multi-currency support, and priority customer support." -- this means the non-pro version is limited; I couldn't find information about how exactly.

I consider this a dark pattern and will not even try your software unless you add transparent and clear information e.g. in the form of a Pricing page.

(This is from the Apple App Store, which luckily forces some element of transparency: "Coffee at the Airport $2.99 Postcard from the Road $0.99 First-Class Thanks $9.99 Pro (lifetime) $89.99 Pro (annual) $59.99 Pro (monthly) $8.99".)
by jajko | 2025-05-08 08:23:54+00:00
Not sure what you are complaining about, I have Samsungs surround soundbar, they are amazing for the price (apart from fuckup with forced updade bricking the bar, but I'd never ever update soundbar or similar tech if it just works... why? There is never any gain just potential risks, I don't do ebanking via soundbar ffs).

My TV is just a rather basic chinese 75" TCL, and I have absolutely 0 zilch ads anywhere apart from actual Google products (youtube of course but thats a terrible experience anywhere without ublock origin or similar, and OS showing on the background in main menu ads for their paid movies - the place I spend maybe 3s during start if at all and they don't even look like ads just background). If I launch straight ie netflix 0 nanoseconds spent seeing ads. If I play from USB there is nothing. And this is rock bottom chinese stuff.

Turning on TV which is in sleep mode is like 2s max, another 2s and soundbar is on automatically via eArc.

I used to have B&W towers with Pioneer receiver (bought for peanuts, older tech sounds 100% as new one) but then I realized they add friction to whole experience and I prefer a small notch lower sound quality to convenience and surround. Samsung soundbar with that TV does that 100%. Apart from playing music only I don't even notice the difference.

Is this maybe region specific behavior? I live in Switzerland, US consumers are widely known to accept way more ads than other western countries, plus there is a lot of wealth in that single market.

Have a 10TB movie collection on an external HDD (mostly 1080p x265 rips and few 4K ones) but its less convenient and I have to download new stuff myself. Plus I love standup collection Netflix has.

Total price cca 1.5 years ago - cca 1700$ and a proper cinema experience.
by josephg | 2025-05-08 08:24:20+00:00
> But assume there are 3 objects with distinct properties...

Why would we assume that? If the objects are entirely distinct, why are you combining them together into one class at all? That doesn't make any sense. Let distinct types be distinct. Let consumers of those types combine them however they like.

> But fundamentally there's no OTHER SIMPLER way to merge two objects without resorting to complex nesting. [...] You have two classes A and B and both classes have 90% of their properties shared. What is the most fundamental way of minimizing code reuse? Inheritance. That's it.

So now the objects have 90% of their properties shared. That's different from what you were saying earlier. But moving on...

The composition answer is similar to the inheritance answer. Take the common parts and extract them out into a self contained type. Use that type everywhere you need it - eg by including it in both A and B.

> given this: A = {a, b, c, d} I want to create this: B = {a, b, c, d, e}. [...] What's the best way to define B while reusing code?

Via composition, you do it like this:

B = { a: A, e }

What could be simpler than that?

You keep claiming that inheritance is simpler. But then you go on to say this:

> The problem with inheritance has to do with human capability. We can't handle the complexity that arises from using it extensively. [..] It is human nature or our incapability of DEALING with the complexity that arises from it. The issue is the coupling is two tight so you make changes in one place it creates an unexpected change in another place. Our brains cannot handle the complexity.

In other words, using inheritance increases the complexity of the resulting code for the human brain. It makes our code harder to read & understand. I absolutely agree with this criticism you're making.

And that's an incredibly damning criticism, because complexity is an absolute killer. Your capacity to wrangle the complexity of a given piece of code is the single greatest limitation of any software developer, no matter how skilled. Any change that makes your code more complex and harder to understand must be worth it in some way. It must pay dividends. Using inheritance brings no benefit in most cases over the equivalent compositional code. The only thing that happens is that - as you say - it makes the software harder for our brains to handle.

If you ask me, that's a terrible decision to make.
by dinkblam | 2025-05-08 08:24:45+00:00
> What’s even more confusing is that I’ve seen general-purpose to-do or reminder apps on the App Store that somehow got approved for Critical Alerts, even though their use case seems far less urgent

thats because App Store review is a.) random and b.) they play favorites so the same rules don't apply to everyone

we got rejected because of "Mac*" in the name. we pointed them to a dozen others that had it, where it seemingly was no problem. didn't help.
by lmm | 2025-05-08 08:26:07+00:00
Objective-C and Smalltalk were always niche languages, at least by comparison to Java and C#, and I think Smalltalk fans underestimate the value of many things.

C++ does not (or at least did not at the time) have a concept of interfaces. There was a pattern in some development communities for defining interfaces by writing classes that followed particular rules, but no first-class support for them in the language.
by dinfinity | 2025-05-08 08:26:15+00:00
> Personally I'm not interested in chatting with AI agents

Why, though? If the AI agent is making sense, then what does it matter?

For certain types of conversations I've had more interesting conversations with AI than with a solid 90% of people I've ever interacted with. Really not that surprising given that most people have only an average grasp of most things and a poor grasp of very specific things.
by globular-toast | 2025-05-08 08:26:25+00:00
Have you sat down and read the SQLAlchemy docs properly? It made a lot more sense to me once I'd set aside an hour or two to work through the Unified Tutorial.[0] I feel like these days people just want quick answers to do very specific things but that's a very inefficient way to learn something like SQLAlchemy.

If you know the SQL you want it's just a matter of writing it in SQLAlchemy's query language which is quite close to SQL. Should just be a matter of practice to become fluent in it. "Complex queries" usually turn up when you're doing something like rendering a table or report or something. You don't need the ORM for this kind of thing, just write a query.

An ORM is useful when you want to write domain logic to do read/write operations against domain entities and persist them back to a database. IMO people get hung up on ORMs and think if they're using one then they have to use it for everything then do the most horrible contortions that should have just been db queries. SQLAlchemy allows you to use the ORM judiciously.

[0] https://docs.sqlalchemy.org/en/20/tutorial/index.html
by freehorse | 2025-05-08 08:26:48+00:00
The only issue I would imagine is not being able to use prompt caching, which can increase the cost of API calls, but I am not sure if prompt caching is used in general in such a context in the first place. Otherwise you just send the "history" in a json file, there is nothing mystical about llm chats really. If you use an API you can just send to autocomplete whatever you want.
by pm215 | 2025-05-08 08:27:15+00:00
There's definitely scope for doing more of that. But notice also that of the 200 students who also got that opportunity alongside him, 195 stopped attending those lectures after just a few weeks; we don't know about the other 4 but I'm guessing they didn't all change their life trajectories as a result. So you're looking for needles in haystacks, and if you do too much of it you're providing an experience that 95% of your audience concludes is a waste of their time.
by zeenatlawal | 2025-05-08 08:28:34+00:00
Frontend Developer

Location: Northampton, UK Remote: Yes Willing to relocate: Yes Technologies: JavaScript/TypeScript, NextJS, React, Material-UI, Tailwind Résumé/CV: https://drive.google.com/file/d/124ZSrJd9b67RYtDXN8JFwm1_m8pRrEGp/view Email: zeenatlawal82 [at] gmail.com LinkedIn: http://www.linkedin.com/in/zeenatlawal

I'm a front-end software developer with 3+ years of experience creating user-friendly web interfaces, looking for an opportunity to contribute to innovative projects while collaborating with a diverse team of talented individuals. I am dedicated to leveraging technology to make a meaningful difference.
by PaulRobinson | 2025-05-08 08:29:10+00:00
Word Error Rates (WER), are the standardised metric for understanding that. The number is the number of words you would need to add, remove or replace per 100 words (so lower is better). Spanish these days is often down in the 2-3 region, English in the 4 region, and Finnish in the 7-8 region. Slovenian is typically 15-20, and Punjabi, Bengali and other SE Asian languages hit at 40+.

By far the biggest factor seems to be the amount of translated material in that language, followed by how "obvious" the rules of the language are making it easy to decompose algorithmically.
by ralfd | 2025-05-08 08:29:16+00:00
Unacceptable? How often does that happen (> 10 years?) without one having an old computer lcd from 2016 as backup in the cellar? Or a dirt cheap mini hdmi 7-inch replacement ordered overnight on Amazon?

Aside my guess is the Apple TV does usually work “headless” in OP use case with music playing controlled from his phone. One only needs a tv for streaming video (obviously) and I think for initial setup.
by nextaccountic | 2025-05-08 08:32:01+00:00
Yeah, but this isn't the only bad thing about unwinding. Much worse than just catching panics is the fact that a panic in a thread takes down only that thread (except if it is in the main thread). If your program is multithreaded, panic=unwind makes it much harder to understand how it reacts to errors, unless you take measures to shut down the program if any thread panic (which again, requires catch_unwind if you have unwinding). Also: that's why locks in Rust have poisoning, they exist so that panics propagate between threads: if a thread panics while holding a lock, any other thread attempting to acquire this lock will panic too (which is better than a deadlock for sure)

And that's why my programs get compiled with panic=abort, that makes panics just quit the program, with no ability to catch them, and no programs in zombie states where some threads panicked and others keep going on.

But see, catch_panic is an escape hatch. It's not meant to be used as a general error handling mechanism and even when doing FFI, Rust code typically converts exceptions in other languages into Results (at a performance cost, but who cares). But Rust needs a escape right, it is a low level language.

And there is at least one case where the catch_unwind is fully warranted: when you have an async web server with multiple concurrent requests and you need panics to take down only a single request, and not the whole server (that would be a DoS vector). If that weren't possible, then async Rust couldn't have feature parity with sync Rust (which uses a thread-per-request model, and where panics kill the thread corresponding to the request)
by mastabadtomm | 2025-05-08 08:32:59+00:00
There is one more project that aims to build a MongoDB-like query engine and uses Redis wire protocol. It's Kronotop: https://github.com/kronotop/kronotop

Kronotop uses FoundationDB as a metadata store for document indexes and the other stuff. It stores the document bodies on the local disk and supports primary-follower replication.

It also works as a RESP3/RESP2 proxy for FoundationDB API.
by JR1427 | 2025-05-08 08:36:00+00:00
You can identify quite a few pathogens with Attenuated Total Reflectance Fourier Transform Infrared Spectroscopy. I think the machines for that are smaller and cheaper than mass spec machines.

see https://pmc.ncbi.nlm.nih.gov/articles/PMC5631018/ , and this company that is commercialising it https://microbira.com/
by jampekka | 2025-05-08 08:36:38+00:00
The main practical reason why square error is minimized in ordinary linear regression is that it has an analytical solution. Makes it a bit weird example for gradient descent.

There are plenty of error formulations that give a smooth loss function, and many even a convex one, but most don't have analytical solutions so they are solved via numerical optimization like GD.

The main message is IMHO correct though: square error (and its implicit gaussian noise assumption) is all too often used just per convenience and tradition.
by mihaaly | 2025-05-08 08:37:09+00:00
> How much do you have to pay for a quick boot, no ads, and a private movie or music experience?

Beyond the speaker and amplifier of your choice (both dumb! or dumbed down) a few hundreds of USD and couple of weeks or months of learning and tinkering with low cost hardware and open source software for HiFi use. Some Raspberry Pis and matching DAC allowed me to have a very decent experience I needed (around KEF speakers). There were dead-ends, confusions, restarts, dubious or closed down solutions offered but you will rely moslty (not completely) on your own in the end if done right, and not exposed to the mercy of ruthless conglomerate assoles that much.
by aziaziazi | 2025-05-08 08:39:22+00:00
Assuming good faith of your question:

Your body has other mechanisms to make you remember you need 1, like for water intake or breathing. Those mechanisms starts as soon as anyone birth and doesn’t need your intervention to become a need. 2, 3 and 4 however become needs as you decide (consciously or not) it is. Same with heroin, social media or basically any other think we call "addiction".

Food obviously is a bit confusing as our omnivorous and resilient condition let us satisfy it in many ways : you don’t really need green vegetables, meat, sugar, beans, fish, nuts, muschroom, roots etc… to survive but stopping them all together will kill you. Some subset (of quality/quantity) keeps you in a better condition than others.

Appart that condition effects, the way you that specific subset as a need has more to do with habits.
by triceratops | 2025-05-08 08:39:41+00:00
We're setting up a battle of will between people and companies so we can feel good about our own self-control when some (most, in many countries) individuals lose that battle. What's the point?

Cigarettes are interesting because we recognized that running society like a car with accelerator and brake smashed down is sub-optimal. There are restrictions on tobacco marketing, consumption taxes, public health campaigns.
by jy14898 | 2025-05-08 08:39:49+00:00
> An API call, reading a file, calling less well-behaved libraries or making some system calls can all result in objects that pass compile-time checks but will cause a runtime exception or unexpected behavior.

Seems crazy to me to have this attitude, the whole point of typescript (and indeed many other languages with type checkers) is that we can leave out unecessary checks if proven by the compiler. The burden of compatibility is on the caller to ensure they supply correct values
by arh68 | 2025-05-08 08:41:33+00:00
> Underperforming states escape scrutiny. Our biases prevent us from asking, for instance, what’s going on in Oregon. Or Vermont. Or Maryland.

Uh, is this true ?

I feel like there's been plenty of asking as to why Oregon schools are as bad as they are. Going back 10 years. Hell, maybe 30+ years. It's not a secret. I've never felt we-can't-talk-about-it, as the author claims.

I'm glad Mississippi is making progress, but a lot of the article reads like a straw man (or, weirdly, a reading comprehension test)
by inejge | 2025-05-08 08:42:09+00:00
> I think that JSON is overused (DER is better)

When I was younger and more enthusiastic about some aspects of network communications, I set out to understand ASN.1 by reading the specifications. That was when ISO and ITU-T were even more stingy with access to their standards/recommendations, so it wasn't easy to get them as someone with no connection to standards bodies, and also without a few hundred CHF to spare. Reading those specs is an art in itself, but one gets a hang of it after a while. It went pretty well until this part of X.208:

The resulting type and value of an instance of use of the new value notation is determined by the value (and the type of the value) finally assigned to the distinguished local reference identified by the keyword VALUE, according to the processing of the macrodefinition for the new type notation followed by that for the new value notation.

That's where I burst out laughing and finally deeply understood why the ISO networking stack crashed and burned despite having some solid ideas.

All this is to point out that yes, DER is not bad at all, but the whole infrastructure it rests on is simply too alien to people outside of telecom space and those who have to deal with it by necessity because of its use in various security protocols.
by r33b33 | 2025-05-08 08:42:28+00:00
This is wrong. If you actually dug into the subject, you'd realize that due to decentralized nature of the asset there a myriad of nuances that will PREVENT smooth transition to quantum resistant protocol. It is simply not viable and it is absolutely NOT priced in. Believe me, I've read EVERYTHING I could on this topic and Bitcoin not being ready for quantum computers is the biggest elephant in the room right now.
by ccanassa | 2025-05-08 08:43:16+00:00
Nah man, I work with them daily. For me, the ceiling was reached a while ago. At least for my use case, these new models don’t bring any real improvements.

I’m not even talking about large codebases. It struggles to generate a valid ~400 LOC TypeScript file when that requires above-average type system knowledge. Try asking it to write a new-style decorator (added in 2023), and it mostly just hallucinates or falls back to the old syntax.
by throwanem | 2025-05-08 08:43:17+00:00
What was it you said? "Zero-compromise and reactionary?"

I don't know, I suppose. You say you live in the South, and I only grew up there and then got the hell out. I believe I hear more of how folks in that culture speak with people they trust, but I admit you have a better view these days of what they show to those they don't.
by Kbelicius | 2025-05-08 08:43:22+00:00
> I've always liked this analogy because it accidentally implies something I believe to be true - the crypto industry will eventually overtake transitional finance while moving at great speed.

It isn't implying that. It is implying that it will end up at the same place as the traditional finance.

> It says a lot about how bad the traditional finance

What is so bad about traditional finance that crypto fixes?
by cess11 | 2025-05-08 08:43:54+00:00
Other forms of LLM output is being seriously challenged however.

https://llmlitigation.com/case-updates.html

Personally I have roughly zero trust in US courts on this type of issue but we'll see how it goes. Arguably there are cases to be made where LLM:s cough up code cribbed from repos with certain licenses without crediting authors and so on. It's probably a matter of time until some aggressively litigious actors do serious, systematic attempts at getting money out of this, producing case law as a by product.

Edit: Oh right, Butterick et al went after Copilot and image generation too.

https://githubcopilotlitigation.com/case-updates.html

https://imagegeneratorlitigation.com/case-updates.html