MurphyA/hacker-news huggingface dataset:
by colordrops | 2025-08-22 17:01:47+00:00
Look into it rather than speaking out of ignorance.

There are several ways to block ads on Android. First and most-important, with a de-googled OS like Lineage or /e, the built-in tracking functionality just isn't there.

To blame the OS for an app spying on you is like saying Firefox is spying on you for Google because a webpage has a google tracker in it. Nonsense. An app is not the same as the OS. You can just not install the app like you would not visit the page.

But even then, open source android has many ways to block ads if you do want to install shitty apps that track you.

- The AdAway app that uses host file updates

- App Warden, which actually disables tracking libraries in apps

- LineageOS has the ability to turn off network access for apps that don't need them

- AFWall+ for app-level firewall rules.

The OS is absolutely not spying on you and actually gives you tools to stop spying. You can't say this AT ALL about Apple or vanilla Google Android.
by gjsman-1000 | 2025-08-22 17:01:47+00:00
> Given how much capital has already been committed to infrastructure development

Here’s the stupid thing about that infrastructure: This isn’t railroads. This isn’t skyscrapers. This isn’t underseas fiber optic. These are, at the end of the day, data center GPUs that can and will start failing en-masse on normal hardware timelines.

When that happens, they will all need to be replaced, at whatever rate NVIDIAs selling at - or can sell at, if there’s any geopolitical incidents. If there aren’t enough customers, capacity shrinks, and the remaining customers must foot the bill for the new system and the previous round of investment, causing a death loop wherever there isn’t profitable use feeding into the system.

A clearer comparison: It’s like if airlines had to replace their entire fleet every 3-4 years while selling $20 tickets to anywhere; and the growth metrics look incredible when everyone’s flying at that rate. So much so, that investors paid for the first fleet round calling it “infrastructure.” Meanwhile the amount of ticket sales keeps growing when everyone finds amazing use cases and new business models from the $20 tickets. Surely, this can only get better from here, and justifies even more fleet investment.
by kstenerud | 2025-08-22 17:02:40+00:00
I used go for years, and while it's able to get small things up and running quickly, bigger projects soon become death-by-a-thousand-cuts.

