HNHacker News
TopNewBestAskShowJobs

joepie91_

1,701 karma · joined February 11, 2014

submissionscomments
joepie91_··on Cloudflare outage – 24 hours now
It's long been accepted practice in the hosting industry to have your critical communications as a provider (status page, support system) hosted somewhere that's not your network, for this reason.

It continues to amaze me how major infrastructure providers seem to consistently fuck this one up (see also: AWS' status page outage a while ago).

joepie91_··on CCC Invites to the 37th Chaos Communication Congress in Hamburg
A very important thing is that at least for some types of 3M Aura (the 9320+, at least), the nose clip is significantly stronger than that of cheap masks. So if you're used to pushing it onto your nose very strongly with cheap masks, you need to unlearn that with the Aura masks, or it will obstruct your breathing and become very uncomfortable.

With the Aura masks (at least those with a strong clip), it's not necessary to push it down very strongly; you just need to lightly shape it, and then the strength of the clip will ensure that it stays in shape, and the foam around the nose will ensure a good seal.

It seems to take some practice to find the right clip shape, but once you've found it, they're quite comfortable IMO - and most of the time I've seen people complain about discomfort with these masks, it seems to be because of the nose clip being too tight.

joepie91_··on Lodash just declared issue bankruptcy and closed every issue and open PR
> Most old projects that follow the 'never close without verification' philosophy end up, eventually, with a majority of open issues not actually reflecting the current state of the project.

There's a crucial question here that I find not enough people ask themselves: does that actually matter? And if yes, why? What, specifically, is the material problem caused by this situation?

It often feels like people are just chasing 'inbox zero', under the assumption that "0 open issues == good", without any actual material problem being solved in the process.

(Github probably isn't helping here, with their undeservedly prominent placement of the open issue count driving this sort of behaviour...)

joepie91_··on NixOS just dropped Anduril as a NixCon sponsor
No, the weapons come later. The "observation stations" just determine who they will be pointed at. That's different, right?
joepie91_··on Web Environment Integrity API Proposal
Probably more action than just telling people will be necessary for that.
joepie91_··on Ask HN: How do Mastodon instances monetize?
Generally either donations from users, or paid out of pocket, or some combination of both. This has, broadly, worked fine for years.

> And if they are successful

Do you mean "if they grow big"? Because that's generally seen as the opposite of success, on Mastodon. Large instances have fairly unavoidable moderation and operational problems (and also become increasingly more difficult to fund, because there is less social cohesion).

joepie91_··on Threads, an Instagram app
Mastodon/fedi certainly brought something new to the table (microblogging with close-knit communities), it just isn't a technical feature nor something that's meant to "scale".
joepie91_··on Threads, an Instagram app
> Mastodon doesn't have any categorization/classification/tags tools

Huh? Mastodon certainly has hashtags. Likewise, there are posting groups. More implicitly, different social groups tend to cluster together and re-boost interesting things.

Like, to be clear, fedi isn't going to be the right solution for everybody (or necessarily even for most people), and it's totally valid to dislike it or prefer something else. But it certainly does have organizational tools; they are just differently shaped.

joepie91_··on Threads, an Instagram app
It continues to boggle my mind how so many tech folks just don't seem to understand that "maximum scale" is not everybody's idea of success, and that not everything is built to "take over the world".
joepie91_··on The NixOS Foundation’s Call to Action: S3 Costs Require Community Support
But the problem here isn't distribution, it's durable storage. Something along the lines of Tahoe-LAFS would be far more suitable.
joepie91_··on Speeding up the JavaScript ecosystem, one library at a time
> The question then becomes what can be reasonably done about it? Or rather, can it even be realistically achieved (in an arbitrary time scale that we care about), given how much of the culture and tooling is currently centered around passing text from one command to another. Change for something so foundational surely wouldn't be quick.

It definitely won't be quick, no. I think the tooling is actually not that big of a problem there; the functionality provided by the 'common tools' generally isn't that complex in scope (at least, in the context of modern development tools), and the many RIIR projects have shown that total do-overs for these sorts of tools are viable.

The bigger problem is going to be cultural, and particularly that persistent (but often unspoken) belief that "computers peaked with UNIX in the 70s/80s and what we have now is the best it will ever be". It often results in people actively pushing back on improvements that really wouldn't have any downsides for them at all, thereby creating unnecessary friction.

That same 'ideology', for lack of a better word, also makes it very difficult to talk about eg. hybrid terminal/graphical systems - because "GUIs are evil, text is better" and similar sentiments. That really gets in the way of advancing technology here.

Ultimately, I think the actual interop and/or reimplementation problems are going to be a walk in the park, compared to dealing with the messy human and cultural/ideological factors involved that actively resist change.

joepie91_··on Speeding up the JavaScript ecosystem, one library at a time
> Even "schema-less" data storage solutions like MongoDB are then also built on similar lies, because while you can throw arbitrary data at them to store it, querying the data later will still depend on some assumptions about the data structure.

They are. I have been complaining loudly about this for years :)

> I'm inclined to agree, and yet, RESTful APIs are still very popular and seem to have much success (though some push for more "immutable" APIs that are versioned, which is nice), as do "schema-less" data stores in certain domains. Edit: you can also say that about everything from CLI tools or even dynamic programming languages as a whole. I think there's more to it.

The part that I think you're missing is the difference between structure and schema. It's entirely valid to leave the schema implicit in many circumstances (but not all - generally not in a database, for example), but you still need the general structure of how data is represented.

When you deserialize something from JSON, CBOR, whatever, you will get back a bunch of structured data. You may not know what it means semantically, but it's clear what the correct (memory) representation is for each bit of data, and that's exactly the most fragile part of dealing with data, which is now solved for you.

You do not get the same benefit when passing around strings in ad-hoc formats that need custom parsers; it is very easy to mess up that fragile part of data handling, which is why parsers are so infamously difficult to write, whereas working with parsed data structures is generally considered much simpler.

Likewise, from a usability perspective, it's fairly trivial to let the user pass eg. a dotpath to some tool to select some nested data from its input; but letting the user pass an entire parsing specification as an argument is not viable, and that's why most tools just don't allow that, and instead come with one or more built-in formats. If those supported formats don't match between two tools you're using, well, sucks to be you. They just won't interoperate now.

Essentially, "standardized structure but flexible schema" is the 'happy compromise' where the most fragile part is taken care of for you, but the least predictable and most variable part is still entirely customizable. You can see this work successfully in eg. nushell or Powershell, or even to a more limited degree in tools like `jq`.

> I suspect that this is where opinions might differ. Half-assing things and counting on vaguely compatible (at a given point in time) implementations has been the approach on which many pieces of software are built to solve numerous problems. On one hand, that is ignorant, but on the other hand - how often is the output from "ls -la" going to change its format, really? The majority of CLI tool writers seem to understand how brittle and bad everything is and thus treat their data formats carefully, adding a whole bunch of different flags as needed, or allowing for custom formats, like: "lsblk --output UUID,LABEL,SIZE"

Speaking as someone who is currently working on a project that needs to parse a lot of CLI tools: the formats still change all the time, often in subtle ways that a human wouldn't notice but a parser would, and there's effectively zero consistency between tools, with a ton of edgecases, some of them with security impact (eg. item separators). It's an absolute nightmare to work with, and interop is just bad.

> For many out there, that's good enough.

I think there's a strong selection bias here. It's not without reason that so many people have an aversion to terminals today - they just aren't very good. And it's not just their terminal-ness either, because many people who cannot deal with a standard (eg. bash) shell will happily use terminal-like input systems in specialized software.

It's certainly true that most people who use terminals on a daily basis, consider this paradigm good enough. But that's probably because those who don't, just stop using terminals. We should be striving to make tech better and more accessible, not just "good enough for a bunch of Linux nerds", and certainly not upholding "good enough" paradigms as some sort of virtue of computing, which is what happens when people say "text is the universal interface".

Of course changing this is a long process, and there are very real practical barriers to adoption of other interop models. But that's not a reason to downgrade the 'ideal' to fit the current reality, only a reason to acknowledge that we're just not there yet.

joepie91_··on Speeding up the JavaScript ecosystem, one library at a time
Unfortunately "text is the universal interface" is pretty much a lie, for the exact same reason that "bytes in memory are the universal interface" is a lie.

An interface has some kind of structure for the data (and operations) that it represents. That structure may be explicitly defined or left implicit, but it is always there. And in the vast majority of cases, that structure is more complex than "a single independent string".

That's where the whole "pipe text between processes" approach breaks down - in many cases, you aren't just dealing with a single string, but with some sort of structured data that just happens to be encoded as human-readable text. That it's "text" is entirely immaterial to the structure of the data, or how to work with it.

And that's how you end up with every CLI tool implementing its own set of subtly incompatible data parsers and stringifiers. This is strictly worse than having a standardized structural format to communicate in.

joepie91_··on Mastodon’s eternal September begins?
Server blocks are not "random", and they are very much a part of how the fediverse functions. It's also what disincentivizes creating large effectively-unmoderatable instances, because you will very quickly find yourself isolated from the rest of the network. This is by design, not a bug - the fediverse is not meant to be a "town square".
joepie91_··on Mastodon’s eternal September begins?
And this is precisely the sort of thing that sets apart community-run projects like the fediverse (!= Mastodon) apart from for-profit platforms like Twitter. The fediverse culture is based around consent and guarding each other's safety. That means that just because you can do something, that doesn't mean that people will accept you doing so.

And that is precisely what happened here. Someone started indexing all the posts of a group of largely vulnerable and marginalized folks, without asking for their consent, without trying to understand the community norms, just barging in and doing what they felt like without concern for the consequences to other people's safety.

They got swiftly ejected from the community accordingly.

If you truly believe that it's okay to index things just because "well, I can technically access it" without any further consideration, then to put it bluntly: you are a threat to the safety of marginalized folks, and you are not welcome in those spaces. You should also consider that there are plenty of people who cannot afford to take such a cavalier attitude as you.

> That people are getting upset at this idea gives further credence to the idea that these newcomers really have no idea what they're joining up to and are just hoping that "Mastodon" matches the ideal Twitter replacement they have in their heads with little to no understanding of the reality of its workings.

This is certainly true. The fediverse is not a replacement for Twitter, and it is not meant to be. The toxic Twitter culture is not wanted there. That of course doesn't stop media outlets from completely ignoring that and going for the quickest headline.

joepie91_··on Mastodon’s eternal September begins?
Hi. You are precisely the kind of threat that the Fediverse culture is designed to defend from. You should maybe consider why that is.

The Fediverse was never built nor intended to be a "Twitter replacement".

joepie91_··on Open source sustainment and the future of Gitea
> Gitea has been growing in support and popularity, and as such, it needed to put some legal structure in place to deal with increased income and distribution of funds so that it's not abused.

None of that requires turning it from an open-source into an open-core project.

joepie91_··on Cloudflare's abuse policies and approach
I don't know whether they did, but it certainly wouldn't be unprecedented in the DDoS mitigation industry.
joepie91_··on Cloudflare's abuse policies and approach
> Precedent from decisions on The Daily Stormer and 8chan was used to pressure Cloudflare to deplatform human rights organizations by authoritarian governments. Refusing to deplatform isn't about protecting Kiwifarms, but protecting other groups in a global environment where they face legal and social pressure on differing and conflicting views. A hands-off policy on moderating the content of their customers removes the possibility of using deplatforming to suppress human rights.

Except this is a bullshit excuse, because a) you can just tell those authoritarian governments "no", and b) they have been removing customers like sex workers for many years already, this is not some novel change. The only change is that it affects literal fascists now.

