@hrefna@hachyderm.io
@hrefna@hachyderm.io avatar

hrefna

@hrefna@hachyderm.io

SRE at Google. Queer. Poly :potion_polyamory: Trans :verified_trans: :nonbinary_potion: Engineer. Ace :flag_ace: Member of AWU-CWA. #ActuallyAutistic :rainbowinfinity: #UnionStrong

Opinions my own. Does not suffer fools gladly.

This profile is from a federated server and may be incomplete. Browse more on the original instance.

hrefna, to random
@hrefna@hachyderm.io avatar

Of course, part of the problem of knowing if you have the same object or if there has been an update is that to do it properly requires canonicalization, which is normally a nightmare, but is an extra special nightmare if it means you have to process the JSON-LD and also define ownership relationships that don't exist at the moment -.-

hrefna, to random
@hrefna@hachyderm.io avatar

Examples of the things SWICG is publishing that should, IMO, be FEPs: https://swicg.github.io/activitypub-webfinger/

hrefna, to random
@hrefna@hachyderm.io avatar

Love the look of using server-to-server blocks like you would a personal blocklist. Just love it.

hrefna, to random
@hrefna@hachyderm.io avatar

"This is a server-to-server protocol that is specified like a client-to-server protocol."

"Why are all of the distributed systems engineers twitching?"

hrefna, to fediverse
@hrefna@hachyderm.io avatar

Part of my frustration with and one of the things I find baffling giving everything else in it: the lack of tools for backpressure.

Backpressure is fundamental in building reliable distributed systems (c.f., Notes on Distributed Systems for Young Bloods). From a C2S perspective I get why it wouldn't need to be specified, but from a S2S federated protocol perspective its absence is frustrating.

All that it says is to take care not to overwhelm others and a bit on rate limits

hrefna,
@hrefna@hachyderm.io avatar

What could it say instead?

It could give handling considerations with 429s.

It could specify needing to have an abandonment time after which point you assume an actor is "dead."

RFC 6120 (XMPP), when talking about clients, has the following requirement

hrefna,
@hrefna@hachyderm.io avatar

@julian It Depends™, but even just saying something like:

"A receiving server MAY return a 429 on a request. If this happens or if the server cannot be reached the sending server SHOULD retry with exponential backoff. They SHOULD have a period of time after which they will stop trying and SHOULD have a period of time after which they will consider the actor 'dead' and stop sending them messages."

Instead you get things like these:

For federated servers performing delivery to a third party server, delivery SHOULD be performed asynchronously, and SHOULD additionally retry delivery to recipients if it fails due to network error.

hrefna,
@hrefna@hachyderm.io avatar

@jenniferplusplus Yes. Yes. A million times yes.

There's no sync capability despite that we're basically building a distributed database where we are trying to have a sync'd state.

So if you fall off for a few hours what is expected to happen?

Everyone's favorite thing from C++: Unspecified.

hrefna,
@hrefna@hachyderm.io avatar

@julian But that could be specified at the protocol level. It isn't, but it is kind of weird

There are entire sections on it for Dynamo (first image), Tiara discusses it extensively in the posted snippet (second image) and in multiple other sections, and it is covered as something to address in Requirements for Signaling Protocols (RFC 3726).

These all have multiple sections addressing different parts of this problem and solve it with different levels of flexibility, but they all address it.

Crash resistance. Observe that Tiara can be separated into disconnected components by the crash of even a single process. Tiara can be fortified against separation due to crashes in the following manner. At the bottom, each process maintains a crash-redundancy link to its right neighbor’s neighbor. That is, the bottom level list becomes doubly connected. Thus, it can tolerate a single crash. The crash tolerance can be further improved by adding similar links to more distant processes. Since these links only span a fixed number of processes, their construction does not affect the asymptotic complexity of stabilization of Tiara. Note that in an asynchronous model there is no reliable way to distinguish a crashed process from a slow one [15]. Thus, to accomplish this, the processes need to be equipped with failure detectors [9, 10]. A failure detector alerts the process if its neighbor crashes. Then, Tiara stabilizes to a legitimate state corresponding to the system without the crashed process
5.10.3. Graceful Handling of NSIS Entity Problems NSIS entities SHOULD be able to detect a malfunctioning peer. It may notify the NSIS Initiator or another NSIS entity involved in the signaling process. The NSIS peer may handle the problem itself e.g., switching to a backup NSIS entity. In the latter case note that synchronization of state between the primary and the backup entity is needed.

hrefna,
@hrefna@hachyderm.io avatar

@jenniferplusplus

That's a mood.

@SoniEx2

hrefna, to random
@hrefna@hachyderm.io avatar

It's something to look at an author's work and find that it has grown richer, deeper, and more meaningful to you as you get older despite the age you were introduced to it.

I need to reread The Last Unicorn.

hrefna,
@hrefna@hachyderm.io avatar

While I'm at it I also need to reread The Neverending Story, which is basically just occultism all the way down.

I enjoyed the movie (well, "enjoyed," the Swamp of Sadness and the Nothing are stuck in my mind for the rest of eternity), but the movie and its sequels kind of lose the meaning along the way.

