MurphyA/hacker-news huggingface dataset:
by michaelt | 2025-08-26 08:28:50+00:00
> What do you need this accurate time for?

Some major uses of high-precision timing, albeit not with NTP, include:

* Synchronising cell phone towers, the system partly relies on precise timing to avoid them interfering with one another.

* Timestamping required by regulators, in industries like high-frequency trading.

* Certain video production systems, where a ten-parts-per-million framerate error would build up into an unacceptable 1.7 second error over 48 hours.

* Certain databases (most famously Google Spanner) that use precise timing to ensure events are ordered correctly

* As a debugging luxury in distributed systems.

In some of these applications you could get away with a precise-but-free-floating time, as you only need things precisely synchronised relative to one another, not globally. But if you're building an entire data centre, a sub-$1000 GPS-controlled clock is barely noticeable.
by notpushkin | 2025-08-26 08:28:52+00:00
Oh, I got it – apparently Play App Signing is mandatory now: https://developer.android.com/studio/publish/preparing#publi...

This makes it a bit trickier, yeah, though if the developer can get an APK signed with their Play App Signing key, and the app in question is a reproducible build, they can then publish it in F-Droid: https://fdroid.gitlab.io/jekyll-fdroid/docs/Reproducible_Bui...

(and probably they can upload it to their GitHub releases or something so that F-Droid picks it up from there)
by thund | 2025-08-26 08:29:01+00:00
This is a result of the current tech being filled with dark design patterns. Tech is designed to be addictive, indispensable, indisputable, mandatory. And at the same time complex, hard, difficult, risky.

We are so used to tech as it is that it is simple to force these bad decisions for the greater good. Because everyone is sure there is no alternative. There’s no other way to design tech, it will always be so complex and powerful that gov and corps can onesidedly decide what is best for the rest of the world.

This might be an area where local AI excels, when ready. No apps. No sharing of personal data. One AI capable of doing what most software does, on the fly, without relying on others to decide what is ok. Remains to be solved who can create and distribute this local AI and whether hardware will be allowed to run “untrusted” AI…
by bapak | 2025-08-26 08:29:07+00:00
Sure.

- Disk Utility: not an improvement but not a loss either. "Disks" haven't looked like that in a long time, so it makes sense that it's updated. "Disk" as intended now, it's an abstract concept, so I sort of see why the icon would be abstract.

- Expansion Slot Utility: if you looked at a Mac Pro's expansion slots, you'd see exactly why the new icon makes a lot more sense, it has 3 slots in it.

- Wireless Diagnostics: looks perfect to me.

- Apple Script Utility: both suck equally, I struggle to see why an editor/compiler share the same icon style as configuration/diagnostic apps.

So they're either just as bad or slightly better. Neither version shines for quality. The old one only looked slightly "better" because the individual pieces were in high quality, but once overlapped they just looked like slop.

All I'm saying is that these icons have obviously never mattered to anyone, you'd expect more from the author.
by photios | 2025-08-26 08:29:59+00:00
TIL Jefferson published his own "version" of the New Testament. [1]

> Jefferson mashed up/cut and pasted the New Testament to remove any references to the supernatural, or miracles, as well as the divinity of Christ. His title for the book was "The Life and Morals of Jesus of Nazareth," which tells us a lot about his motivations.

Walking in Arius' footsteps ...

[1] https://www.reddit.com/r/AskHistorians/comments/dnyxy8/thoma...
by angusturner | 2025-08-26 08:30:10+00:00
Fuck google for this. Awful decision. Guaranteed to be abused when Google or government despots decide that certain apps (or developers) aren't aligned with their interests.

Feeling very frustrated with the way the internet is going lately. This plus OSA + chat control. And compounded by the imperative for AI companies to keep hoovering up any and all data they can get their hands on, wiring it into "agentic" workflows and such.
by cjs_ac | 2025-08-26 08:30:30+00:00
What makes you so sure that such a hypothetical code of ethics would promote user freedom? I think it far more likely that protecting the user from harm (i.e., not allowing the user to install malware) would appear in that code.

