Live data from Hacker News

Serve2d – A protocol detecting server

github.com

31–40 of 77 posts

Re: Serve2d – A protocol detecting server

#31

Earlier quoted context omitted.

Go produces a single static binary. Consequently deploying go apps is as simple as copying a single file around, that just works.

That's a very weird way to look at it. Static linking was there before everything else. gcc/ld and, well, any other C/C++ toolchain can do that as well. There is a reason this isn't usually done. It's like you are trying to spin a bad thing into something good.

Just because you don't like the single binary that works everywhere, doesn't mean that others find it a problem. One approach doesn't fit every possible situation.

Re: Serve2d – A protocol detecting server

#32

Earlier quoted context omitted.

Go produces a single static binary. Consequently deploying go apps is as simple as copying a single file around, that just works.

Believe it or not, you can freeze binaries for python apps too, if you like: https://wiki.python.org/moin/Freeze

I've done it for Windows, Linux and Mac before. Note that these solutions freeze the Python side of things but do not freeze the platform side. For example they do not include the system libraries. Consequently running the frozen python app on a system that is a different distro, older or newer OS version, or has different system packages installed often leads to the frozen python app not being able to start.

Slide 19 of this if you are interested: http://www.bitpim.org/papers/baypiggies/siframes.html

Re: Serve2d – A protocol detecting server

#35
post #10

Earlier quoted context omitted.

The number 1 selling point of something written in Go is that it's much easier to package. The result of a compilation is a standalone binary that can be copy-pasted everywhere, as long as the architecture matches what was input at compilation time. This means: - no more having to deal with dependencies at packaging time, which makes packagers' job simpler because all they have to care is the one and only standard wa…

> no more having to deal with dependencies at runtime So, it is the same that linking the libraries statically? C and C++ has done that like since forever.

Hey, if you said "written in C", I would be similarly excited about its ease of deployment.

Re: Serve2d – A protocol detecting server

#36
post #10

Earlier quoted context omitted.

The number 1 selling point of something written in Go is that it's much easier to package. The result of a compilation is a standalone binary that can be copy-pasted everywhere, as long as the architecture matches what was input at compilation time. This means: - no more having to deal with dependencies at packaging time, which makes packagers' job simpler because all they have to care is the one and only standard wa…

> no more having to deal with dependencies at runtime So, it is the same that linking the libraries statically? C and C++ has done that like since forever.

Very true, I had python and ruby in mind. What Go makes different still is that static linking is mandatory.

Re: Serve2d – A protocol detecting server

#37
post #23

Earlier quoted context omitted.

Wouldn't a VPN or tunnelling solution be better? You pass all your traffic through a fixed port on one host, then unwrap it and use the web as though the restriction wasn't there.

Generally these well-intentioned networks block the usual VPN and tunneling solutions (think kid and a school network with a firewall that only allows FTP, HTTP, and HTTPS).

At which point you simply use these ports for your VPN.

OpenVPN can use TCP, it can use UDP, it can use whatever port you like, it can even use a fixed key to turn all traffic into random noise (obfuscating protocol structures).

Re: Serve2d – A protocol detecting server

#38

Earlier quoted context omitted.

Go produces a single static binary. Consequently deploying go apps is as simple as copying a single file around, that just works.

That's a very weird way to look at it. Static linking was there before everything else. gcc/ld and, well, any other C/C++ toolchain can do that as well. There is a reason this isn't usually done. It's like you are trying to spin a bad thing into something good.

The reason this isn't usually done is that executable size was significant relative to storage capacity up until the early 2000s or so, and people tried to economize by deduping common parts of their executables via shared libraries / DLLs. This worked well enough to catch on, but came with an extremely high cost in added complexity, and over the years a whole layer of additional infrastructure was created in order to manage it. The industry progressed, storage capacity grew dramatically, and executable sizes stopped mattering, but the use of shared libraries / DLLs continued out of inertia. As time passed, people started asking - why are we doing all this? And some of them invented a reason, which was the idea that one could swap out pieces of existing executables after installation, and thereby fix security problems in an application without needing to involve the application's developer in the process. This works about as well as you'd expect if you had spent years trying to fit all the rough edges of various third-party libraries together with varying degrees of success, but the idea caught on as a popular post-hoc justification for the huge layer of complexity we're all continuing to maintain long after its original justification became obsolete.

As is no doubt obvious from my tone, I'm not buying it and am very happy to see signs of a pendulum-swing back toward static linking and monolithic executables.

Re: Serve2d – A protocol detecting server

#39
post #23

Earlier quoted context omitted.

Generally these well-intentioned networks block the usual VPN and tunneling solutions (think kid and a school network with a firewall that only allows FTP, HTTP, and HTTPS).

At which point you simply use these ports for your VPN. OpenVPN can use TCP, it can use UDP, it can use whatever port you like, it can even use a fixed key to turn all traffic into random noise (obfuscating protocol structures).

Thus the value of having a multiplexer which allows you to run these on 80 and 443, while still running a web server.

Re: Serve2d – A protocol detecting server

#40
post #23

Earlier quoted context omitted.

Generally these well-intentioned networks block the usual VPN and tunneling solutions (think kid and a school network with a firewall that only allows FTP, HTTP, and HTTPS).

Doesn't even have to be that nefarious - I am blocked from using my OpenVPN tunnel (UDP and TCP) from at least two restaurants that I'm aware of.

[deleted]
Post reply on HN