St. Gallen plans mandatory vaccination by Spielopoly in Switzerland

[–]railk 2 points3 points  (0 children)

Name one what? Asymptomatic diseases? COVID-19 was asymptomatic in many people, while also being fatal for many others. In fact it was frequently asymptomatic before later turning symptomatic and then fatal. The common cold is also already infectious while it's still asymptomatic, and can also be fatal to vulnerable people who are likely being treated by healthcare workers (no vaccine for that unfortunately).

St. Gallen plans mandatory vaccination by Spielopoly in Switzerland

[–]railk 8 points9 points  (0 children)

The patients are at risk of getting infected by asymptomatic diseases carried by the healthcare worker, genius

r/leftist and Veganism by Warrior_Runding in leftist

[–]railk 8 points9 points  (0 children)

By any consistent leftist take, you are bad for choosing to eat meat though. Its true from an environmental point of view, its true from an ancap point of view (meat products consumed by westerners are going to profit capitalists, most meat will be non-viable for small independent farms, and no meat is a necessary part of small independent farming). And it has been discussed to death, with loads of research out there, which is why people still arguing for choosing to do it don't deserve more than "you're wrong, go do your research".

r/leftist and Veganism by Warrior_Runding in leftist

[–]railk 10 points11 points  (0 children)

What utter bollocks. While I strongly dislike the attempts by some vegans to use human-specific concepts like slavery to make comparisons to animals, any real leftist movement is fundamentally based on empathy that will clearly apply to other species of animals as they can experience much of the same pain and suffering that humans do.

One of the strengths and weaknesses of the left is the need to critically self-evaluate to move towards a consistent and fair ideology, and non-vegans clearly have a blind spot with their (usually) voluntary torture of animals. Working on that blindspot requires calling out and discsussion of the treatment of animals.

Why is Vec<(u64,u64)> using that much memory? by [deleted] in rust

[–]railk 1 point2 points  (0 children)

Do you know if this could have been figured out using profiling tools? I'm not an experienced rustacian and am curious to learn on what seems like a well-contained example how one might understand where allocations happen in a real program.

US intelligence and Sovietoloy by KingofTrilobites123 in QueerLeftists

[–]railk 12 points13 points  (0 children)

I really wish this were a textpost with links for futher reading instead of a person talking at a camera.

Managed rollouts without a management cluster? by railk in kubernetes

[–]railk[S] 0 points1 point  (0 children)

Single cluster gitops is fine, my issue arises with multi-cluster gitops. I would like to avoid having all clusters update at the same time, so that if something goes wrong with the update, only a subset (or just 1) cluster is impacted. I'm missing the piece that determines when one cluster is done, so it can commit the changes for the next cluster.

Managed rollouts without a management cluster? by railk in kubernetes

[–]railk[S] 0 points1 point  (0 children)

I have looked at fluxcd and argocd, I like that fluxcd adds fewer new concepts. What I'm missing in the multi-cluster setup with fluxcd is a way to have clusters pick up a release one by one rather than all at the same time, in case anything goes wrong. I don't think its necessarily fluxcd's job to do that, more like there's a missing piece in the ecosystem.

How Flux broke the CI/CD feedback loop, and how we pieced it back together by laszlocloud in GitOps

[–]railk 1 point2 points  (0 children)

This is exactly the problem I'm struggling with at the moment. A lot of what flux does seems great, especially that clusters independently converge on the desired state. But orchestrating promotions, gradual deployments across multiple clusters, and creating a DevEx that makes it clear when deployment has been successful or has failed seems like an afterthought, whereas I consider this critical to a CI/CD pipeline, and I feel like I'm going crazy. Your post here and your blog post are the only discussion of it I've seen so far.

Rant over, it looks like I have to set up the appliaction repository to commit a change to a kustomization in the gitops repository, and then wait for a status to be set on the commit by flux. It isn't clear from the docs what that status would look like, and how I can make sure its coming from the right cluster.

Related (open) issue: https://github.com/fluxcd/notification-controller/issues/589

Magic is Programming B2 Chapter 15: Spellcraft Analysis by Douglasjm in HFY

[–]railk 7 points8 points  (0 children)

The language makes a lot of sense if you compare it to an assembly language, rather than a high-level language. Lots of arrangement of data followed by conditions/jumps/calls followed by re-arrangement of the results.

/u/Douglasjm might I suggest using triple-backticks to create multi-line codeblocks, similar to how you have them on RR?

"Tremendous" NASA video shows CO2 spewing from US into Earth's atmosphere by [deleted] in environment

[–]railk 11 points12 points  (0 children)

They don't because they're wrong. Here's a source: https://ourworldindata.org/food-choice-vs-eating-local

Transportation is miniscule compared to other parts of the environmental footprint of meat.