Philosophers have been arguing about morality and ethics for thousands of years, and are no closer to consensus than they have ever been. The idea that 'I should be allowed to do whatever I want with computing machinery that I have bought' is a political choice, and because only a very small proportion is able to exercise that belief or even understand what it means, it is highly susceptible to being discarded in favour of beliefs like 'do whatever it takes to get the scammers off the internet'.

> The usual answer that their livelyhoods depend on it is simplistic, these are the best paid developers in the US, pretty sure they have some sway power.

You think that Google's best and brightest are working on the Google Play store?
by john01dav | 2025-08-26 08:30:31+00:00
We also need regulation to prevent unbreakable hardware locks. Integrating the locks deep into VLSI makes removing them unrealistic.

As a more specific way to do this, I'd like to see any software that hardware companies make for their own hardware designated (at the choice of the company) as either part of the hardware or a separate product. In the former case, it must be made available under GPLv3 with full anti-tivoization provisions. In the latter case, it must use only public and documented interfaces and must be completely realistic for another company to make a competing product on a level playing field. Ideally the separate products would also need to be highly cross platform if technically feasible where the burden of showing that it isn't is on the developer.
by CRConrad | 2025-08-26 08:30:46+00:00
> When used alone, "ass" to me feels like it's roughly synonymous as when it's prefixed with "dumb", which would seem to relate to that old meaning of "jerk", but with "hole" on the end, it's equivalent to the modern version of "jerk".

Could be because the original "ass = stupid" is possibly related not to ass = arse, but to ass = donkey?

"Donkey-hole", OTOH, is meaningless, so "asshole" rather definitely means "arsehole".
by strogonoff | 2025-08-26 08:31:12+00:00
Free-trial-based approach to software distribution is not the best. Compared to at least one better alternative, it is:

0) worse when it comes to developer bottom line (if you are being generous, try to provide enough trial time and usable software during trial period, a large chunk of your users will just never pay);

1) worse when it comes to user experience (you are interrupted, you encounter blocked-off functionality, which basically means that upsell is part of core GUI);

2) worse when it comes to developer experience (now you don’t just program one great product, you also have to program into your core GUI the upsell—the various ways in which it becomes restricted while remaining usable);

3) worse when it comes to product improvement (the unhappy user will simply delete the software and you’ll never know what they didn’t like);

4) exactly identical when it comes to honest paying user’s expenses.

No doubt, there are worse options. (One that takes the cake: advertise it as free software, but constantly upsell the “full version” offered on subscription basis.)

What’s that better alternative I’m comparing free trials against, then? Simply offer returns. Buy it, get a license, make your trial period however long you like; don’t like it—request a refund, get money back, get license revoked. What it means is that “tried and not bought” is no longer one of the “happy paths”. As a result, you have a better chance of really understanding what was wrong (if I must ask you for refund, you are in touch with me), and you also exhibit more confidence in your product up front.

I believe App Store in fact works this way. If someone’s thinking about distributing there and feels like the only way to offer a trial is IAP, maybe reconsider: you don’t need that overhead, one fully featured version is enough if your users can already get their money back if they don’t like it. I believe refund process happens automatically for you as a developer, though I’m not sure whether or not the feedback they provided will be forwarded to you. Willing to be corrected.
by melvinroest | 2025-08-26 08:31:22+00:00
This post reminds me of something.

During my first Introduction to Programming course at university, I was taught Java. One thing that I found very troubling is that it wasn't easy, or possible in many cases, to change the programming language. Sure, you can write new functions or methods or classes, but I can't change the keyword for an if-statement. I also remember the TA saying "why would you want that?" I caught myself thinking "if we can program a computer, then why can't we program a language?"

15 years later, I still have this issue a bit, except I made my peace with it. It is what it is. There are some exceptions though! Such as: Lisp, Smalltalk and similar languages. It's in part why I have worked for a company that professionally programmed in Pharo (a Smalltalk descendant [2]). I remember hacking a very crude way for runtime type checking in Pharo [1], just for fun.

