HNHacker News
TopNewBestAskShowJobs

notriddle

2,413 karma · joined July 3, 2015

https://www.accountkiller.com/
submissionscomments
notriddle··on Web3 is expensive P2P
Read it. It’s not long.

It’s not just that running servers is hard. It’s that decentralized control can cause ossification. A bunch of functionality that people want became implemented in OpenSea because they couldn’t roll it into Ethereum itself.

notriddle··on Improved Process Isolation in Firefox 100
What's remaining?
notriddle··on Improved Process Isolation in Firefox 100
Apps distributed through the App Store are required to be sandboxed. Apps you install from elsewhere may or may not be.

https://developer.apple.com/library/archive/documentation/Se...

notriddle··on How to get rid of gerrymandering: the math is surprising
The important feature that approval voting has, and plurality lacks, is that approving your favorite candidate is never against your own interests. What you do with your second favorite is a matter of strategic voting, but that’s what you were doing in FPTP anyway.
notriddle··on How to get rid of gerrymandering: the math is surprising
Or just use approval voting: you're allowed to checkmark as many candidates as you want (instead of just one), and whoever gets the most points wins.

1. No spoiler effect. If you really want Green to win, but you think Blue is the lesser of two evils, voting Green and Blue at the same time is strictly better than voting only for Blue.

2. It's about as easy to understand as FPTP. No funny business where politicians mislead people about how the voting system actually works. Approval voting has a few downsides, but they are obvious downsides, so everyone is on equal footing.

3. You can still use those nice scantrons and hole punches.

4. No weird questions about "should I give the candidate I want most a 1, or should I give the candidate I want most the 10?"

5. It's a majority rules system and not a dictatorship.

notriddle··on It’s time we fix the unethical design of cookie consent windows
If the law carried penalties for having a tracking cookie consent banner and no tracking cookies, then the solution would be to add tracking cookies. :-)
notriddle··on It’s time we fix the unethical design of cookie consent windows
I agree with what you want.

The problem is, where I worked, my boss forced us to add a cookie banner even though we do not actually have any tracking cookies at all, and have no plans to add them, because that’s not our business model. It is just a legal CYA, because the business we’re in is highly regulated.

It’s the problem with government solutions. Everybody’s so paranoid that they wind up overcorrecting.

notriddle··on Bugs that the Rust compiler catches for you
I disagree.

A good developer will crash the program, as soon as possible, if and only if it has a bug. If you want to write a program that never crashes, then you need to write a program with no bugs.

The reason you don’t want buggy code to limp along after it detects a bug, is that crashing isn’t the worst possible thing.

The worst possible thing is getting stuck in an infinite loop or a deadlock.

notriddle··on Bugs that the Rust compiler catches for you
> is it impossible to cleanup because they already fucked up, wrote garbage in the process memory and safest thing is to kill the process

That’s essentially it, yes. My code should never actually panic. If it does, it means the state of the process has become deeply diseased, and attempting to “clean up” is likely to just make things worse. Of course, if it’s safe Rust, then it still won’t write past the end of a buffer or anything disastrous like that, but buggy code is still buggy code and there’s lots of stuff Rust won’t stop you from doing.

One of the more extreme things I’ve done in production Rust code was add a “watchdog thread”. It has a channel that takes unit and receives on a timeout, and the thread doing the actual work is expected to send it a message once a minute. If it doesn’t receive a message within a minute, it hard aborts the process. The default setup is run under a service manager like systemd to make sure it gets restarted, and that failures are actually logged somewhere.

This is meant to solve the problem that safe Rust is a Turing complete language, so is subject to the halting problem. The type checker can prove that you won’t read past the end of a buffer, but it cannot prove that your code will ever actually finish running. Which means, if you have a project like a web scraper that needs high uptime, you need to prevent it from getting stuck somehow.

notriddle··on Bugs that the Rust compiler catches for you
You need to run it in a separate process. Rust does not have good enough fault isolation features to safely assume a buggy image processor won’t break your app.

* Entering an infinite loop can bring down everything. A separate thread might not, but since Rust provides no way to kill a thread without it cooperating, there is no way to stop a stuck thread without bringing down the whole process.

* Stack overflow is an instant abort, not a panic.

* Double panic, where panicking calls a destructor that itself panics, is an instant abort.

notriddle··on The future will have to wait (2006)
Circumcised people aren’t castrated. Castration makes you infertile. Circumcision doesn’t.

(Infant circumcision is morally wrong, because it is a medically unnecessary surgery done without consent, but it doesn’t make you infertile.)

notriddle··on The appeal of using plain HTML pages (2019)
I know how to write XML by hand. It's not hard. The reason I use Jekyll instead is because updating the RSS feed is something I might forget to do at all. Before I used Jekyll, it was a custom Perl 5 script, and if GitHub ever stops supporting Jekyll, that's what I'd move back to.

A well-designed SSG, like all of the ones I've used, will interlock[1] updating the feed and the HTML. You can't easily update one without updating the other, just like you have to go out of your way to open a microwave oven without also turning it off.

[1]: https://en.wikipedia.org/wiki/Interlock_(engineering)

notriddle··on The appeal of using plain HTML pages (2019)
> I wish I knew a way around this because my knowledge of web design is incredibly small and I intend to keep it that way.

Just copy the CSS from http://bettermotherfuckingwebsite.com/

Anything else is probably overkill.

notriddle··on The appeal of using plain HTML pages (2019)
Because you're migrating a living document.
notriddle··on The appeal of using plain HTML pages (2019)
RSS.

