Having watched the video, some takeaways:
README.md
Makefile
main.go
support.go
foo
foo.go
bar.go
whatever-server
wharever-worker
Conveys no information in it this part.
Instead of empty interface.
instead of boolean.
No need to compact.
Keep trailing coma in last argument.
func main() {
var (
foo = flags.String("foo\n", "doch\n", "...")
bar = flat.Int("bar\n", 34, "...")
)
flag.Parse()
// ...
}
package log
Telemetry
Push model (gets expensive over time)
Graphite
Statsd
AirBrake
Pull model (chosen)
expvar
Prometheus
package testing
Unit tests
reflect.DeepEqual
Integration
Use flags for starting services
// +build integration
On Save
Go fmt
Go import (go fmt++)
On Build
Go vet
Golint
Go test
On Deploy
GoCov?
Unimportant projects
Important
VENDOR (ie. copy into your repo)
Git submodules (no!).
Git subtrees (seem OK).
Tool (godep?).
Build
For binaries (use _vendor subdir)