"Banning nazis means we also have to ban human rights organizations" is some grade-A spin doctor bullshit, and I would expect better from people here than to fall for that.

joepie91_··on Bitcoin mining becomes unprofitable as BTC price falls to average cost of mining
Because the electricity was almost certainly offered for a specific subsidized purpose, likely being funded by a grant of some sort, and thus it is being misused?
joepie91_··on Tell HN: Reddit does not allow comments post via old.reddit.com
That approach to customer retention is exactly how you sink companies.
joepie91_··on Why I Quit Google’s WebAssembly Team, and How It Made Me Sick
> My main issue is the use of "toxic" coupled with the post's advocacy for helping others recognize when they're in a toxic workplace. My concern is that anyone identifying with the general stress described could then accuse their coworkers/managers of manufacturing a toxic work environment.

And they should.

A workplace is not supposed to be baseline stressful - and it's your manager's job to make sure it isn't. If stress is a constant part of your work environment, then your manager (or their manager, etc.) isn't doing their job, and that absolutely does create a toxic work environment.

joepie91_··on Why I Quit Google’s WebAssembly Team, and How It Made Me Sick
Toxic work environments are widespread. Their widespread nature doesn't somehow magically make them not qualify as 'toxic'. And if anything, it should prompt wider changes in industry, because clearly it is not an isolated incident.
joepie91_··on Is XMPP any good? Also, let's write a client in Tcl, maybe
> Matrix is basically a case study in how not to design a federated chat protocol. It's bloated, it ignores all prior art and reinvents the wheel everywhere it can, and its excessive complexity means there is unlikely to ever be a wide ecosystem of good-quality implementations (especially of servers).