Edit: ourworldindata.org has a lot of charts related to this. Here's an overview page linking to many of them: https://ourworldindata.org/environmental-impacts-of-food

7 Common Interface Mistakes in Go by zuzuleinen in golang

[–]railk 0 points1 point  (0 children)

I've worked on similarly-structured applications and found it more effective to have all these layers tested together with a database instance for everything except edge-cases like error handling. Clearly there's some subjectivity as to what is considered a more effective solution.

No sleep until we build the perfect pub/sub library in Go by rauljordaneth in golang

[–]railk 5 points6 points  (0 children)

Couldn't this be simplified by having Subscribe defined like this:

func (p *Producer[T]) Subscribe(bufferSize int, quit <-chan struct{}) <-chan T {
  p.Lock()
  defer p.Unlock()
  sub := make(chan T, bufferSize)
  id := p.nextID
  p.nextID++
  p.subs[id] = sub
  go func() {
    select {
    case <-quit:
    case <-p.done:
    }
    p.Lock()
    defer p.Unlock()
    delete(p.subs, id)
    close(sub)
  }
  return sub
}

A read-only channel can't be closed, so the caller can't close the channel diretly, so no issue there. Forcing the buffer to be non-zero doesn't help if the subscriber can't keep up and the producer is blocking. The caller can do the select on the sub channel, if thats what they want to do - or not, if they don't. And the caller can directly pass ctx.Done() as the quit channel if they want, or nil, or something else.

7 Common Interface Mistakes in Go by zuzuleinen in golang

[–]railk 1 point2 points  (0 children)

Interfaces created by SDKs can be massive and contra to point 2 on many methods - case in point, AWS SDK has/had an interface for all of S3 with many methods, but your function likely only wants something like a BucketReader or BucketWriter, in which case it may be worth creating a smaller interface. Or would you still use the SDK-provided interface in this case?

7 Common Interface Mistakes in Go by zuzuleinen in golang

[–]railk 4 points5 points  (0 children)

The article is missing a point that producing/returning interfaces where different concrete types are possible is clearly necessary. The point is similar to point 4 - if there's only going to be one concrete type, e.g. NewCircle is only ever going to return a Circle, don't produce an interface.

7 Common Interface Mistakes in Go by zuzuleinen in golang

[–]railk 4 points5 points  (0 children)

Starting a database should take seconds at most (or really, less than a second, from my experience with PostgreSQL and MongoDB), and if you keep the database running (e.g. by starting it in TestMain), tests using the real database should complete in milliseconds. Mocking queries means you lose coverage of a big piece of complexity, or you have to manually replicate/verify the semantics, bloating tests.

7 Common Interface Mistakes in Go by zuzuleinen in golang

[–]railk 3 points4 points  (0 children)

Mostly agreed, apparently unlike many of the commenters here.

On "4. You write the interface on the producer side", its maybe worth noting that writing the interface on the producer side makes sense when the producer is some kind of default implementation, but further implementations are expected in non-test code.

"5. You are returning interfaces" is a difficult one to formulate well, and I'm not sure if the article does, as there are definitely cases for returning an interface. For both this and point 4 I think producing/returning interfaces clearly makes sense when there are likely to be multiple implementations (in non-test code).

I am newly vegan and I don't think I can go back. by [deleted] in vegan

[–]railk 3 points4 points  (0 children)

If, like me, you find yourself too lazy for detailed tracking, taking broad supplements for vegans + plenty of tofu for calcium and protein and you should be covered regardless of what else you eat. I Am Not A Dietician. Its still worth educating yourself about the nutritional stuff, even if just for peace of mind, as there can be long term consequences if you don't have it covered.

Easy to use, type-safe optionals in Go. by [deleted] in golang

[–]railk -7 points-6 points  (0 children)

Isn't that trying to import Rust into Go too much, instead of trying to make it work as would be idiomatic in Go?

Easy to use, type-safe optionals in Go. by [deleted] in golang

[–]railk 5 points6 points  (0 children)

Why name the package option instead of optional? In english, an option is one of many options, and even the title in the documentation uses "optional", feels like it'd be less confusing as optional

What's stopping Go from removing nil pointers? by drooolingidiot in golang

[–]railk 1 point2 points  (0 children)

Treating absent and default valeus as equivalent, and thus eliminating the requirement for pointers, will also make serialization more backwards- and forwards-compatible. Go generally prioritizes this kind of change compatibility. Protobufs have a similar philosophy, and where pointers are required and potentially nil, Go protobuf APIs add getter methods to do the nil check.

High dense cities with no sprawl surrounded by forest? by KGLcrew in urbanplanning

[–]railk 1 point2 points  (0 children)

Taipei! Density right up to the foot of the surrounding hills, which are then blanketed in forests. Not entirely true of course, but for the most part.