I'm not a Ruby programmer, all I know is that Ruby has some things that are identical to Smalltalk. But my question to the author would be: if you long for things like keyword arguments, type hints and namespaces why don't you program it in the Ruby language yourself?

Or is that really hard, like most other languages?

[1] https://youtu.be/FeFrt-kdvms?si=vlFPIkGuVceztVuW&t=2678

[2] Fun fact, I learned about Lisp, Smalltalk and Pharo through HN! So I know most of you know but I suspect some don't.
by raxxorraxor | 2025-08-26 08:32:05+00:00
Very true and this was predictable. That said, I haven't installed any apps for months now since I don't consider Android to be a usable OS anymore. It could be technically, but I have no will to fight Google and manufacturers on their lock down ambitions.

Ironically that degraded phones to be just that. Phones with build-in high quality cameras. For everything else there are better alternatives.
by oulipo2 | 2025-08-26 08:32:56+00:00
so playing with Audio Hijack, it seems my "Airplay" audio output is *only* present in the interface if I'm currently choosing "Airplay" as my default audio output from the system

So basically with Audio Hijack I can do a "hack" which is: - set my laptop to play on Airplay - play some music there - then if I want to listen to something else on my laptop, I have to create an Audio Hijack pipeline to play some other app on my laptop

Obviously I would prefer the reverse: by default play everything on the laptop, and be able to play a specific app on Airplay... but this doesn't seem to be possible because the "Airplay" device "disappears" from the interface as soon as I stop setting it as the default laptop output
by silverliver | 2025-08-26 08:33:19+00:00
This deplorable company has just condemned humanity's right to open computing. They sold themselves as open, smothered out all other open competitors, and then once they had complete dominance over the open phone market did this.

Even if Google backtracks now. Governments will latch on to this idea just like they have with client side content scanning. This will never go away. Thank you google you despicable pieces of shit.

What now? Where do we go from here?
by hackrmn | 2025-08-26 08:33:20+00:00
I've always been a staunch opponent of using `/v1/` kind of element in the URL. I understand its function and the convenience it allows for "versioning", but I grew up with HTTP and I always liked how it insisted the URL is well, the _location_ of the _resource_, and `/v1/` just muddies things up being in the URL -- it's obviously not a version of the resource that `/v1/` would be indicating, but of the API implementation, which is the first telltale sign that it's an architectural "blunder", and these compound in my experience, always and invariably given enough time.

If the consumer wants to consume a specific version of the API, the means to do so can be implemented with an alternative domain name, or -- even better (who wants to maintain alternative domain names) -- with a request _header_, e.g. `X-API-Version: v1` (or another one, perhaps a standardised one).