Hi, I've worked on client and server implementations of both XMPP and Matrix. This is a wildly inaccurate - but unfortunately common - view of things.

It's correct that Matrix is complex to implement server-side, more complex than XMPP, and it's also correct that it does a lot of things very differently from older protocols like XMPP. But here's the thing - that's a deliberate choice and it is for good reasons, not just a case of ignorance or "bloat" like you seem to be implying.

(Sidenote: if there's one thing I've learned over the years, it's that somebody talking about "bloat" is a huge red flag that they don't have a very deep understanding of something. If you have a genuine complaint about unnecessary complexity, you should be able to point it out specifically, instead of a handwavy term like that.)

Anyway, to get back to the point... much of the complexity in Matrix comes from a single design objective that differs from XMPP: it implements decentralized rooms instead of centralized ones. That is, rooms are not dependent on a single server for their continued existence, they will remain available regardless of server availability.

This might seem irrelevant, but it solves a huge problem that XMPP has been struggling with for years, and that IMO is a major reason why its MUCs never became widespread: the problem of putting trust in a server operator for the continued existence of your community.

Every single time you create a MUC in XMPP, you are essentially betting on the continued existence of whatever server you are creating that MUC on. If it ever goes away, so does your community - and unlike with a list of private contacts, it's hard to rebuild a community. That's a tremendous cognitive overhead for starting a community! And one that most non-techies - understandably - do not want to have to deal with. Trust is hard.

