- terminator 2 tabs (one vim)
- start terminal logger
- open slides
- silence phone
- Me
- Professional work with Go for about 8 years, 20 years in general
- Worked
- Big companies: Intel, Qualcomm, Applied Materials
- Small: EWT/FATTOC, SauceLabs, ...
- Things I wrote in Go
- HTTP Proxy
- In memory database
- go2xunit
- selenium
- Serverless (nuclio), close to 500K RPS
- Data streaming
- Cyber Security
- Contributed to many open source projects
- Including Go
- Still code every day
- Mostly Go, Python, bash, Clojure, C, ...
- Still learn every day
- logistics
- retired army major
- netflix prize (2007-2009), didn't get to production
- Cone of learning
- Ask questions
- ןלוכמ רתוי ידימלתמו יתוברמ רתוי ירבחמו יתוברמ יתדמל הברה
- create project on github
- git clone project
- cd project, git add ...
- Go over the code
- Tokenize (document)
- Must in init/var
- testing
go build
ignores files ending with_test.go
- solutions/nlp/nlp_test.go
- fail vs fatal
- table
- [] vs nil
- exercise: read cases from JSON
- go mod init github.com/353solutions/nlp
- cat quotes/grove.txt (or http://j.mp/2W1cp7U)
- go.mod
- go mod tidy
- testify (assert vs require)
- go get github.com/stretchr/testify
- modules.md, our software dependency problem
- vendor
- quick
- cat quotes/hickey.txt
- example_test.go
- show on godoc.org
- CI & skip
- Performance tuning
- cat quotes/rules-of-optimization.txt
- BenchmarkToeknizer
- go test -bench . -run '^$' .
- GOMAXPROCS
- go test -bench . -run '^$' . -cpuprofile=cpu.pprof
- nlp.test
- go tool pprof -http :8080 cpu.pprof
- change to
make([]string, 0, 20)
- cat quotes/rdh.txt
- optimize.md
- debugging
- cat quotes/debug.txt
- Feynman algorithm? (quotes/feynman.txt)
- IDE
- dlv test .
- mention gdb
- mention logs
- add stemmer
- Conway's law
- add stop words
- go generate
- build tags
- go generate
- solutions/nlp/cmd/nlpd/nlpd.go
- grpc?
- gorilla
_healthz
- handler
- flag just for --help
- joke on nukedb
- github.com/kelseyhightower/envconfig
- logging & metrics
- expvar
- start with _ import
- https://medium.com/netflix-techblog/sps-the-pulse-of-netflix-streaming-ae4db0e05f8a
- Dockerfile
- Version
CGO_ENABLED=0
- runtime.Version, runtime.GOOS ...
- https://memegenerator.net/img/instances/22605665/worked-fine-in-dev-ops-problem-now.jpg
- Publishing/workflow & code reviews
- GitHub account
- feature branches
- PR
- Fixes #...
- tag version (semver)
- go get in testing
- license (IANAL)
- solutions/nlp/doc.go
- README.md
- GOOS=windows go build
- Continuous integration
- Circle CI?
- https://circleci.com/gh/353solutions
- solutions/nlp/.circleci/, solutions/nlp/Dockerfile.test
- Jenkins
- chatops
- Deployment strategies
- green/blue
- canary
- HAProxy?