In any case, the `/v1/` thing is something of cargo cult programming -- I remember someone proposed it a good while ago, and it's been adopted since without much afterthought, it seems. It doesn't make sense to debate pros and cons of REST/HATEOAS if your resource identifier scheme is poorly designed, IMO.
by Sammi | 2025-08-26 08:34:28+00:00
Basically Valve are doing with Steam OS and Proton against Windows, the same thing that Google did with Chrome against Internet Explorer. Microsoft's usual tactic with Embrace Extend Extinguish isn't working with Edge, as Chrome just has great development velocity and market entrenchment and distribution. Crossing my fingers that Valve will pull off the same thing. In the gaming market Valve have great distribution and they are strong developers, so maybe.
by john01dav | 2025-08-26 08:34:46+00:00
Vanishingly few people want to crash their car due to sub-par breaks. If someone is malicious, the physical access to the car is going to be enough to not stop them and murder is already illegal. So, is this a real issue? If it is, is regulating this the most effective choice for what to regulate to increase safety or are other things more hazardous? Removing freedom and creating mandatory bureaucracy shouldn't be done over imaginary issues.
by mnw21cam | 2025-08-26 08:35:07+00:00
Sure, I have one sitting on my desk right now. It uses an Intel Core m3, and it's 7.5 years old, so it can't exactly be described as high performance, but it has a fantastic 3200x1800 screen and 8GB of RAM, and since I do all my number-crunching on remote servers it has been absolutely perfect. Unfortunately, the 7.5-year-old battery no longer lasts the whole day (it'll do more like 2 hours, or 1 hour running Zoom/Teams). It has a nice rigid all-metal construction and no fan. I'm looking around for a replacement but not finding much that makes sense.
by contingencies | 2025-08-26 08:35:25+00:00
When it comes to realtime guarantees, bare metal code on a dedicated IC or MCU is by definition better than anything running on a general purpose OS on a general purpose CPU. Even if you tune the hell out of it, the latter will have more room for bugs, edge cases, drift, delayed powerup, supply chain idiosyncracies, etc. FYI GNSS processing chips cost $1.30 these days. https://www.lcsc.com/datasheet/C3037611.pdf
by gooseplusplus | 2025-08-26 08:35:34+00:00
I like how this blog post was written.

There are only three things Zig/Jai could do in face of this problem

1. Don't do any memoization at all and just see if the result has been computed before (would be extremely slow and probably dumb)

2. Memoize arguments which can become ingrained with the returned struct (which is what they already do)

3. The only other possible thing would be:

If the function that generates the struct is

fn generate_struct(p) type { struct { field_with_default = f(p) } }

where f(x) could be x*0 (like the example the author gave), it could be just x, it could be "use x to download blah blah blah from the internet", it could be x % 2, etc.

the compiler would have to detect if f(x) is a one-to-one function or not. If it is then strategy 2 can be used safely, if it isn't then you'd have to use strategy 1.

the only issue with this third option is that from trying to read mathematics far beyond my pay-grade it seems like generally determining if any given f(x) is one-to-one is an undecidable problem for functions with unbounded domains and ranges. For functions that have bounded domains and ranges (say, functions that can only operate on integers within 0 and 4 billion) it's easily decidable... if you plug in every possible input and see what comes out.

This would take so much more time than even strategy 1 and I'm not even sure how useful it would really be. Maybe in a much much much more complex codebase that was doing a lot of weird things something like this might become a bug? Idek

So unfortunate as it is, I think strategy 2 is the best option.
by YouWhy | 2025-08-26 08:35:46+00:00
TL;DR: is the described business viable?

I can see how a tech-centric person would see the described business as viable, but putting on my founder hat, I realize that it faces enormous risks:

- Any competitor could build the same product with less janky UX; users tend to hate even unavoidable usability issues.

- There's no compliance strategy even remotely possible in the described scenario.

- If a capital investment becomes necessary for business scaling, I cannot imagine this organization passing even a perfunctory level of due diligence.

Would be happy to hear out if that makes sense.
by AnthonyMouse | 2025-08-26 08:36:10+00:00
I don't understand why people think this is something corporations desperately want. It's something they'll abuse if you leave it sitting around for that, but that's just the argument for getting rid of it. How does the ability to be a petulant grouch benefit them? It has negligible monetary value and causes PR damage. It's a footgun that nobody needs and only fools want.

And if they're actually the cartoon villains it would imply, rather than just banal petty autocrats carelessly fooling around with a toy they deserve to have taken away from them, then we should maybe less be saying "it makes sense that they would want it this way" and more be sticking their heads in a guillotine so we can show the children the proper way to resolve a dispute with a tyrant.

In neither case should a law like that remain on the books.
by jjani | 2025-08-26 08:36:20+00:00
It's always so rich to see comment sections on here when there's an article about a place like Palantir when the likes of Google and Meta play an even so much bigger role in enabling mass surveillance. I'm sure they'll tell themselves "well but I for one am working on something good like Waymo, or as innocuous as Google Sheets! And we don't kill people!! (please don't look at who provides the underlying services that defense runs on)". While the exact same is said by most employees at those companies they criticize so hard.

Sure, no one's perfect, and you have to draw a line somewhere. But if you're at somewhere like Google or Meta, or have been in the last decade and left for other reasons than these, you really don't have a leg to stand on in these discussions.
by greygoo222 | 2025-08-26 08:36:26+00:00
People stated they supported the policy after reading a full description of the policy. If you don't trust the paper (whose researchers are anti-euthanasia), the Canadian government found the same results. https://researchco.ca/2023/05/05/maid-canada-2023/

Nobody ever correctly answers questions about legislation, to put it glibly. Any piece of legislation newer than 10 years and more complex than a sentence is not going to pass such a test with the general public. 19.2% knew that terminal illness is not required? I would be shocked if 19.2% could correctly answer a few basic questions about the definition of "terminal illness."
by IshKebab | 2025-08-26 08:36:49+00:00
The competition for "very hard to beat for the money" hasn't been Arduinos for decades; it's cheap ARM Cortex boards, e.g. STM32 Nucleo - or ESP32.

I think ESP32 is really the one to beat.

Arduino have been lazily cashing in on their brand name for many years.
by lmm | 2025-08-26 08:36:57+00:00
The language is the easy part. Getting tool support for your language change is the hard part. Getting the library ecosystem to adopt it is even harder.

I think that's why extremely flexible languages have seen limited adoption - if your language is more of a language construction kit where everyone can implement their own functionality, everyone has to implement their own tool support (or, more likely, live without any) and there's a limit to how far you can go with that. The best languages find the sweet spot where they give you enough flexibility to implement most reasonable programs, but are still constrained enough that tools can understand and work with all possible code.
by tyilo | 2025-08-26 08:37:06+00:00
It seems like `etcetera` has better defaults: https://docs.rs/etcetera/latest/etcetera/#native-strategy

> `choose_base_strategy()` and `choose_app_strategy()` will use the XDG strategy on Linux & macOS, and the Windows strategy on Windows. This is used by most CLI tools & some GUI tools on each platform.
by 0xEF | 2025-08-26 08:37:23+00:00
Agreed. The store are unnecessary and sold under the guise of "protecting" the user, when it's really about controlling user use, keeping them ignorant and spying on them.

Google does not care if your data is leaked by an app offered by some nebulously defined verified developer that phones home without reason, or that you develop a problem with online gambling or predatory micro transactions, etc. Blows my mind that we have come this far in the fight for user rights, ownership and accountability and still the majority is going to just trust Google because they're Google. No corporation is your friend. Let the users operate the device they paid for* as they see fit, learning to accept the responsibility for for all the success and failures that come with it and we will suddenly start seeing much, much smarter users.
by 5555624 | 2025-08-26 08:37:23+00:00
I don't recall my parents reading with (or to) me, ever. maybe when i was two and I don't remember it? I never saw either one read for pleasure. I did know my dad would read fiction when waiting in airports when traveling, because he'd giv me the paperbacks when he'd get home. (I remember a Bantam Doc Savage reprint, Ludlum, Forsyth, and more). That said, I've always read for pleasure and do it daily.
by rkomorn | 2025-08-26 08:37:33+00:00
> But if you're building an entire data centre, a sub-$1000 GPS-controlled clock is barely noticeable.

Dumb personal and useless anecdote: one of those appliances made my life more difficult for months (at a FAANG company that built its own data centers, no less) for the nearly comical reason that we needed to move it but somehow couldn't rewire the GPS antenna, and the delays kept retriggering alerting that we kept disabling until the expecte "it'll be moved by then" time.

So, I guess to make the anecdote more useful: if you're gonna get one, make sure it doesn't hamstring you with wires...
by hackrmn | 2025-08-26 08:37:35+00:00
In software engineering the statement "interfaces, not implementations" has been used for a long time (certainly at least Robert "Uncle Bob" C. Martin started teaching), which is a generalization on the "we don't break userspace". In essence it cooks down to declaring an interface without announcing or depending on the implementation. With OOP languages like C++, a code base would aggressively use interfaces as types, never concrete class types (which implement the interface), so that it can make it easier to reason about how and whether the program behaves when one implementation of an interface is swapped for another.

With Linux, which is a C codebase by and large, they load and pass pointers to structures to kernel procedures which can do as they please -- as long as the documentation on said structures (which usually says which fields and how are retained with which values and so on) remains unchanged. That's their "object oriented programming" (yeah, I know Linus would likely have hated the comparison).