Matrix doesn't have this problem because of its decentralized rooms; it doesn't matter how many servers go away, as long as the homeserver of at least one room participant still exists, the room continues functioning as it always has. That means that you create a room "on Matrix", not "on a specific homeserver". That's much easier for users to deal with.

The tradeoff is that unlike with XMPP, where you have a single authorative server for handling things like access control and moderation and membership, this needs to function entirely decentrally in Matrix - so now, the network is suddenly a distributed system that needs to handle state synchronization and everything that that entails.

And that is where the server-side complexity in Matrix comes from. It is necessary, unavoidable complexity if you want to solve the problem of "where do I put my community" in a way that actually works for regular users. It sucks, but there simply is no simpler way to solve this problem.

The reason XMPP doesn't have this complexity is because it doesn't even try to solve this problem. If the rumoured decentralized MUCs ever become a thing, they will involve similar complexity.

Edit: Also, it would be nice if y'all recognized that the priority should be to get the general public over to open comms systems, instead of constantly trying to start wars against Matrix folks. The constant loud misinformation and attacks are getting very exhausting.

joepie91_··on Is XMPP any good? Also, let's write a client in Tcl, maybe
> For messaging purposes, it is absolutely identical to JSON in this regard. Once you have many existing implementations out in the wild that need to interact with each other, you'll need namespaces or their NIH analogue. And JSONs with namespaces will be just as bloated as XML.