If you're writing a blog, then you probably want a way for people to subscribe to it instead of making them visit your site manually. Unless you are confident that you not only CAN write a feed by hand, but will never forget to hand-update it after updating the post itself, you're going to want to at least have the RSS feed be auto-generated.

And once you've added the infrastructure to auto-generate the RSS index, there's very little point in not auto-generating the HTML index, too. If only because, that way, you won't forget to run it.

notriddle··on Fourth-generation programming language
More fine-grained.

Because separate cores each have their own cache, and their own program counter, there's a lot of communication overhead between them. When you're using instruction-level parallelism[1], you can actually do stuff like "perform a single add and a single multiply in parallel, then add them together", and the system is designed so that you aren't adding any overhead when you do that.

[1]: MIMD instructions are one way of doing this, but the computer you're reading HN on is probably an out-of-order superscalar, which accomplishes the same thing implicitly.

notriddle··on I want off Mr. Golang’s Wild Ride (2020)
Read to the end. It eventually talks about monotonic clock bugs that affect every major platform, including Linux.
notriddle··on Ask HN: How are pull requests integrated in a repo with high commit frequency?
The one thing it doesn't mention is that bors is named after a character from a short story: https://en.wikipedia.org/wiki/The_Last_of_the_Masters
notriddle··on “Humans Are Not Smart Enough to Have Ideas That Lie Beyond Challenge and Debate”
If there are only two humans left, then it’s already too late. We need a breeding population of around 50, or we will suffer genetic collapse (the actual number is much higher, to be able to actually evolve, but you need at least that much to avoid catastrophic genetic drift). https://moscow.sci-hub.st/1832/d4805799591a7b5e7843531b9aeb0...
notriddle··on 10 years since Google said to “hang tight” about Linux support for Google Drive
The FSF will almost certainly never do that, and even if they did, Linux isn't licensed under "GPLv2 or Later." It's just under GPLv2, probably forever.

Linux could change it if every single copyright holder consented, but that's even less likely than the FSF adding a field of endeavor restriction to the GPL. Google owns partial copyright to Linux. Other copyright holders are gone, and nobody knows who the heir is.

notriddle··on What would open sourcing the Twitter algorithm actually look like?
> yeah these companies act like were all protecting the coca cola formula or building nukes or something. like really, its blocks of text being put in order

The Coca-Cola formula seems like a pretty good analogy, honestly. Most people can't tell the difference between different cola recipes, and there probably isn't anything in the recipe itself that's responsible for the company's success. Not as much as marketing, and simply being in the right place at the right time, anyway.

notriddle··on The x86 architecture is the weirdo (2004)
> The topic at hand is, specifically, that nobody makes cores that enforce alignment restrictions anymore. So, it doesn't matter where the pointer goes.

Compilers can rely on alignment even if the CPU doesn't. LLVM does, which is why older versions of rustc had segfaults when repr(packed) used to allow taking references. While it would be pretty easy to get rustc to stop emitting aligned loads, getting Clang and GCC to stop emitting aligned loads might be trickier. https://github.com/rust-lang/rust/issues/27060

notriddle··on The x86 architecture is the weirdo (2004)
Structs aren’t the problem here. It’s the primitives.

You can take a pointer to an i32 and pass that pointer to C code as int32_t. This means it has to have the same alignment in Rust that it has in C.

notriddle··on The absurd complexity of server-side rendering
When I realized what the OP was describing, it honestly caught me off-guard. I had never heard of anyone attempting to colocate their API server and their Fastboot/Next.JS server in the same Node instance. Node is single-threaded. If you try to run lots of different things within the same Node VM, a runaway CPU-bound loop in your frontend can wind up causing the backend to lock up. Bad failure mode.

If your API server is separate from your Frontend server, you don't just make maintaining it more reasonable (the "server colored functions" are now a strict subset of the "client colored functions"). You also get operational flexibility: run the Frontend server in an edge function system [1], while running the API server alongside your DBMS. Isn't that what edge functions are for?

[1]: https://news.ycombinator.com/item?id=31084301

notriddle··on The x86 architecture is the weirdo (2004)
Fifty bucks says it isn't even about performance, but is instead about passing pointers to C code. Zero-overhead FFI has killed a lot of radical performance improvements that Rust could have otherwise made.

I don't know, because nobody's actually posting a link to it.

notriddle··on “YouTube-dl” and “Pirate Bay” back on DDG
> Why does DDG de-list things in the first place

I don’t think anyone wants to use a search engine that never delists anything. Ransomeware, Markov chain junk, plagiarism. A search engine that never delists anything is useless.

The problem is when delisting is used against the end-user’s interests.

notriddle··on Rustaceans at the border
> What happens when a crate version has to be removed due to a critical CVE or court order (IP Law violation, perhaps)?

CVE = The Yank flag. Cargo will refuse to add new yanked packages to a lock file, but if a yanked package is already in the lock file, it will still build. The package is not actually deleted. https://doc.rust-lang.org/cargo/commands/cargo-yank.html

Legal = Hard delete. Nobody will go to jail just to avoid breaking your build. Of course, since crates.io and kernel.org are in the same legal jurisdiction, is there any actual difference here?

notriddle··on Rustaceans at the border
Being “not lazy” isn’t the same thing as being “fine.” What it means is that the problem is with the game, not the players.
notriddle··on An argument for a return to Web 1.0
If.

Where would you even start to determine if that was true or not?

notriddle··on As inflation soars, how is Arizona iced tea still 99 cents?
https://www.youtube.com/watch?v=Bcz0BJGEVUY
← PreviousPage 6 of 31Next →