Debugging is a nightmare because it refuses to even compile if you have unused X (which you always will have when you're debugging and testing "What happens if I comment out this bit?").

The bureaucracy is annoying. The magic filenames are annoying. The magic field names are annoying. The secret hidden panics in the standard library are annoying. The secret behind-your-back heap copies are annoying (and SLOW). All the magic in go eventually becomes annoying, because usually it's a naively repurposed thing (where they depend on something that was designed for a different purpose under different assumptions, but naively decided to depend on its side effects for their own ever-so-slightly-incompatible machinery - like special file names, and capitalization even though not all characters have such a thing .. was it REALLY such a chore to type "pub" for things you wanted exposed?).

Now that AI has gotten good, I'm rather enjoying Rust because I can just quickly ask the AI why my types don't match or a gnarly mutable borrow is happening - rather than spending hours poring over documentation and SO questions.
by odo1242 | 2025-08-22 17:02:48+00:00
Yes, and those sites take way more effort to crawl than other sites. They may still get crawled, but likely less often than the ones that don't use JavaScript for rendering (which is the main purpose of Anubis - saving bandwidth from crawlers who crawl sites way too often).

(Also, note the difference between using JavaScript for display logic and requiring JavaScript to load any content at all. Most websites do the first, the second isn't quite as common.)
by seadan83 | 2025-08-22 17:03:15+00:00
The proof for TDD is usually looking at bug detection rates. Similar for code review. OTOH, the "design damage" of TDD is something overlooked by those metrics.

What it boils down to: - TDD in the hands of a junior is very good. Drastically reduces bugs, and teaches the junior how to write code that can be tested and is not just a big long single method of spaghetti with every data structure represented as another dimension on some array.

- TDD in the hands of a midlevel can be a mixed bag. They've learned how to do TDD well, but have not learned when and why TDD can go bad. This creates design damage, where everything is shoe-horned into TDD and the goal of 90% line coverage is a real consideration. This is maximum correctness but also potentially maximum design damage.

- TDD in the hands of a senior is a power tool. The "right" tests are written for the right reasons with the right level of coupling and the tests overall are useful. Every really complicated algorithm I've had to write, TDD was a life saver for getting it landed.

Feels a lot like asking someone if they prefer X or Y and they say "X" is the industry best practice. My response universally is now an eye brow raise "oh, is it? For which segments of the industry? Why? How do we know it's actually a best practice? Okay, given our context, why would it be a best practice for US". Juniors don't know the best practices, mid-levels apply them everywhere, seniors evaluate and consider when best practices are not best practices.

TDD slows development when tests are written in a blind way with an eye on code coverage and not correctness and design. TDD speeds up development in being a good way to catch errors and is one of the best ways to ensure correctness.
by kbolino | 2025-08-22 17:03:20+00:00
There's some other issues, too.

For JSON, you can't encode Optional[T] as nothing at all. It has to encode to something, which usually means null. But when you decode, the absence of the field means UnmarshalJSON doesn't get called at all. This typically results in the default value, which of course you would then re-encode as null. So if you round-trip your JSON, you get a materially different output than input (this matters for some other languages/libraries). Maybe the new encoding/json/v2 library fixes this, I haven't looked yet.

Also, I would usually want Optional[T]{value:nil,exists:true} to be impossible regardless of T. But Go's type system is too limited to express this restriction, or even to express a way for a function to enforce this restriction, without resorting to reflection, and reflection has a type erasure problem making it hard to get right even then! So you'd have to write a bunch of different constructors: one for all primitive types and strings; one each for pointers, maps, and slices; three for channels (chan T, <-chan T, chan<- T); and finally one for interfaces, which has to use reflection.
by rrrrrrrrrrrryan | 2025-08-22 17:04:08+00:00
It'll burst in the same way crypto burst. The NFTs and the shitcoins and the grifters and the bandwagon hoppers all got washed out, but Bitcoin is still hitting record highs today.

All the smaller AI companies will have to quickly figure out a way to make a profit, or die.

The behemoths and the ones backed by behemoths (Google, Microsoft/OpenAI, Meta, Amazon/Anthropic) will take a good hit but will power through.
by const_cast | 2025-08-22 17:04:40+00:00
Yes, Windows text is broken in its own special way.

We can try to shove it into objects that work on other text but this won't work in edge cases.

Like if I take text on Linux and try to write a Windows file with that text, it's broken. And vice versa.

Go let's you do the broken thing. In Rust or even using libraries in most languages, you cant. You have to specifically convert between them.

That's why I mean when I say "storing random binary data as text". Sure, Windows almost UTF16 abomination is kind of text, but not really. Its its own thing. That requires a different type of string OR converting it to a normal string.
by gmueckl | 2025-08-22 17:04:49+00:00
Slightly more technical: every function that is continuous on a finite support can be expanded into an infinite Fourier series. The terms of that series form an orthonormal basis in the Hilbert space over the function's support, so this transformation is exact for the infinite series. The truncated Fourier series converges monotonically towards the original function with increasing number of terms. So truncation produces an approximation.

The beauty of the Fourier series is that the individual basis functions can be interpreted as oscillations with ever increasing frequency. So the truncated Fourier transformation is a band linited approximation to any function it can be appolied to. And the Nyquist frequency happens to be the oscillating frequency of the highest order term in this truncation. The Nyquist-Shannon theorem relates it strictly to the sampling frequency of any periodicaly sampled function. So every sampled signal inherently has a band limited frequency space representation and is subject to frequency domain effects under transformation.
by cogman10 | 2025-08-22 17:04:50+00:00
Still an issue. The main problem is for native compilation you have to declare your reflection targets upfront. That can be a headache if your framework doesn't support it.

You can get a large portion of what graal native offers by using AppCDS and compressed object headers.

Here's the latest JEP for all that.

https://openjdk.org/jeps/483
by bityard | 2025-08-22 17:04:55+00:00
> who carries quarters around anymore?

My car has an Aldi Quarter stashed inside that my family knows never to spend. It is only for Aldi shopping carts. I joked with my kids once that my Aldi quarter was older than them and that I've used the same quarter for the shopping carts since before they were born. They called my bluff at the checkout of course.
by eptcyka | 2025-08-22 17:04:58+00:00
Go allows deferring an implementation of an interface to a member of a type. It is somewhat unintuitive, and I think the field has to be an unnamed one.

Similarly, if a field implements a trait in Rust, you can expose it via `AsRef` and `AsMutRef`, just return a reference to it.

These are not ideal tools, and I find the Go solution rather unintuitive, but they solve the problems that I would've solved with inheritance in other languages. I rarely use them.
by hungmung | 2025-08-22 17:05:22+00:00
Same thing has been happening for a long time in America. Politicians are typically risk adverse and the real world has complicated problems so they make up a 'virtual' problem to 'fix', or to turn into a new political football.

Politics has become its own end: politicians have job security, and nothing changes except for the worse because constituents keep falling for the same tired shit.
by electrosphere | 2025-08-22 17:06:56+00:00
Some years back I hunted down a Bang & Olufsen MX4000 TV for my retrogaming project. That thing was deluxe with a beautifully vibrant picture.

Photos of it plus Trinitrons in my CRT buying guide: https://opticalgarbage.com/wiki/index.php/Gaming/CRTBuyingGu...
by Spooky23 | 2025-08-22 17:07:19+00:00
The problem is it will create a broader economic problem in the markets.

The top 10 holdings for VTI, the "easy button" investment option. Are: NVIDIA, Microsoft, Apple, Amazon, Facebook, Broadcom, Google, Tesla, Berkshire Hathaway. They represent a third of US market value, and 60% of them are heavily hooked into AI. A panic will be a decimation for NVIDIA, and that splash zone will be broad.
by torginus | 2025-08-22 17:07:24+00:00
I mean, every year or so there's a new NVIDIA GPU, making last years models obsolete and GPUs from 2 generations back essentially landfill. I don't think there's another large-scale investment that decays at this rate.

The infrastructure being there might also be a problem.

- If there's no breakthrough, and we're only going to make incremental gains, then its wasteful

- If there's a breakthrough, it might turn out a new AI architecture needs either lot less compute, or a different kind of it
by aurumque | 2025-08-22 17:08:18+00:00
This has always been my takeaway with Go. An imperfect language for imperfect developers, chosen for organizations (not people) to ensure a baseline usefulness of their engineers from junior to senior. Do I like it? No. Would I ever choose it willingly? No. But when the options at the time were Javascript or untyped Python, it may have seemed like a more attractive option. Python was also dealing with a nasty 2-to-3 upgrade at the time that looks foolish in comparison to Golang's automatic formatting and upgrade mechanisms.
by iLoveOncall | 2025-08-22 17:08:25+00:00
This illusion that senior engineers are too good to fall in all the traps laid by vibe coding really needs to stop.

Just yesterday I was reading the comment of a Principal Engineer saying "of course vibe coding carries a huge risk for more junior engineers that don't understand when the LLM does something that looks right but is actually wrong", as if just because they have more experience THEY CAN.

No, you can't either. Not a single soul on this planet can review the thousands of lines of vibe coded bullshit that LLMs spit out.

Here's my guide to Gen AI / LLM Vibecoding for Expert Programmers: don't.
by gjm11 | 2025-08-22 17:08:28+00:00
"Progress is made by the people in front" is plausibly true by definition.

"Progress is made by the people who were in front 15 years earlier" is not true by definition. (So: you can't safely assume that the people you need for progress are exactly the people who are doing best in school. Maybe some of the people who aren't doing so well there might end up in front later on.)

"Progress is made by the people who end up in front without any intervention" is not true by definition. (So: you can't safely assume that you won't make better progress by attending to people who are at risk of falling behind. Perhaps some of those people are brilliant but dyslexic, for a random example.)

"Progress is made by the people in front and everyone else is irrelevant to it" is not true by definition. (So: you can't safely assume that you will make most progress by focusing mostly on the people who will end up in front, even if you can identify who those are. Maybe their brilliant work will depend on a whole lot of less glamorous work by less-brilliant people.)

I strongly suspect that progress is made mostly by people who don't think in soundbite-length slogans.
by matthewdgreen | 2025-08-22 17:09:49+00:00
Bluesky isn't perfect, and I actually find it kind of annoying, but it's a "follow who you want" place. If your timeline is strident, that's because you followed people who are strident. The same isn't really true of Twitter, where even the "Following" timeline shows you algorithmically-recommended content and then boosts the replies of paying customers (AKA scammers.) To get the same feature from X, you need to do something complicated with "Lists", and it doesn't fix the reply ordering problem.

The rest of your comment tells me that you don't really spend a lot of time with scientists, but you do spend a lot of time developing your opinions from social media. I wish you could do the opposite! Academics are great and funny and sometimes wrong about social issues just like other people, but they also work on some of the coolest problems we have.
by keernan | 2025-08-22 17:09:53+00:00
The concentration isn't the 'fault' of indexing per se. There are two styles of indexes used by funds/etfs.

1. Most indexes are market capitalization weighted indexes... which can lead to the high concentrations we currently see.

2. There are also equal weighted indexes. These are less popular for a multitude of reasons, not the least of which is the expense associated with keeping the fund equal weighted (the fund has to periodically - eg quarterly - buy/sell stocks to bring everything back to 'equal'

I am currently in the process of moving a portion of my allocation into an equal weight sp500 fund precisely because I want to lower my exposure to the largest ten stocks in the sp500.

Another way to accomplish that would be to buy a market capitalization weighted index consisting of mid size or small cap stocks - thus avoiding the concentration of the top 10. But that changes the overall portfolio in other ways (small cap factor). I decided to use equal weighting a portion of my large cap holdings because I feel it is a more precise way to address the very specific problem I am addressing without adding other variables.
by Analemma_ | 2025-08-22 17:10:06+00:00
That was the theory, but it ran straight into the reality that most of the time “throwaway prototyping code” gets shipped straight to production and never updated, because it’s addressing real needs right now and there’s no time to fix it because a dozen other feature requests and support issues have arrived in the meantime.

The quip that “there’s nothing more permanent than a temporary solution” has been a truism of software engineering since long before AI arrived on the scene, vibe coding is just making the problem much worse.
by lostlogin | 2025-08-22 17:10:20+00:00
> They won by default effectively due to a quirk of how UK elections work (which was less of a problem when the monarch/aristocracy was still involved to counter balance things like this, but now that that's gone the state is effectively out of control.)

I’m reading this as you saying that the system is worse now that the monarchy and aristocracy have less power. Is that correct? If so, how do these unelected groups make it better?
by bullen | 2025-08-22 17:10:30+00:00
No MLC lasts 5 years tops.

I have 5x SLC (40-60GB) drives from 2010 still running. Not a single SLC has failed for me ever.

I also have 5x MLC (120-400GB ones) drives that failed. All MLC have failed for me.

The stats don't look too good.
by ryandrake | 2025-08-22 17:11:18+00:00
The HOA's authority should end at each homeowner's individual property line, in the case of a SFH HOA, and their authority should end at each condo-owner's doorstep in the case of a condo or townhome. So, sure they manage the shared amenities and infrastructure, but should have no power over the individual homeowners' property. There are probably reasonable exceptions to this, but I don't understand how it's justifiable that an HOA should have the power to tell someone how often to mow their lawn or what color to paint their door.
by stouset | 2025-08-22 17:11:44+00:00
Is golang better than Java? Sure, fine, maybe. I'm not a Java expert so I don't have a dog in the race.

Should and could golang have been so much better than it is? Would golang have been better if Pike and co. had considered use-cases outside of Google, or looked outward for inspiration even just a little? Unambiguously yes, and none of the changes would have needed it to sacrifice its priorities of language simplicity, compilation speed, etc.

It is absolutely okay to feel that go is a better language than some of its predecessors while at the same time being utterly frustrated at the the very low-hanging, comparatively obvious, missed opportunities for it to have been drastically better.
by bob1029 | 2025-08-22 17:12:19+00:00
Just because you can learn about something doesn't mean you need to. C# now offers top-level programs that are indistinguishable from python scripts at a quick glance. No namespaces, classes or main methods are required. Just the code you want to execute and one simple file.

https://learn.microsoft.com/en-us/dotnet/csharp/fundamentals...
by adastra22 | 2025-08-22 17:12:37+00:00
Even on Linux, you can't have '/' in a filename, or ':' on macOS. And this is without getting into issues related to the null byte in strings. Having a separate Path object that represents a filename or path + filename makes sense, because on every platform there are idiosyncratic requirements surrounding paths.

It maybe legacy cruft downstream of poorly thought out design decisions at the system/OS level, but we're stuck with it. And a language that doesn't provide the tooling necessary to muddle through this mess safely isn't a serious platform to build on, IMHO.

There is room for languages that explicitly make the tradeoff of being easy to use (e.g. a unified string type) at the cost of not handling many real world edge cases correctly. But these should not be used for serious things like backup systems where edge cases result in lost data. Go is making the tradeoff for language simplicity, while being marketed and positioned as a serious language for writing serious programs, which it is not.
by deepsquirrelnet | 2025-08-22 17:12:48+00:00
> I mean, every year or so there's a new NVIDIA GPU, making last years models obsolete and GPUs from 2 generations back essentially landfill. I don't think there's another large-scale investment that decays at this rate.

Ampere generation A6000’s are still selling used for close to MSRP on eBay. I bought an A4500, used it for a year and then sold it for MORE than I bought it for.

I’ve never seen computer hardware appreciate in value like it is now, even if new cards are still significant upgrades.
by patchymcnoodles | 2025-08-22 17:13:20+00:00
That is a very strange calculation for me or I missed something. This is an open-source project, so all human contributors cost zero. He does not count himself as a cost, ok fine and understandable if you don't wanna earn from this project it is kind of an ok look at cost. But if I see it in this relation, because of Copilot his "team" costs now $41.73 a month more than before.

But the real cost that would be interesting is time value: Does he really spends less time for the same feature?
by diggernet | 2025-08-22 17:13:40+00:00
A tar of gzip or zip files doesn't make sense. But gzipping or zipping a tar does.

Gzip only compresses a single file, so .tar.gz lets you bundle multiple files. You can do the same thing with zip, of course, but...

Zip compresses individual files separately in the container, ignoring redundancies between files. But .tar.gz (and .tar.zip, though I've rarely seen that combination) bundles the files together and then compresses them, so can get better compression than .zip alone.
by bsoles | 2025-08-22 17:13:57+00:00
As a data point of one, I don't like complexity.

Often, complexity is the result of not really understanding the problem space well, which results in organic complexity as one solves the problems as they are discovered. React is a perfect example of this. You solve the happy-path of state management and all the non-happy-paths create additional complexity in the framework. But nobody actually questions why those edge cases exist in the first place and why it should really be "solved" or not.
by evanjrowley | 2025-08-22 17:14:31+00:00
Up until now I considered the enterprise nightmare of vibe debugging to be a data/governance problem involving something like:

Dev: enables verbose/debug logging

App: encounters error, creating big log file

Dev: uploads entire logfile, containing secrets, to 3rd party LLM and asks "read this log and identify the problem"

meanwhile...

LLM: leaks prompt, logs, and secrets to hackers

LLM: uses prompt for training data, then provides secrets as responses to other users
by hightrix | 2025-08-22 17:14:38+00:00
> As an US citizen, do you really want to fight for the "rights" of muslim students to chant "from the river to the sea" while burning american flags on campuses?

Vehemently, yes.

I will fight with everything available for the right of anyone to say anything critical about anyone else. Including burning the American flag, the Israeli flag, or the Palestinian flag.

Free speech is free speech. Get out of here with this authoritarian take.

“Break a few eggs”. This is digusting rhetoric.