Live data from Hacker News

Etcd, or, why modern software makes me sad

roguelazer.com

171–180 of 648 posts

Re: Etcd, or, why modern software makes me sad

#171
post #133

This is one weird comment section. There are people attacking the author for a statement made about CoreOS, and for some hate towards Kubernetes. The key point of the article is not really being addressed here: vested interests from large companies are able to introduce huge complexity into simple, well-designed projects. While the complexity may be good for some end that said vested interest has in mind, they are al…

>> It's almost like there's no good representation in the open-source world for the solo developer or small team.

As a solo open source developer who maintains a popular OSS project, this is 100% the case. Sometimes it feels like big corporations are actively working against us. It's almost impossible to get any coverage at all on any kind of media. No matter how much organic growth your project has.

My project has been growing steadily and linearly for almost a decade. Now it has almost 6K stars on GitHub so you'd think that this by itself would draw some attention? Not so.

It's almost impossible to find it on Google search results. Most users find the project through direct word of mouth from other users of the project. We've never received a single consulting contract from any corporation.

Re: Etcd, or, why modern software makes me sad

#172
post #30
post #5

Earlier quoted context omitted.

What are some of the arguments against `systemd`? I've used it in several production systems and don't really have an opinion on it.

Here's a good article that I saw on HN a few months ago: https://blog.darknedgy.net/technology/2020/05/02/0/index.htm... Also: https://suckless.org/sucks/systemd/ Personally I avoided it for a while because of the hate, but haven't really had issues with it since using it.

Thanks for the share from suckless.org. I'm interested to learn about init now :)

Re: Etcd, or, why modern software makes me sad

#173
post #161
post #133

This is one weird comment section. There are people attacking the author for a statement made about CoreOS, and for some hate towards Kubernetes. The key point of the article is not really being addressed here: vested interests from large companies are able to introduce huge complexity into simple, well-designed projects. While the complexity may be good for some end that said vested interest has in mind, they are al…

Meh, having your opener call out a specific project as bullshit has that effect. Pulling the snark would have resulted in more people getting the main point.

Definitely true. The author could have chosen differently and it would have probably led to more constructive comments.

However, I'll also point out that focusing on the snark and ignoring the rest of the article is also a choice made on the part of the commenters.

Given a choice, I personally prefer to take the strongest and most charitable interpretation of someones ideas before choosing to criticize them. At least the discussion is interesting that way...

Re: Etcd, or, why modern software makes me sad

#174
post #53

Earlier quoted context omitted.

Nice projection my dude. It's a lamentation of the introduction of complexity into a formerly-simple set of APIs.

Lamenting about complexity just for the sake of lamenting about complexity and then adding a few potshots at Google/FB/etc. doesn't exactly make for a thought-provoking, nuanced, or interesting argument, though

But it does not make the argument less true.

Re: Etcd, or, why modern software makes me sad

#175
post #122
post #70

Earlier quoted context omitted.

What's wrong with the YAML? It's easy to read and write, concise, and generally has sane defaults meaning you don't have to be overly verbose.

In the Kubernetes and Ansible/Salt world it's frequently templatized, and then you need to worry about indentation that you place or your template engine places. Every day I pray that Helm will incorporate support for jsonnet so I never need to touch YAML again.

I made a script for expressing similar deployments (ie homepage-en, homepage-de) in a variety of contexts (test, prod) and their permutations in a single, succinct json file.

It's a bash script though.

Example json:

  {
  "deployments": [
    {
      "name": "site-en",
      "env": {
        "hello": "world"
      }
    }
  ],
  "targets": [
    {
      "name": "dev",
      "context": "aks-dev",
      "env": {
        "ipsum": "dolor"
      }
    }
  ]
  }

Re: Etcd, or, why modern software makes me sad

#176
post #47

I run k8s in production and I think this is a really bizarre axe to grind that sort of smells like someone who got upset by how steep the kubernetes learning curve is. Which, in a way, is understandable. > 1) Add hundreds of new failure modes to your software In my entirely anecdotal experience, it removes error modes. It turns out that just because k8s offers a feature (it offers many!) doesn't mean you're required…

It's always worth noting that k8s isn't designed to give outsiders the power of Borg the way Google SREs have the power of Borg.

it's designed to give outsiders something better, based on learned experience of where the toil and cocked-foot-guns are working with Borg. Borg is, by modern standards, extremely legacy infrastructure and even Google is trying to replace it with something better internally.

Re: Etcd, or, why modern software makes me sad

#177

