1. 13

    A bit of a shallow argument against Docker, there are still a lot of unanswered questions about managing the application. How are the VMs that the go binary is deployed to managed? How is the networking configuration and service discovery managed? How do you know what the current version deployed is? How do you manage potential cgo dependencies?

    Maybe the application is simple enough that these questions don’t matter, however more complicated go services need to answer these questions. I’m not advocating for Docker specifically here, I actually use NixOS and systemd to handle a lot of these issues. I just don’t think it’s fair to say that scping a go binary is equivalent to a running a Docker image.

    1. 18

      I kind of agree, but from my experience a lot Docker users are using it for packaging Python applications + dependencies and nothing more. A service manager/systemd and Rust/Go binaries could probably cut some operations overhead.

      1. 35

        a lot Docker users are using it for packaging Python applications

        I think what happened is that pip+virtualenv/ruby+bundler/node+npm have dropped the ball so spectacularly that nowadays the idea of a single executable file you could deploy is seen as some advanced high-end feature instead of … literally the most basic thing you could ask of a compiler.

        1. 4

          Sadly, IMHO, it’s not seen as but it really is. And there is no overlapping between the heavy users of Python/Julia/R/Scala¹ and the opportunity to have a single executable file to deploy. Due to the nature of those languages, the solution is “bring everything you need with you” and it is easier to do it in a container than fiddling with the other solutions.

          ¹ yes, I am aware that you can provide a jar and use the JVM and of Scala Native (that is still under development and without multi-threading the last time I looked).

          1. 2

            Python, Ruby and Node all started when any comparable compiled language was much harder to use. People wanted ease and speed of development. Go is helping with this story, being simpler than C++ and its ilk, but those three interpreted languages are well established and people figured ways around deficiencies (i.e., Docker).

            1. 1

              Python and Ruby both had compilers years (maybe decades?) before Docker became popular, and Node has been based around a JIT compiler (V8) from the very beginning. They just happened to be compilers which ignored that use case for whatever reason.

          2. 5

            I suspect a lot of those folks are inadvertently getting a dev environment that approximates their production. Lots of developers are running MacOS or Windows locally while deploying to a Linux.

          3. 14

            I just don’t think it’s fair to say that scping a go binary is equivalent to a running a Docker image.

            It kind of is, because Docker doesn’t do service discovery, or set up your network, or do anything else really except … run a binary. Oh, and docker {push,pull}. People use tools built on top of Docker to handle all of these things. Docker is little more than a glorified chroot with cgroups and built-in curl to DockerHub.

            the application is simple enough that these questions don’t matter

            Many multi-million dollar companies run on 2 or 3 servers, or a handful. These are not “simple” in the sense that they’re simple toy things, they’re only “simple” in the sense of uncomplicated. Turns out you don’t really need to have a very complex infrastructure to do useful things.

            1. 5

              I’m not advocating that docker should be used here, I’m just saying that there are real problems that it solves. Like I mentioned, I use NixOS to solve most of these problems. For my current project have a single box with a declarative network, postgres, Caddy, and Elixir release setup and a dns entry. I’m not even saying you need this, having an Ansible or Packer setup would work too.

              If they had mentioned any of those tools I would have been fine. Just having an scp to box setup is not enough when the box dies and you need to setup another one, but can’t figure out how the firewall rules worked.

              1. 3

                You’re talking about completely different things than what this article is about. Why says they’re not using some sort of scripted solution to set up a server?

                1. 3

                  OK so based on the comments, they don’t have a database or any state. I guess the point of the article is that golang binaries are easier to run than Python applications assuming only static asset dependencies? Or that simple applications are simple to deploy?

                  I would agree with that and also that it doesn’t warrant docker. I could do something similar with Java using jpackage. However as soon as you have a cgo dependency, like go-sqlite, you might not be able to just scp the binary.

              2. 1

                I mean OK it’s a glorified chroot with cgroups, but it’s chroot with cgroups. Like great! a single command instead of N commands! Plus there’s like… tagging and stuff, so you’re able to manage it with stuff that’s familiar (built-in version control, which is better than a lot of early-stage infra).

                Even when you just have 3 servers, having an easy way to carry the config reliably for a fourth, or testing that config locally, or all the other things, is very useful. And yeah, Docker doesn’t capture everything, but its big-ball-of-mud strategy means that it’s hard to miss a lot of the common issues with trying to get a new server running IMO.

              3. 12

                Managing VMs, network config, service discovery, current version, dependencies, In most cases those are all handled outside of docker. Or that’s what I’m seeing. Are your experiences different?

                1. 1

                  Getting the current version and managing native dependencies are definitely handled by docker. If you’re on a single box and use docker compose, network config and service discovery are handled declaratively and can be replicated by any dev on the team. You don’t have to keep a doc somewhere with a port map or worry about them conflicting with something running on your local machine. If you’re on multiple boxes, then yeah those things aren’t handled though there are many tools that provide those.

                  I guess my point about the VM config is that the surface area of configuring the VM is much lower when everything is in docker. Sure it doesn’t help with actually provisioning the VM or its config, but you can reduce the configuration to setting up docker and a firewall rather than needing to install the correct version of postgres, nginx, and any other deps.

                  Edit: I’ll admit that I should have put developer setup as a point for docker over service discovery, which doesn’t make much sense.

                2. 4

                  Maybe the application is simple enough that these questions don’t matter

                  If people.l would pragmatically think what they really need to do, as in what the task at hand is, that would almost always be the case. The application is simple enough.

                  1. 2

                    One specific thing that is much easier in containers vs. VMs is initial configuration. With VMs you use stuff like cloud-init which (in my limited experience) is quite painful and hard to test. With containers it’s just “here’s an env variable” or “here’s a file that gets dropped in the right place.”

                    1. 1

                      How are the VMs that the go binary is deployed to managed?

                      That’s a question one should not forget about when using Docker as well. In the end it doesn’t change much. Either DIY (rare with Docker now for various reasons), or you use a finished solution. There is many. There is also overlaps. For example you can use Nomad, the exec driver (if you want isolation) or the raw exec (if you don’t nee) or you use the Docker one for a Docker image, or the JVM one which is great if you want to do something similar with fat JARs.

                      But Docker isn’t the thing that helps you with deployment in the end, but in most instances some separate tooling.

                    1. 2

                      If anyone is curious you can get a QRP transceiver for $50 https://shop.qrp-labs.com/qcx (some assembly required). There are versions that work on the HF bands available to technicians if you don’t have a license with expanded privileges. There are a lot of resources for learning Morse Code online, it takes regular practice more than anything else.

                      1. 3

                        Still hoping the QSX makes it out the door some day :)

                      1. 5

                        Do any lobsters have ham radio licences?

                        1. 4

                          I got my license in the US some years ago, although I haven’t put it to as much use as I would like.

                          1. 4

                            Yes, I’m an active ham (Extra) who enjoys digital modes and hacking on ham-related software, among other things. I also have some fun with SOTA.

                            1. 3

                              SA6CJK here (from Sweden, which has a single license class with no renewals). I’m active on FT8 on HF every now and then. QRP has gotten easier with the new digital modes.

                              1. 3

                                Yes indeedy, finally got my license a few years ago even though radio has fascinated me since I was a kid.

                                1. 2

                                  Yes. Anyway I’m only in for APRS, SSTV and weathersats.

                                  1. 2

                                    I do but I need to renew it, will likely get a new callsign since I moved to a new country. QRP is a very interesting technical challenge.

                                    1. 2

                                      I do. It’s a surprisingly big hobby, not just a more powerful CB.

                                      1. 2

                                        raises hand

                                      1. 22

                                        I think part of Go’s success is that it answered a lot of these questions very early on in the language’s life. The standard library, blog, go get, docs, and testing were better fleshed out within a few years of it’s being released than many languages have after a decade. We can argue all day about how good they were, what should change and how all of that came into existence, but it did exist very earlier in the life of the language.

                                        1. 16

                                          So Microsoft GitHub is doing the “lower the price, so the competition dies”-trick in this market as well, now. Interesting.

                                          1. 27

                                            A company responding to market pressures and pricing their products more competitively. Truly an evil ploy 😒🙄

                                            1. 8

                                              Wouldn’t you say it’s unfair competition to be able to dump infinite money into a business area in order to drive out competitors? That’s way past aggressive pricing.

                                              1. 4

                                                Wouldn’t you say it’s unfair competition to be able to dump infinite money into a business area in order to drive out competitors? That’s way past aggressive pricing.

                                                It depends on how much you do it and for how long. Most startups start by selling below cost. The joke about Amazon in the ‘90s was that they make a loss on each sale, but make it up in volume. The typical marker for anticompetitive behaviour is whether the low price is long-term sustainable. If you are selling below cost because you expect to be able to lower your costs via economies of scale, that’s fine. If you’re cross-subsidising from another revenue stream and just trying to push your competitors out of business, that typically isn’t.

                                                As I understand it [1], GitHub is independently profitable, primarily from the enterprise offerings. The free offering is one of the highest return-on-investment advertising campaigns that any company has ever offered (Gillette sending free razors to everyone in the UK who appeared as male on the electoral roll one year is close). Pretty much everyone coming out of university with a vague interest in programming has GitHub experience and I would be shocked if that didn’t translate into a load of companies buying the enterprise offerings. Even the $21/month/dev offering is a lot cheaper for most companies than doing the same thing in-house (compare that to even the salary of one person full time maintaining the infrastructure and you need quite a lot of devs for that to reach the break-even point).

                                                [1] Disclaimer: I work for Microsoft Research, so may be considered biased, but I have no visibility into GitHub.

                                                1. 2

                                                  Bitbucket’s been like this forever right?

                                                  “Offer basic service for free, advanced features behind paywall” is not really an odd concept, and it doesn’t require infinite money pits. As a (relatively small, granted) team we evaluated this change and decided to keep on paying for the paid service because we wanted the feaetures it was providing.

                                                  I also remember a thing about how GH makes a bunch of money on its on-premise thing, and I imagine that pricing is not changing at all

                                                2. 9

                                                  A company responding to market pressures with no regard for profit against competitors that don’t have vast resources backing them is a net detriment to the market. Similarly large companies (Google, Facebook) have no reason to get into the market and smaller companies (GitLab, sourcehut) can’t easily compete with Microsoft operating at a loss. This a classic monopoly tactic.

                                                  1. 5

                                                    I’m not so sure if it’s the case that GitHub “has no regard to profit”; in the HN thread Nat said they’ve been wanting to do this for a while, but had to wait for revenue in the enterprise to be high enough. The existing pricing for BitBucket and GitLab are similar to the new GitHub pricing; GitHub was actually quite expensive before. The new pricing seems reasonable and fair to me, and is competitive. I see no evidence of it being sponsored by Windows sales, for example.

                                                    GitLab seems to be doing quite well with $100M revenue, Atlassian has $1.2 billion revenue (can’t find numbers for BitBucket specifically), sourcehut will always remain a niche product due to its idiosyncrasies (which is not just fine, but great; niche markets deserve good products too). So I’m not especially worried about any of those.

                                                    I’m also not hugely enthusiastic by large companies becoming ever larger, and would have preferred if GitHub had remained independent. I think we probably have some common ground here. But what I’m a little bit tired of is that everything GitHub does these days is seen as part of some sort of malicious plan, and the assumption that everything they do is done in bad faith. Certainly in this case, it seems like a normal common-sense business decision to me.

                                                    Is there a potential for Microsoft to abuse their power with GitHub? Sure! But thus far I’ve seen no indications of this. I agree we should be watchful for this (and ideally we should have better anti-trust laws), but I think we must also keep a level head and not jump to conclusions over every small thing. As someone who started using Linux/BSD systems in the early 2000s I have plenty of gripes with Microsoft (being sent a .doc file was a proper hassle back then), but pretty much all of the leadership has changed and Microsoft is not the same company. Referring to long-since abandoned strategies like EEE is, quite frankly, just inappropriate. I have actually flagged that comment as “unkind”, because random accusations without evidence are not appropriate IMO, even when directed at companies.

                                                    CC this this also replies to your comments: @nomto @caleb @azdle

                                                    1. 2

                                                      I wrote a whole in-depth response but then, upon re-reading, I realized that we pretty much have no common ground on which to discuss this.

                                                      I have actually flagged that comment as “unkind”, because random accusations without evidence are not appropriate IMO, even when directed at companies.

                                                      Y’all are on some real bootlicker shit over here.

                                                      1. 1

                                                        I can see you’re committed to constructive discourse where everyone is free to voice their opinions without fear of being insulted; not so much to convince each other, but to at least understand each other’s positions better. Thank you!

                                                      2. 1

                                                        But what I’m a little bit tired of is that everything GitHub does these days is seen as part of some sort of malicious plan, and the assumption that everything they do is done in bad faith.

                                                        Everything that GitHub does these days is part of some sort of malicious plan. That’s how business works (at this scale and in this part of the economy, at any rate).

                                                    2. 4

                                                      It’s a ploy to eliminate competition and expand private control over the infrastructure used by developers. Whether you think it’s evil depends on your values.

                                                    3. 5

                                                      The interesting part is that they chose to do it after their Enterprise business got big enough to subsidize it, not as a loss-leader using Microsoft money. It seems like the strategy to keep GitHub and Microsoft relatively separated has allowed GitHub to continue to connect very well with their target audience. Someone on HN mentioned Cloudflare as another company that has done a similarly good job of understanding who they’re marketing to and making changes that makes their target market happy.

                                                        1. 12

                                                          Do you have any examples of GitHub or Microsoft extending git so that it’s incompatible with non-GitHub/Microsoft clients?

                                                          1. 11

                                                            I don’t know if/don’t think that this is a case of EEE, but FWIW, I’ve had a lot of trouble explaining people past a certain level of management (read: who have not programmed for more than some amount of time) that git and Github are different things. I’ve worked in a place where virtually everyone with a word to say in terms of budget, tooling and whatnot hadn’t used a version control system since back when SVN was pretty fresh, and some of the things that I had lots of trouble (read: needed countless hours and countless meetings) were:

                                                            • Git is a VCS, Github is a tool that uses git. (This was all happening while I was lending a hand with a very tortuous transition to git and virtually everyone referred to it as “the transition to github”, even though we were actually using Gitlab!)
                                                            • git is not developed by Microsoft.
                                                            • Github is not the enterprise/SaaS version of git, git is not the free/community version of Github.
                                                            • Gitlab is not a free/self-hosted/community edition of Github.
                                                            • You don’t need something like Github or Gitlab to use git.
                                                            • The pull request-oriented workflow of Github is just one of the possible workflows, and you can do it without Github or Gitlab.

                                                            Some of these I’m pretty sure I never managed to really get across. The last meeting I attended before leaving that place saw a bunch of questions like “can we upgrade from Gitlab to Github” and “Can the CLI version of Github (NB: git. That guy meant git.) create pull requests?”

                                                            I don’t really follow the politics of these things because I can’t really say I care – VCSs come and go, I self-host git for myself but otherwise I use whatever my customers want to use and I’m happy with it. But if Microsoft wanted to do the EEE thing, the fruit is definitely ripe.

                                                            1. 3

                                                              The fact that github run the git.io URL shortener is pretty darn deceptive, IMHO.

                                                              1. 2

                                                                I’m not so worried about that in the case of git/GitHub to be honest, since it’s primarily a development tool. If devs decide they want a different tool en-masse, then usually they will get it (…eventually). This is pretty much what happened with svn → git.

                                                              2. 11

                                                                It’s not git, but the other various services tacked on (issues, the workflow, CI, etc) that have basically become synonymous with ‘git hosting’, which require more and more effect to break free from once you become invested in using it.

                                                                1. 21

                                                                  That’s not “Embrace, extend, extinguish”, that’s just building a successful product that people find pleasant to use. There is no “Microsoft git” and you can download all your data from GitHub. If you want to make the argument that there should be more competition in the market, then okay, fair enough. But again, very different from EEE.

                                                                  There is a massive difference because EEE is all about forcing people in to using a product and is malicious, whereas building a very popular product isn’t. There is nothing forcing you to use GitHub. If you want to use any competitor, then you have 100% freedom in doing so.

                                                                  GitHub is also quite far removed from being a monopoly. If anything, then lowering their prices is proof of that; monopolists don’t lower prices.

                                                                  more and more effect to break free from once you become invested in using it.

                                                                  This is true for anything. I stuck to tcsh for years because converting my extensive tcsh config to zsh would be a lot of work, as would re-learning all the tcsh tricks I knew. Even now I just stick with Vim even though Spacemacs is probably better just because I’m so invested in it.

                                                                  1. 4

                                                                    There is a massive difference because EEE is all about forcing people in to using a product and is malicious, whereas building a very popular product isn’t. There is nothing forcing you to use GitHub. If you want to use any competitor, then you have 100% freedom in doing so.

                                                                    But if you want to contribute to a project, and their workflow is centred on Github (push requests, CI, etc.) then you are kind of required to comply. And all that infrastructure is also not that easy to move around – or at the very least it’s an effort that would require a great dissatisfaction with GitHub.

                                                                    1. 6

                                                                      But if you want to contribute to a project, and their workflow is centred on Github (push requests, CI, etc.) then you are kind of required to comply.

                                                                      In Microsoft’s defense, that was true of GitHub long before Microsoft took over.

                                                                      1. 1

                                                                        I wasn’t “attacking” Microsoft, but rather GitHub. The change in ownership is more of a formality to me ^^.

                                                                      2. 4

                                                                        But if you want to contribute to a project, and their workflow is centred on Github (push requests, CI, etc.) then you are kind of required to comply.

                                                                        This is true for any workflow. I really don’t like mailing lists or IRC for example, but if that’s what a project uses then I’m “required to comply” just as much as you are “required to comply” with my GitHub workflow (although I won’t turn down patches sent over email, if that works better for you).

                                                                        Unfortunately, there is no way to satisfy everyone here; different people just have different preferences, and the GitHub workflow works well for many.

                                                                        1. 1

                                                                          Sure, but you don’t need an account for mailing lists, you don’t have to sign anything. Also, due to it’s decentralized nature, it’s easier to prevent a lock-in.

                                                                          GitHub workflow works well for many.

                                                                          Exactly! This pushes developers to adopt GitHub, as they fear (and I have experienced myself) that any other platform will have less interactions (bug reports, patches, etc.).

                                                                          1. 1

                                                                            You need an email account, and you typically need to subscribe to the email list (resulting in a lot of email in my inbox I don’t care about). It also doesn’t offer things like a good code review UI, which are IMO much easier in a GitHub-like UI, especially for larger patches. I appreciate it works better for some, but there’s a lot of friction involved for many.

                                                                            If you’re really opposed to the GitHub-style UI, then my suggestion would be to work on an alternative which doesn’t have the downsides you see, but also removes the friction and UX issues that many really do experience. “Everyone is doing it wrong” is not really very constructive; people usually do it “wrong” for a reason, so best to address that.

                                                                            This pushes developers to adopt GitHub, as they fear (and I have experienced myself) that any other platform will have less interactions (bug reports, patches, etc.).

                                                                            The same applies not just to GitHub, but also git itself. I much prefer mercurial myself, but there’s much more friction involved for (potential) contributors. Related thing I wrote a few years ago: I don’t like git, but I’m going to migrate my projects to it

                                                                            The problem with these kind of tools that everyone needs to use, is that a lot of people don’t really like using and learning multiple of them, so there may be kind of a natural tendency to go towards a single tool. There are certainly some advantages with having these kind of “industry standards”.

                                                                            1. 1

                                                                              It’s true that subscribing to mailing lists can be annoying. But personally, I don’t have a “everyone is doing it wrong” approach, as I think that sourcehut is building towards a very good system that both works for web-oriented and mail-oriented users.

                                                                              And regarding git, I think that main difference is tool vs service. Git is free software, I don’t need permission to use it, not could it be revoked. GitHub is a platform with their own interests. But other than that, I understand your point. I too find hg interesting, but what keeps me from transitioning is manly that in Emacs, Magit is too comfortable to git up.

                                                                      3. 2

                                                                        That’s not “Embrace, extend, extinguish”, that’s just building a successful product that people find pleasant to use. There is no “Microsoft git” and you can download all your data from GitHub. If you want to make the argument that there should be more competition in the market, then okay, fair enough. But again, very different from EEE.

                                                                        There is a massive difference because EEE is all about forcing people in to using a product and is malicious, whereas building a very popular product isn’t. There is nothing forcing you to use GitHub. If you want to use any competitor, then you have 100% freedom in doing so.

                                                                        Everything you say also applies to the classic examples of EEE like extending HTML in IE. Every example of EEE is “building a successful product that people find pleasant to use,” so I don’t know why you juxtapose those things. Users of IE in the 90s had 100% freedom in switching to Netscape too. If you think these are fine justifications, you simply have no problem with EEE.

                                                                        And there is “Microsoft git,” it’s called “hub.”

                                                                        1. 2

                                                                          Extending HTML is different because it forced Netscape and other vendors to “catch up” or their product would be “defective” (in the eyes of the user, since it didn’t render websites correct). This is the devious part of the “Extend” phase because it seems like it’s adding useful helpful new features, but it’s done with the intention to make the competitor look “broken”.

                                                                          As I said, GitHub has made no attempts to extend git in that way, or even hinted at attempts to do so.

                                                                          1. 1

                                                                            Adding helpful new features always has the effect of making the competitor look broken, and we have no way of evaluating intentions in either case. Extending git with pull requests makes repo.or.cz look defective because you can’t send pull requests with hub to a repo hosted there. It’s not different.

                                                                            1. 1

                                                                              It’s just some UI to improve the process, not a incompatibility. To me it sounds like you’re basically saying “you can’t improve your product to make it easier to use, because that will make competitors seem bad”, which I find a rather curious line of thinking.

                                                                              1. 1

                                                                                I’m not saying anything about what a company can and can’t do. Hub is not compatible with standard git hosting, so that seems like an incompatibility to me.

                                                                                You seem to have decided that EEE is inherently bad and malicious, yet it was a phrase originally used proudly by Microsoft employees. They were proud because they viewed their actions exactly the way you view the current GitHub developments. If you have no problem with proprietary git extensions, what’s wrong with upgrading a browser with proprietary extensions to enable video playback in a web page?

                                                                                1. 1

                                                                                  Yeah, a solution that works for both would be best. I’m not entirely sure of SourceHut will be that – at least from the perspective of a “web hipster” like me – but I’m keeping an eye on it. You can already do that with GitHub to some degree as well btw; for example Vim sends all issues to the mailing list, and you can (and many people do) reply from there. You can probably do something similar with PRs if you want.

                                                                                  You seem to have decided that EEE is inherently bad and malicious, yet it was a phrase originally used proudly by Microsoft employees. They were proud because they viewed their actions exactly the way you view the current GitHub developments. If you have no problem with proprietary git extensions, what’s wrong with upgrading a browser with proprietary extensions to enable video playback in a web page?

                                                                                  Like I said, I don’t think it’s the same since the git protocol isn’t modified. It’s more similar to the video popup thingy Firefox added a while ago: it didn’t modify anything about the underlying protocols and standards, but it did modify the UI based on those standards.

                                                                                  I can see where you’re coming from since you’re “forced to use GitHub”, but isn’t that the case for any issue tracker I add? If I self-host some Ruby on Rails issue tracker, and maybe a code review system, then you’re “forced” to use that too, right? I’m not sure how different that would be to GitHub?

                                                                                  At the end of the day, I think by far the most important issue is that git remains the open and free protocol and tool that it is today; issue tracker, code review, and whatnot are all very convenient and nice, but they’re really just auxiliary features of relative low importance to the actual code. By far the most important thing is that everyone is able to clone, share, and modify the software freely, and GitHub doesn’t stand in the way of that at all as far as I can see.

                                                                                  1. 1

                                                                                    I’m still not clear what problem you have with using otherwise-ignored HTML to embed useful features in a web page. Microsoft didn’t modify HTTP.

                                                                                    1. 1

                                                                                      A webpage is inaccessible if I view it in a browser which doesn’t implement the feature (how inaccessible depends on the details), whereas git is still the same git with GitHub.

                                                                                      1. 1

                                                                                        That is true of any advance in web standards. Web pages which use those standards are inaccessible from browsers which don’t implement those features.

                                                                        2. 1

                                                                          That’s not “Embrace, extend, extinguish”, that’s just building a successful product that people find pleasant to use. There is no “Microsoft git” and you can download all your data from GitHub. If you want to make the argument that there should be more competition in the market, then okay, fair enough. But again, very different from EEE.

                                                                          There is a massive difference because EEE is all about forcing people in to using a product and is malicious, whereas building a very popular product isn’t.

                                                                          If we ignore the pricing, it’s not “extinguish”, but it’s pretty clearly “embrace” and at least a little bit of “extend”.

                                                                          There is nothing forcing you to use GitHub. If you want to use any competitor, then you have 100% freedom in doing so.

                                                                          Yes, currently that is true. But if Microsoft is pricing GH below cost, it will make it hard for those commercial competitors to make enough money to continue existing.

                                                                          GitHub is also quite far removed from being a monopoly. If anything, then lowering their prices is proof of that; monopolists don’t lower prices.

                                                                          Pricing yourself lower than your costs is exactly how you use money to build a monopoly though.

                                                                          All the being said, I don’t think anyone is worried about them “extinguishing” git, because you can’t extinguish open source software. But, it definitely doesn’t look good for GH’s commercial competitors.

                                                                      4. 2

                                                                        Applied to a service, what they’d do is something to get people to put their critical assets in it, build their business processes on using it, eliminate the better competition somehow if possible, and lock-in results. Once locked-in, they start jacking up prices, reducing quality, selling them out to advertisers, etc.

                                                                        Microsoft has a long history of that for its own products and its acquisitions. I decided to recommend nobody depend on Github the second that… they were a SaaS startup. They usually become evil after acquisition or I.P.O.. If not a startup, the second Microsoft bought them.

                                                                  1. 2

                                                                    I need to run another transmission line so I can run two amateur radios at once(one VHF/UHF for local traffic, and one HF for regional or global traffic). With everyone hanging out at home the bands should be busy!

                                                                    Also I just learned that Web USB is a thing https://developer.mozilla.org/en-US/docs/Web/API/USB and I want to dig into what’s possible with that.

                                                                    1. 37

                                                                      At my former employer, for a time I was in charge of upgrading our self-managed Kubernetes cluster in-place to new versions and found this to eventually be an insurmountable task for a single person to handle without causing significant downtime.

                                                                      We can argue about whether upgrading in-place was a good idea or not (spoiler: it’s not), but it’s what we did at the time for financial reasons (read: we were cheap) and because the nodes we ran on (r4.2xl if I remember correctly) would often not exist in a quantity significant enough to be able to stand up a whole new cluster and migrate over to it.

                                                                      My memory of steps to maybe successfully upgrade your cluster in-place, all sussed out by repeated dramatic failure:

                                                                      1. Never upgrade more than a single point release at a time; otherwise there are too many moving pieces to handle
                                                                      2. Read change log comprehensively, and have someone else read it as well to make sure you didn’t miss anything important. Also read the issue tracker, and do some searching to see if anyone has had significant problems.
                                                                      3. Determine how much, if any, of the change log applies to your cluster
                                                                      4. If there are breaking changes, have a plan for how to handle the transition
                                                                      5. Replace a single master node and let it “bake” as part of the cluster for a sufficient amount of time not less than a single day. This gave time to watch the logs and determine if there was an undocumented bug in the release that would break the cluster.
                                                                      6. Upgrade the rest of the master nodes and monitor, similar to above
                                                                      7. Make sure the above process(es) didn’t cause etcd to break
                                                                      8. Add a single new node to the cluster, monitoring to make sure it takes load correctly and doesn’t encounter an undocumented breaking change or bug. Bake for some day(s).
                                                                      9. Drain and replace remaining nodes, one a time, over a period of days, allowing the cluster to handle the changes in load over this time. Hope that all the services you have running (DNS, deployments, etc.) can gracefully handle these node changes. Also hope that you don’t end up in a situation where 9/10 of the nodes’ services are broken, but the remaining 1 original service is silently picking up the slack and hence nothing will fail until the last node gets replaced, at which point everything will fail at once catastrophically.
                                                                      10. Watch all your monitoring like a hawk and hope that you don’t encounter any more undocumented breaking changes, deprecations, removals, and/or service disruptions, and/or intermittent failures caused by the interaction of the enormous number of moving parts in any cluster.

                                                                      There were times that a single point release upgrade would take weeks, if not months, interspersed by us finding Kubernetes bugs that maybe one other person on the internet had encountered and that had no documented solution.

                                                                      After being chastised for “breaking production” so many times despite meticulous effort, I decided that being the “Kubernetes upgrader” wasn’t worth the trouble. After I left, is seems that nobody else was successfully able to upgrade either, and they gave up doing so entirely.

                                                                      This was in the 1.2-1.9 days, for reference, so though I’d be very surprised things may be much better now.

                                                                      1. 33

                                                                        tldr; If you can’t afford 6+ full-time people to babysit k8s, you shouldn’t be using it.

                                                                        1. 13

                                                                          Or, at least, not running it on-prem.

                                                                          1. 6

                                                                            True, if you out source the management of k8s, you can avoid the full-time team of babysitters, but that’s true of anything. But then you have the outsourcing headache(s) not including the cost(like you still need someone responsible for the contract, and for interacting with the outsourced team).

                                                                            Outsourcing just gives you different, and if you selected wisely, less, problems.

                                                                            1. 5

                                                                              True dat. But every solution to a given problem has trade-offs. Not using Kubernetes in favour of a different orchestration system will also have different problems. Not using orchestration for your containers at all will give you different problems (unless you’re still too small to need orchestration, in which case yes you should not be using k8s). Not using containers at all will give you different problems. ad infinitum :)

                                                                              1. 6

                                                                                Most companies are too small to really need orchestration.

                                                                                1. 2

                                                                                  Totally!

                                                                          2. 2

                                                                            I keep having flashbacks to when virtualization was new and everyone was freaking out over xen vs. kvm vs. VMWare and how to run their own hypervisors. Now we just push the Amazon or Google button and let them deal with it. I’ll bet it 5 years we’ll laugh about trying to run our own k8s clusters in the same way.

                                                                            1. 8

                                                                              Yeah, this is the kind of non value added activity that just beg to be outsourced to specialists.

                                                                              I have a friend who work in a bakery. I learned the other day that they outsourced a crucial activity to a contractor: handling their cleaning cloths. Everyday, a guy come to pick up a couple garbage bag full of dirty cleaning cloth, then dump the same number of bag full of cleans one. This is crucial: one day the guy was late, and the bakery staff had trouble keeping the bakery clean: the owner lived upstairs and used his own washing machine as a backup, but it could not handle the load.

                                                                              But the thing is: while the bakery need this service, it does not need it to differentiate itself. As long as the cloth are there, it can keep on running. If the guy stop cleaning cloth, he can be trivially replaced with another provider, with minimal impact on the bakery. After all, people don’t buy bread because of how the dirty cloth are handled. They buy bread because the bread is good. The bakery should never outsource his bread making. But the cleaning of dirty cloth? Yes, absolutely.

                                                                              To get back to Kubernetes, and virtualization : what does anyone hope to gain by doing it themselves? Maybe regulation need it. Maybe their is some special need. I am not saying it is never useful. But for many people, the answer is often: not much. Most customers will not care. They are here for their tasty bread, a.k.a. getting their problem solved.

                                                                              I would be tempted to go as far as saying that maybe you should outsource one level higher, and not even worry about Kubernetes at all: services like Heroku or Amazon Beanstalk handle the scaling and a lot of other concerns for you with a much simpler model. But at this point, you are tying yourself to a provider, and that come with its own set of problems… I guess it depends.

                                                                              1. 2

                                                                                This is a really great analogy, thank you!

                                                                                1. 2

                                                                                  It really depends on what the business is about: tangible objects or information. The baker clothes, given away to a 3rd party, do not include all personal information of those buying bread. Also, business critical information such as who bought bread, what type and when is not included in the clothes. This would be bad in general, and potentially a disaster if the laundry company were also in the bread business.

                                                                                  1. -7

                                                                                    gosh. so much words to say “outsource, but not your core competency”

                                                                                    1. 1

                                                                                      Nope. :) Despite my verbosity we haven’t managed to communicate. The article says: do not use things you don’t need (k8s). If you don’t need it, there’s no outsourcing to do. Outsourcing has strategical disadvantages when it comes to your users data, entirely unrelated to whether running an infra is your core business or not. I would now add: avoid metaphors comparing tech and the tangible world because you end up trivializing the discussion and missing the point.

                                                                              2. 3

                                                                                As a counterpoint to the DIY k8s pain: We’ve been using GKE with auto-upgrading nodes for a while now without seeing issues. Admittedly, we aren’t k8s “power users”, mainly just running a bunch of compute-with-ingress services. The main disruption is when API versions get deprecated and we have to upgrade our app configs.

                                                                                1. 2

                                                                                  I ahd the same problems with OpenStack :P If it works, it’s kinda nice. If your actual job is not “keeping the infra for your infra running”, don’t do it.

                                                                                1. 2

                                                                                  The point about writing programs about things you know is very important. The world doesn’t need my hacky web server or framework, but I know them well and can focus on learning the language and tools I’m using to build them. Once I’m more comfortable with the tools I can produce something more useful to other people.

                                                                                  1. 1

                                                                                    I think it’s better to do things that were’s done yet, at least not in the language you are using. It’s not like there’s nothing new to do in web servers or frameworks, but there are areas where no libraries exist yet, like working with less common file formats. It may also be fine to reinvent some things if it makes doing just that thing simpler.

                                                                                    1. 1

                                                                                      You don’t have to write things that already exist. If you understand a subject well then implementing it with new tools means you can focus on learning the tools. If you don’t understand the subject or the tools you will spend a lot of time bogged down trying to figure out if the problems you have are with the tools or your understanding/implementation of the subject.

                                                                                  1. 8

                                                                                    Working out whether or not to quit my job and start hacking on small software businesses.

                                                                                    pros:

                                                                                    • i have enough savings to not have any income for at least six months
                                                                                    • i can fall back to part time remote contracting
                                                                                    • i can finally spend time with my partner who works nights
                                                                                    • constantly stressed and anxious in my current job

                                                                                    cons:

                                                                                    • leaving behind 3/4ths of a potentially very lucrative options package
                                                                                    • it might take me a very long time before i equalise income with where i am now
                                                                                    • there is a lot of opportunity for growth where i am now
                                                                                    • it’s objectively the best job i’ve had
                                                                                    • i’m wondering whether this is just due to SAD and i might regret this in a few months when i’m feeling better

                                                                                    I’ve been wanting to do this for so long, but it’s a big leap to make, especially without having established a viable business on the side before making the leap. I’m also seriously concerned about regretting this and being bitter down the line.

                                                                                    1. 8

                                                                                      Maybe ask if working part-time in current job is an option, and try to hack something without quitting.

                                                                                      1. 5

                                                                                        Before you quit your job, I recommend checking out Growing Gills, by Jessica Abel. It might give you a tool set to start the side business before you quit your day job.

                                                                                        Also, is the anxiety internal or external? Is it related to deadlines/your boss etc? Or is it hard to pin down, or internal? If it’s internal, it might be worth looking into counseling, since going solo won’t fix that.

                                                                                        1. 2

                                                                                          Can I have your old job? Sounds great :) I really think you should stay, for what it’s worth.

                                                                                          1. 2

                                                                                            I suggest don’t quit. Work on modifying the current work conditions.

                                                                                            1. 2

                                                                                              Ouch. FWIW I’ve told my boss at the company that there’s a good chance of mms leaving (back to freelancing) due to some potential family developments. And a day doesn’t go by without questioning of I should do it or not.

                                                                                              But I’ve been here before: did I leave a really great job to something I’m not certain is good for me. And i know it’ll end up well no matter what. We’re lucky to be in well paid line of work and can risk things - even with less then 6 months worth of stash and with kids.

                                                                                              What I’m trying to say is that you shouldn’t worry, whichever you choose it’ll most likely turn out just fine.

                                                                                              1. 2

                                                                                                6 months seems like a very short runway, I’ll have to make the go/no go decision for putting your project aside with enough time to find and start a job, then make it to the first payday. If you plan on at least 2 months for that process, and another 2 months buffer in case something goes wrong and you have to start over, then you have two months to make that business bring in enough income to sustain yourself.

                                                                                                I’d recommend a) reading around the FIRE community for a little while to get a sense for sustaining yourself on investments and safe withdraw rates. Then b) reading about how long it usually takes for a small software business to start generating enough income to cover your expenses. From there you need to get a larger than b with enough of a buffer in case something goes wrong, say like the stock markets dropping 5% in two days.

                                                                                                edit: also really dig into what’s wrong with your current job, and talk to your boss about fixing it. They’d probably rather smooth things out than have to replace you.

                                                                                              1. 7

                                                                                                Features don’t work, in the sense that they can be easily gamed. A brittle and perfunctory implementation, done quickly, is going to score more intramural brownie points over a robust and complete one. If the question is “does product A have feature X?” then the answer is yes either way. This also makes features a spurious basis for comparison in competing products because you need to seriously examine them to determine the extent to which they are any good.

                                                                                                I know this is not the main things intended to be drawn from the article, but as someone who hasn’t worked in any “methodology driven environment” for a long while, this still rings pretty true to me.

                                                                                                It’s an issue that extents beyond agile to most methods of development, most of them are feature based, it’s come to be the universal currency of software development.

                                                                                                But I don’t think this can be easily addressed, not until the market comes to term with the fact that more features usually means worst core functionality. But sadly enough I think this extends to a broader theme of programming illiteracy.

                                                                                                If you want users to address their requirements in terms of behavior the users are now doing testing a defining exact specifications, but in my experience that’s more than half the work with a lot of projects in the real world, rather than in the abstract world where there’s this mythical “user that knows exactly what they wants” creature.

                                                                                                1. 2

                                                                                                  This is made worse because often the person/team selecting the software to purchase is only a small portion of, if even related to, the actual end users of the software.

                                                                                                1. 4

                                                                                                  This is a product pre-release signup page. The orange site is often a better place for that than here.

                                                                                                  (Please let’s not make Lobsters another downstream marketing channel.)

                                                                                                  1. 2

                                                                                                    The twitter discussion about how they plan to fix some of the problems with the big centralized social networks is interesting. Would it have be better to link to the thread instead of the site itself?

                                                                                                    1. 7

                                                                                                      At the risk of sounding negative–and this is just my own opinion–the twitter thread I saw was mostly fawning adoration before I really saw any of that other stuff. A later writeup by somebody not trying to drive user growth for their investor-backed company might be both clearer and more conducive to discussion.

                                                                                                      My big concern is that we not become a launch site for growth hackers. This is a real concern, and we periodically have to purge people abusing us for eyeballs.

                                                                                                  1. 9

                                                                                                    The correct process: create a merge request and put the original author as a reviewer.

                                                                                                    Anyway the change looks much more like a process smell then a code smell.

                                                                                                    1. 9

                                                                                                      This should have been the moral of the story, the author rewrote someone’s code and merged it to master in the middle of the night. It’s a short sighted and mean thing to do, and probably the reason the author was told to revert their work. This isn’t a story about clean code, it’s a story about working with teammates.

                                                                                                      1. 2

                                                                                                        Correct-er process: privately speak to the original author and mention that you would like to rewrite and give them an overview of how & why. Sometimes they may be able to talk you out of it!

                                                                                                      1. 6

                                                                                                        This is a problem when you are on site as well. Remote work may exacerbates it, but it’s still something you need to learn if you are in the same room as your team.

                                                                                                        edit: almost every problem I see attributed to remote work is a problem that also exists locally and is more noticeable or given a name when the team is remote.

                                                                                                        1. 4

                                                                                                          This is true, however; I think these kind of posts need to come with a warning that you still need to invest in professional development. Some workplaces are structured such that you can spend a little time every day learning skills, techniques, or information that would be equally applicable to another job. Some workplaces don’t give time for this, especially if you are working at a large company with a proprietary ecosystem.

                                                                                                          At the end of the day individual developers are responsible for their own careers. I’ve meet plenty of ex-software engineers who coasted for 5-10 years only to be laid-off and realize they didn’t have marketable skills.

                                                                                                          1. 25

                                                                                                            This is why I’ve given up on Haskell a few times, a few hundred pages into a book like Haskell Programming from First Principals and I still can’t really understand open source projects or blog posts. So I (and I bet plenty of other devs) said “ehh, guess I’ll try Rust”.

                                                                                                            1. 13

                                                                                                              The most common kind of blog post about Haskell (and the most common kind of Haskell blogger) are the ones who want to push the type system to absurd extremes in the pursuit of mathematical masturbation. Not being able to follow all of those means nothing.

                                                                                                              Here’s a small calculator project I wrote in Haskell. Aside from parser combinators, there’s nothing fancy in there that shouldn’t be covered in a Haskell introduction.

                                                                                                              https://github.com/ninedotnine/happy-space

                                                                                                              1. 6

                                                                                                                The world would be better if people writing those posts modelled them upon notable papers like https://homepages.inf.ed.ac.uk/wadler/papers/marktoberdorf/baastad.pdf and http://gallium.inria.fr/~huet/PUBLIC/zip.pdf that always start with motivating examples and describe the solution clearly.

                                                                                                                1. 3

                                                                                                                  The most common kind of blog post about Haskell (and the most common kind of Haskell blogger) are the ones who want to push the type system to absurd extremes in the pursuit of mathematical masturbation.

                                                                                                                  This is what the original link is getting at, but my personal feeling is that there is a much deeper cultural issue at the heart of this. My experience is that Haskell specifically attracts people who have an interest in mathematics, or get enjoyment from mathematics.

                                                                                                                  When it comes to programming there are many people like me, who some might say are at the software engineering end of the spectrum (versus the computer science end.) I appreciate the importance of mathematics and the enjoyment others can get from it, but Haskell is very much more compatible with these people than me. This isn’t a bad thing, but it means that there is a low likelihood that community and language will have broad appeal. Your contribution is a good example of what the community could aim for, but you are only one contributor.

                                                                                                                  Not being able to follow all of those means nothing.

                                                                                                                  This is all well and good, except that it means people will decide to do other things with their time which may be limited. Returning to where people are on the love for mathematics, or computer science to software engineering spectrums, they may find that Rust is a more productive experience.

                                                                                                                  1. 2

                                                                                                                    Haskell specifically attracts people who have an interest in mathematics, or get enjoyment from mathematics.

                                                                                                                    I think this is almost certainly true.

                                                                                                                    …which raises a question about both articles: what is the point of telling Haskell aficionados to write “simple Haskell”? Why would you advise somebody to “exit their ivory tower” if the “ivory tower” is exactly the reason to use Haskell in the first place?

                                                                                                                    1. 1

                                                                                                                      I think you highlighted that in your post. You talk about absurd extremes and provide a less fancy example. A good contingent of the folks coming to the community with the appropriate background are still probably not interested in the fancy stuff initially. I think the advice is reasonable because it’s really talking about creating material for others as opposed to the demonstrating the upper bounds of the language. Both have a place, but there probably isn’t a lot of overlap.

                                                                                                                  2. 2

                                                                                                                    Here’s a small calculator project I wrote in Haskell.

                                                                                                                    BTW: why is the C code (shunting_yard.c) needed? How would it look in pure Haskell? Or does that repository contain equivalent implementations in both C and Haskell?

                                                                                                                    1. 1

                                                                                                                      That’s a relic from a first implementation. I ended up not going with it and rewriting everything in Haskell. Apparently I forgot to delete it, thanks.

                                                                                                                1. 2
                                                                                                                  • move my rust knowledge from “toy” to “production”
                                                                                                                  • I need to find a way to build UIs that doesn’t infuriate me. HTML/CSS/Javascript feels like pushing a shopping cart with 4 broken, squeaky wheels.
                                                                                                                  1. 2

                                                                                                                    I need to find a way to build UIs that doesn’t infuriate me. HTML/CSS/Javascript feels like pushing a shopping cart with 4 broken, squeaky wheels.

                                                                                                                    Have you found something already? :)

                                                                                                                    1. 1

                                                                                                                      Not yet :-) I played with Elm a few years ago and liked it, but haven’t looked recently.

                                                                                                                  1. 15

                                                                                                                    I will learn:

                                                                                                                    • More number theory and error analysis so that I can implement the Elusive Eight.
                                                                                                                    • More about BATMAN and mesh networking, so that I can keep improving my home network.
                                                                                                                    • More about implementation of databases so that I can implement a proper categorical database system.
                                                                                                                    • More about Z3’s internals. I think that I have an improvement on the state of the art for 3-SAT but I’m not sure yet because I haven’t grokked every internal representation of Z3.
                                                                                                                    • To get better at proposing simple natural arguments which infuriate bigots, so that I can more effectively create self-doubt and insecurity amongst fascists.
                                                                                                                    • One additional algorithm for a non-standard Rubik’s Cube. Probably parity fixes for 4x4/5x5 or last-layer for Megaminx.
                                                                                                                    • To keep Venus flytraps alive. Surprisingly picky plants, and I don’t have a green thumb.
                                                                                                                    1. 4
                                                                                                                      • More about implementation of databases so that I can implement a proper categorical database system.

                                                                                                                      Can you tell me more about “categorical database system”? I stumbled upon http://math.mit.edu/~dspivak/informatics/talks/CTDBIntroductoryTalk it looks interesting. Thanks!

                                                                                                                      1. 5

                                                                                                                        Imagine a database that is not built on relational logic, but on categorical logic. Imagine not just graph databases, but databases which store hypergraphs with path equivalence; that is, databases in which categories are the objects being searched and stored.

                                                                                                                        Alternatively, imagine a language for expressing categorical ideas. I keep coming back to Hagino CPL, a language in which one writes lengthy categorical expressions, and retrieves a canonicalized shortened categorical expression.

                                                                                                                      2. 2

                                                                                                                        More about BATMAN and mesh networking, so that I can keep improving my home network.

                                                                                                                        Are you using mesh network at home? Which devices are you using for it? Is there a real advantage using a mesh network at home instead that using a traditional network?

                                                                                                                        1. 2

                                                                                                                          More about Z3’s internals.

                                                                                                                          Z3?

                                                                                                                          1. 7

                                                                                                                            The Z3 Theorem Prover, an efficient SMT (Satisfiability Modulo Theories) solver very popular and widely used in Formal Methods and PLT (Programming Language Theory) research communities.

                                                                                                                            Programming Z3 is a nice tutorial with references to other great resources about Z3.

                                                                                                                            1. 11

                                                                                                                              A roadster built by BMW in the 90’s and early 2000’s. I also have a somewhat broken one that I need to learn more about it’s internals to get it roadworthy again.

                                                                                                                              1. 1

                                                                                                                                A SMT/SAT solver by Microsoft

                                                                                                                              2. 1

                                                                                                                                3-SAT is, as far as I can tell, mostly a theoretical device. SAT solver implementations deal with arbitrary clauses (but have special optimizations for 2- and sometimes 3- clauses). I’d recommend looking at minisat/glucose/cadical rather than Z3 if you’re into pure SAT because Z3 is a SMT solver and is literally orders of magnitudes more complex than a SAT solver.

                                                                                                                                1. 1

                                                                                                                                  To keep Venus flytraps alive. Surprisingly picky plants, and I don’t have a green thumb.

                                                                                                                                  I was endlessly fascinated by these as a young man and killed a great succession of them, probably due to over-feeding.

                                                                                                                                  1. 1

                                                                                                                                    To get better at proposing simple natural arguments which infuriate bigots, so that I can more effectively create self-doubt and insecurity amongst fascists.

                                                                                                                                    This is something I’ve been thinking about for a while as well. Do you think they are open to the voice of reason/argument?

                                                                                                                                  1. 3

                                                                                                                                    If you are on a team that communicates through slack, email, irc, or docs, or wiki, etc. typing faster can help you communicate faster.

                                                                                                                                      1. 1

                                                                                                                                        I do like the simulation! It’s fun to play with.

                                                                                                                                        A long time ago I asked an acquaintance who had spent decades as a flight attendant about this. Their tl;dr was that planes are constrained enough that it only takes a few passengers who are slow, drunk, limited mobility, elderly, too important to follow instructions, or otherwise confused to gum up the works to the point where any efficiency is lost.

                                                                                                                                        edit: this means we’d probably need random numbers for the distance a passenger moves and how long it takes them to stow their luggage.

                                                                                                                                        edit 2: making TICKS_REQUIRED_TO_PUT_AWAY_BAG and move_passengers random seems to have no effect, but I’m not timing this 20k times like OP did. Maybe the way to making boarding faster is to redesign the plane instead of coming up with a different boarding scheme.