That was not true of The Last Unicorn at all.

hrefna, to random
@hrefna@hachyderm.io avatar

If you are a cis person and you have "trans rights are human rights" in your bio I am generally going to assume that you are not a safe person.

Similarly. If you put "Ally" in your bio I am going to assume you aren't one.

Not because it is bad to flag that "Trans rights are human rights," but because it is too easy: you are really only advertising who you are to followers and potential followers, and that is a very easy thing to do without having done the work.

hrefna, to random
@hrefna@hachyderm.io avatar

I see the grifters who continue to lie about Nivenly and hachyderm will take any excuse to do more lying.

They've been corrected, they don't care.

hrefna,
@hrefna@hachyderm.io avatar

You don't have to like an organization or a server. You can block them, you can criticize them.

But. Don't. Lie.

hrefna, to random
@hrefna@hachyderm.io avatar

If someone says "hey the word choice you use here is a problem" the best response is certainly not "it has multiple meanings, see definition (n) <link to dictionary>"

hrefna,
@hrefna@hachyderm.io avatar

You may not agree with the assessment! You may be unwilling to change!

Irrespective of whether that is okay, that response is certainly not.

hrefna,
@hrefna@hachyderm.io avatar

Better responses include, but are not limited to:

  • Blocking the person
  • Muting the person
  • Ignoring the person
  • Changing your language
  • Asking for clarifications
  • Asking friends in private to help you understand

So many better options!

hrefna, to random
@hrefna@hachyderm.io avatar

Nate Silver went full pundit and right-adjacent a long, long time ago.

His desire to participate in various topics far outstripped his actual ability as a mathematical modeler or his understanding of those topics. This shows in his models, in what he chooses to talk about, and later in how he chooses to talk about the topics regardless of if there is a model.

hrefna, to Java
@hrefna@hachyderm.io avatar

It's fascinating to me looking at beginning language guides and thinking "what does this say about the culture of the language"

When I was delving into #OCaml it was (with affection) "here's hello world and here's a dense academic paper on implementing event systems in OCaml 5!"

#Java guides used to be centered on the assumption that you were a web programmer looking to do applets, even long after that assumption died.

#RustLang generally seems to assume a background in programming w/ a CLI.

hrefna,
@hrefna@hachyderm.io avatar

I'll certainly have more observations as I dig more into The Rust Book and Rust by Example on , but it is interesting to me to see the baked in assumption that you are pretty comfortable with concepts like package management (I mean Rust By Example talks about creating a library before it talks about using a library and The Rust Book is similar, glossing over nuances here), CLI tools, and build tools.

To be clear, this is all fine, it is just informing me who the target audience is.

hrefna,
@hrefna@hachyderm.io avatar

After a while with my conclusion there is that:

OCaml really is a language for people who are fairly mathy and academic but who still want to get stuff done. The culture felt entirely focused around this question. So you get the dense academic paper not to scare you, but because they think you will be legitimately interested in it (albeit probably not right after hello world, but fairly soon).

OTOH there's a kind of ruthless efficiency: if you need to compromise you compromise.

hrefna,
@hrefna@hachyderm.io avatar

Thinking about cultures of languages for a second:

My experience with people (not elixir, I have only limited experience with elixir and less with the community) is that you were looking at practical people with a hard problem to solve, some niche elements to that problem, and who didn't get hung up on niceties (like having strings cough).

There's a massive degree of enthusiasm for the model and everyone kind of glossed over the language because of the runtime and model.

hrefna,
@hrefna@hachyderm.io avatar

@crmsnbleyd I have some, and a little tiny tiny bit with Liquid Haskell.

The community around Haskell seems to divide based on whether you are on the engineering side or the academic side. The engineering side has put a bad taste in my mouth on several occasions.

I often feel like Haskell's worldview is very rigid (advocates would say this is a good thing and I don't disagree) and there's a latent feeling of "you must be this smart to ride this ride."

As opposed to OCaml's more… open hand.

hrefna,
@hrefna@hachyderm.io avatar

@crmsnbleyd That said my l ast exposure to the Haskell world in any real depth was maybe five years ago, so things may have changed since then! That's not a group I've kept up with actively.

hrefna,
@hrefna@hachyderm.io avatar

@edwintorok Awesome ^_^ This is all reflective of my experience learning it, which was about a year ago now, so glad to hear that it has been improving!

  • All
  • Subscribed
  • Moderated
  • Favorites
  • provamag3
  • kavyap
  • DreamBathrooms
  • osvaldo12
  • magazineikmin
  • InstantRegret
  • everett
  • Youngstown
  • ngwrru68w68
  • slotface
  • rosin
  • GTA5RPClips
  • tester
  • PowerRangers
  • anitta
  • thenastyranch
  • mdbf
  • ethstaker
  • cisconetworking
  • Durango
  • vwfavf
  • normalnudes
  • tacticalgear
  • khanakhh
  • modclub
  • cubers
  • Leos
  • megavids
  • All magazines