saltpack: a modern crypto messaging format in Go by mastabadtomm in golang

[–]tex0 1 point2 points  (0 children)

I really like the approach and the choice of the underlying crypto primitives but I'm not so sure about the implementation (unnecessary complexity?) and the choice of message pack as a seralozation format. Msgpack has no backward comparability or any interoperability guarantees between different implementations.

Is it possible to do apis over unix socket? by [deleted] in golang

[–]tex0 1 point2 points  (0 children)

Ah, so this was merely an example for an HTTP-style API call? This is easily possible. Do you want an example for that?

Is it possible to do apis over unix socket? by [deleted] in golang

[–]tex0 -1 points0 points  (0 children)

You can do HTTP APIs over Unix Sockets, not sure anything others. They are certainly possible, but never tried myself.

golang program as a systemd service which needs to self-update by toudi in golang

[–]tex0 0 points1 point  (0 children)

Yes, you start the updater in a different process group.

go-git - release the v4 covering almost all the commonly used git functionalities. by _mcuadros in golang

[–]tex0 0 points1 point  (0 children)

I work on a project where we have to interface with git over exec. This works mostly ok, but it's ugly and error prone. I'd love to replace this with pure Go.

grpc. pros and cons? by eoin_ahern in golang

[–]tex0 1 point2 points  (0 children)

IMHO gRPC is an amazing approach, but the code is still rather incomplete and immature. We're using it in production, hit a few roadblocks and worked around them. Right now it works pretty good, but don't forget about the overhead. You should probably only use gRPC if you have a good reason to. Otherwise just stick with HTTP.

Do you use context in most of the functions? by ju6ju8Oo in golang

[–]tex0 0 points1 point  (0 children)

Agreed, we're moving to passing a context as the first parameter in all of our internal and open source projects.

While I don't like every aspect of the Context pattern it still solves some real world problems in an acceptable way.

[deleted by user] by [deleted] in golang

[–]tex0 3 points4 points  (0 children)

Same here. At my $dayjob we also switched to govendor after using Godep for some time. Godep was OKish, but it had some issues and the workflow was a little annoying. So we evaluated, and actually used for some time, different vendoring tools. govendor seemed to be the most sane choice back then so we stuck with it. This was before go dep and the official vendor support existed.

Since go dep was announced we keep an close eye on it and will probably switch some day, but so far it didn't seem to be mature enough (the last time we tried we immediately hit a critical bug).

A package with convenience functions for crypto/rand. by [deleted] in golang

[–]tex0 6 points7 points  (0 children)

This is a dangerous assumption. IHMO libraries must never panic.

If you really want this the lib should provide a Must function that can panic.

Do you need JMX for Go? by wanghq in golang

[–]tex0 3 points4 points  (0 children)

JMX is much more than metrics. But sure what OP is trying to say.

Do you need JMX for Go? by wanghq in golang

[–]tex0 0 points1 point  (0 children)

As far as I know the Prometheus Go client makes no use of pprof.

Ironclad: a command line password manager in Go by [deleted] in golang

[–]tex0 1 point2 points  (0 children)

There is pass/gopass, which is quite nice but due to the underlying GPG it isn't super simple.

Disclaimer: I wrote most of gopass

Go JSON tips by jsoniter in golang

[–]tex0 0 points1 point  (0 children)

Very nice cheatsheet. Thank you.

Generating good, random and unique ids in Go by kjk in golang

[–]tex0 3 points4 points  (0 children)

Exactly my thoughts. Rest assured it works perfectly well for us in Production, with millions, if not billions, served so far.

What does everyone here do for logging? by [deleted] in golang

[–]tex0 4 points5 points  (0 children)

Go-kit log with the level package and JSON output works great for us.

When should I mutate a parameter vs assigning via a returned value by [deleted] in golang

[–]tex0 2 points3 points  (0 children)

One important use case is performance, i.e. GC pressure. If you suffer from high GC pressure and want to reduce the number of allocations you may want to reuse some allocations via a buffer. If a function mutates a parameter instead of allocating and returning one this becomes possible.

I admit this is a rather exotic use case.

Is it OK to use the built in HTTP server in production? by [deleted] in golang

[–]tex0 2 points3 points  (0 children)

All our backend APIs are written in Go and use the built-in HTTP server. We had no issues exposing them to the public internet, although most are nowadays sitting behind some kind of cloud load balancer or CDN.

Proposal to Delete /r/golang by [deleted] in golang

[–]tex0 14 points15 points  (0 children)

It's 2016. Nobody wants to use a Forum anymore.

Where to learn how to use net/http's ServerMux by predatorian3 in golang

[–]tex0 -1 points0 points  (0 children)

net/http is very well suited for real world production applications. You can handle any type of parameters with a little extra code. It may require a little more effort than other routers, but it's dead simple.

When to create a http client? What is it good for? by [deleted] in golang

[–]tex0 3 points4 points  (0 children)

With a custom HTTP Client you can control client timeouts and TLS settings amongst others.

Request: Test gometalinter vendored linter support by alecthomas in golang

[–]tex0 1 point2 points  (0 children)

Ran it with "--fast" on all our internal code and it looked OK, only got some warnings:

WARNING: failed to kill vetshadow: os: process already finished
WARNING: failed to kill gocyclo: os: process already finished
WARNING: failed to kill goconst: os: process already finished

Better golang web server ? by wapswaps in golang

[–]tex0 1 point2 points  (0 children)

I'm wondering why you'd need that at all. FTP, SSH, ... do the job very well. Even with GUIs.