Hacker News new | ask | show | jobs
by giancarlostoro 3937 days ago
From my own experience:

Sometimes installing an entire programming language just to use one tool is not worth the time I could possibly waste just trying to figure out how to get it working (assuming it works). Instead looking for alternatives built around tech that's already available in my system makes more sense to me, because of a higher chance of familiarity and the benefit of less time possibly wasted.

There's also the curiosity of wanting to see the project implemented in a language you're familiar with.

2 comments

This is why I advocate that software authors package their software for a variety of OS's in their native format. Yes, technically anyone can use Ruby gems or Python eggs or wheels or whatever Go calls their packages, but practically if I can apt-get/brew/emerge/rpm your package, I don't care what language it is written in. It is more effort but it makes a big difference in adoption IMO.
> whatever Go calls their packages

Just fyi, but go doesn't have packages (in this context). Just native binaries with no dependencies.

Well, it has `go get foo` which I'd consider a kind of installer/package manager. That's what I'm referring to since I've seen a good chunk of Go software distributed this way. The README usually says "install Go, then run `go get foo`".

Edit: in fact https://golang.org/doc/code.html refers to this as "Remote packages".

That's fair - i just make the distinction because there's a difference, imo.

In the case of `go get`, there is no preconfigured package, it's akin to a pull and make. Because of that, `go get` tends to be targeted at Go developers. Unlike Python/Ruby/etc, typically only Go developers have the Go compiler at hand.

I mean, i'm in a similar camp with the OP (that you replied to), i don't like installing a runtime just for a specific package. But i typically look at projects that use Ruby as targeted for Ruby developers - not me.

Go is slightly different though, because the compiler is mainly for developers. You don't have to know what Go is to run a "Go binary". So, it's worth an asterisk. That's all i meant :)

Go get is a thin wrapper around git/hg/cvs/whatever. It's supposed to be used by developers, not end users. Note that your link is titled "How to write Go code". For distribution to end users just do whatever you'd do for a program written in C/C++/Java/Erlang/whatever. No need to rub your favorite programming language into your users' face constantly.

But yeah, there's a bunch of Go programmers (presumably those coming from Python or Ruby) that don't really seem to get that you don't need to put source code and a compiler onto your production servers.

> Sometimes installing an entire programming language just to use one tool is not worth the time I could possibly waste just trying to figure out how to get it working (assuming it works).

That's why I would love to see more Docker containers and docker-compose.yaml files for tools shared on HN. A Docker container for this would be super simple to build using an official Ruby Docker container and it would save so much time for anyone who wants to try the tool.

I'm so sick of people wanting to package literally everything as a Docker container. That assumes:

- You're running Linux (or have access to a Linux box)

- The box running Linux is x86_64

- You have a modern kernel set up

- The box has a bunch of ram

- The box has a bunch of disk space (for installing Docker)

Docker forces you to have modern Intel-based hardware. Which excludes people with stuff like the Novena[1] or an old Thinkpad (because 32bits).

- [1]: https://www.crowdsupply.com/sutajio-kosagi/novena

Docker for a command line tool? I thought docker was more for your public facing service sort of thing. Does it even have a full on terminal, being a container?

I'll be honest I've not been keeping up with Docker. It shows, right?

A Docker container is like chroot, but portable. So yes. You can do

    docker exec -it $NAME /bin/bash
to get a shell in a running container, or

    docker run --rm -it $NAME /bin/bash
to get a shell in a new container that will remove itself upon exit. Neither of these require your docker host to be local.
-t when running a docker container allocates a pseudo-tty.

Docker is useful for trying out cli interpreters like this, iojs, or any thing else of the sort. I wouldn't want to use docker if I planned on keeping it around to use more than a couple of times though.