> In 2015, an unrelated tool called Kubernetes was released by Google (but, really, by Xooglers). I would go so far as to say that Kubernetes (or, as the "cool kids" say, k8s) is the worst thing to happen to system administration since systemd. Oh for crying out loud. This Kubernetes bashing is getting so old. Frankly, I think it's the best thing that has happened in the past few years. Boohoo it requires some YAML.…

Your comment is as valid as what you have quoted. Kubernetes can bring lots of value, but not to everybody.

Re: Etcd, or, why modern software makes me sad

#178
> The software development world would prefer to use their multi-gigabyte IDEs running on ElectronJS to build thousand-dependency Java applications targeting ungainly APIs on hard-to-operate systems than support something simpler and better.

I think that developer tools have always taken up a significant proportion of the resources available on a developer machine. Back in the 90's, Visual Basic was criticizes as being bloated for requiring a 4MB of RAM (the exact number may be off).

Now we have vastly more powerful computers. I think using those resources to have easier, more extensible, and more capable developer environments is a good tradeoff.

Re: Etcd, or, why modern software makes me sad

#179
post #161
post #133

This is one weird comment section. There are people attacking the author for a statement made about CoreOS, and for some hate towards Kubernetes. The key point of the article is not really being addressed here: vested interests from large companies are able to introduce huge complexity into simple, well-designed projects. While the complexity may be good for some end that said vested interest has in mind, they are al…

Meh, having your opener call out a specific project as bullshit has that effect. Pulling the snark would have resulted in more people getting the main point.

While I agree with you, I also think that snark is what makes the blog personal to the author. If it's not a personal reflection of one's thoughts, some may not consider it worth doing.

Re: Etcd, or, why modern software makes me sad

#180
post #92

Earlier quoted context omitted.

> HTTP/2 can only bring advantages if you actually go all the way to push/bundle resources into responses Compared to well-optimized HTTP/1 (e.g. using minified CSS and sprite-sheets), sure. Compared to most HTTP/1 deployments, though: no. HTTP/2 gives you tons of advantages "for free" that you need build-time processes to attain in HTTP/1. With HTTP/2, you can do "the naive thing" that'd you'd have done on the 1995…

I agree these things can be useful, but again none of these come out of the box (if I haven't overlooked or misunderstood something). Including "doing the naive thing"; I mean how do you expect your web server to automatically push CSS or SVG sprites/fonts unless you're relying on the server to intercept/parse your HTML for delivery-time optimizations a la PageSpeed and make heuristic scheduling decisions? Unless you…

Web browsers are limited in the number of concurrent socket connections they'll open to a given origin. This matters not-at-all in HTTP/2, since everything is going over a single socket; while mattering quite a lot in HTTP/1, since dependent resources being loaded in parallel must be loaded on separate sockets. If you only have six parallel sockets to work with, then if your page is, say, an image gallery, then the Javascript file that makes it work (loaded at the bottom of the body) might be blocked waiting behind the loading of e.g. some large image higher up in the body. The previous requests need to entirely finish (= a round trip) before the next requests on the same socket can start. Keep-alive does nothing to fix that.

HTTP/1.1 pipelining partially mitigates this, allowing the client to "queue up" a list of all the dependent resources it wants from each socket; but it suffers from head-of-line blocking. Which sounds like some arcane thing, but in practice it means that big things might block the loading of small things. (The browser doesn't know how big things are, so it can't effectively schedule them; and the server must dumbly queue results up in the same order the client requested them, because that's the only way the HTTP pipeline's implicit flow sequence counters will match up.)

HTTP/2 is a full mitigation for this problem, since—even without a heuristic "prioritization strategy" for the delivery of dependent-resource flows—the "oblivious" strategy is still a good one: if you attempt to deliver all the resources in the queue concurrently; and you do so by delivering one fixed-size chunk of each flow per iteration, in a round-robin fashion; then you'll end up finishing delivery of resources smallest-to-largest—which means you'll usually deliver the most-critical resources first, no matter where in the dependent-resource queue they started.

Or, in short:

HTTP/1.0 = O(N) required roundtrips for a page with N resources.

HTTP/1.1 with pipelining = O(1) required roundtrips for a page with N resources (followed by O(N) bytes streamed half-duplex), but the page can still take nearly the same amount of time to become interactive as if it were O(N) roundtrips, because of effectively worst-case scheduling.

HTTP/1.2 = O(1) RTTs + O(N) half-duplex bytes for N resources, loading "intelligently" such that the page becomes interactive in O(log N) time.

Post reply on HN