It's definitely not identical. There's one major difference, that rarely seems to get mentioned but seems to be responsible for most of the pain:

JSON maps directly to language-native data structures, but XML does not.

The reason for this is that XML distinguishes between child nodes and attributes, but in the basic data structures that most languages have, there's no way to represent this in a conflict-free manner without doing something like `{ attributes: { ... }, children: [ ... ] }`, which is an awkward structure to query.

The result is that when you're working with XML, you almost always end up with a "data API" that's designed specifically for XML (eg. classes representing nodes with getters for attributes and children), whereas with JSON you're generally working with simple nested lists and structs.

This introduces relatively much complexity in what's a "hot path" in terms of development effort - every single time you want to interact with the deserialized data (which is all the time!), you have to deal with an XML-specific data structure instead of treating it as "just another source-agnostic pile of structs/objects".

The result is tightly coupled code that requires the reader to be familiar with the specific XML API/representation being used, instead of it 1:1 mapping from the serialized data to a language-native data structure. That's not good!

While it is true that you are likely to implement a namespace-like mechanism in JSON as well, for open protocols, the difference is that the format itself does not specially define namespaces - which means that the 1:1 mapping always remains true, and it's the protocol developer's choice to eg. reserve a `children` property to contain child nodes, with the understanding that that property then cannot be used for other things anymore.

XML deserializers cannot do this; it's entirely possible for XML to exist that looks like `<tag children="yes"><subtag/></tag>`, and therefore there is no possible 1:1 mapping that a deserializer can use that's guaranteed not to make certain data inaccessible. And since child nodes are not represented as an attribute in XML's data model, you cannot expect protocol designers to avoid a specific attribute either.

Bottom line: I suspect that this seemingly small design difference has far-reaching second-order effects in how deserializers are implemented, and that that is responsible for most of the pain that people experience in working with XML.

joepie91_··on Ask HN: Is ADHD Real?
I'd recommend giving https://gekk.info/articles/adhd.html a read, and seeing whether that sounds like something you can identify with. I've found it invaluable, personally, to answer this question for myself.
joepie91_··on Ask HN: Is ADHD Real?
> I got new glasses a few weeks ago. As I was being fitted, I asked the guy if there were any tools I could buy that would help me adjust my glasses myself. He asked me what I do for a living. "I'm a programmer." "Well, would you want an optician messing with your code?"

> People that specialize in mental health, psychiatry and brain research have concluded that ADHD is a diagnosable mental disorder. I'm glad they're doing that instead of trying to write books on rust or go.

Except the problem with the mental health industry is famously that the 'specialists' don't actually listen to the patients/clients/etc., and operate on wildly inaccurate and outdated views that ultimately end up harming those they are "treating".

Yes, ADHD is real, but "because a bunch of psychiatrists said so" is very much not the reason. And the specific way in which they describe it generally has almost nothing to do with what ADHD really is or how it's experienced by those who have it.

joepie91_··on Forced to sell chipless ink cartridges, Canon tells customers how to bypass DRM
I think anyone who has ever tried to get any process optimizations pushed through in a large company, knows that the idea of "the market will automatically do whatever is most profitable" is mostly an ideologically convenient pipedream.
joepie91_··on Forced to sell chipless ink cartridges, Canon tells customers how to bypass DRM
I think the comment you're replying to was meant sarcastically.
joepie91_··on Forced to sell chipless ink cartridges, Canon tells customers how to bypass DRM
Not really. RPi printing server setups are somewhat common.
← PreviousPage 2 of 22Next →