algonote(en)

There's More Than One Way To Do It

Go Conference 2017 Autumn Impressions & Digest #gocon

I attended Go Conference 2017 Autumn.

Special Program: Panel Discussion w/ mattn

Normal Panel Discussion. Since the runtime update is easy with Go, the risk is low. No problem on Windows, Expectations to Go2, How to hire senior gophers etc.

No bug correction due to compatibility sounds hard. I didn't know C compiler written in Go. Aside from the main story, I learned BigQuery accepts JSON import.

Keynote: Go at DigitalOcean / fatih

Case study of Go at DigitalOcean. Most infrastructure code has moved to Go. Since code sharing etc had issues, the repository moved to mono. However the other issue occurred then the structure is changing little by little every year.

I don't know why, but I misunderstood DigitalOcean was originally written in pure Python. Actually Chef(Ruby) was also used. Zero downtime is featured again. I feel the power of Go in infrastructure field.

Sponsor session:Go + microservices at Mercari / deeeet

https://talks.godoc.org/github.com/tcnksm/talks/2017/11/gocon2017/gocon2017.slide

Build Microservices with Go. Firstly API Gateway, then moved little by little. Since gRPC is cached connection, load balancing is hard. DNS resolver was added last August.

Since the talk was based on the actual failures at work, the information was helpful. I'm motivated enough to try gRPC. I learned the middleware in HTTP is the interceptor in gRPC.

Story of our own Monitoring Agent in golang / huydx

Talk about Monitoring Agent. fluentd sends log as is, MA isn't. Due to scalability, to adopt to multiple environment and easy management, in-house making was chosen. Not only making, the deploy is also difficult.

I didn't know LINE considered Rust then decided not to use it. Initial instinct was due to unique syntax. Actual reason of not adopt was the integrity of the format.

Consideration about Go logging / Takahito YAMATOYA

Comparison of Golang logging in OSS. Log package is simple. For example, no level feature. Prometheus is thin wrapper of go-kit, Hashicorp's log is with level etc

A lot of investigation. Awsome. When I create log with another language, I will probably refer to this.

How to achieve parallel compilation ig Go 1.9 / niconegoto

Talk about complier parallelization since Go 1.9. The parallel compile is by default now. It can be turned off using flag. Internal changes are mainly the addition of mutex and unglobalization of global variables.

IMHO, Go build is fast enough. Now more faster with parallelization. I hope Deep Learning library build becomes faster using Go. I note c=4 is sweet spot.

Async, Persistent, Fast, and Stable "Enough" Queue/Worker Using Go and PostgreSQL / _achiku

que-go is based on kei written in ruby. You can set different priority in the same queue. Using PostgreSQL. Advisory lock is mature.

I didn't know PostgreSQL advisory lock. Although queue was the main story, I learned a lot about DB.

Diff algorithm in Go / cubicdaiya

Explanation about diff algorithm. The order of dynamic programming isn't good. Git is based on Myer's algorithm etc.

Unfortunately, due to the lack of fundamental knowledge, I couldn't understand well from the middle. Review is needed after the slide upload. I like the talk about pure algorithm. Small funnies were also good.

Ebiten - Simple 2D Game Library in Go / hajimehoshi

https://docs.google.com/presentation/d/e/2PACX-1vSSbSxPObBZcJHjvUpAt-HEJVLaux2FQBpJbvbxInJgmEhxSn-lVxTVxUMmUNQwtJtC8w6_HkhuW2hk/pub?start=false&loop=false&delayms=3000&slide=id.p

Talk about Ebiten, 2D game library. The basic is depicting from rectangle to another rectangle. Although the domain is 2D, GPU is used for acceleration. With Cgo, compile time was slow. GopherJS is used on browser. Detecting distinct error reason on mobile is hard.

The book I bought at Gijutushoten was mainly about how to use library. This talk was about the internal of the library. I think the audio feature of the game library is sometimes weak. This library uses proper backend for each target . It looks good.

reviewdog and static analysis for Go / haya14busa

https://docs.google.com/presentation/d/1_BWQXamZvIhL3l9ziL9zb25yP9RjpgXoxkWX-48ECss/mobilepresent?slide=id.p

Talk about reviewdog. Existing solution has the limitation. For example, we cannot use the analysis tools we like. Vim's errorformat feature is ported to Go. Currently only Github is supported, but adding GitLab support is also a target.

Using existing Vim's errorfromat to avoid the reinvention of the wheel looks smart. Are most Gophers Vimmer? Emacs users were slightly away probably due to the effect of VimConf.

LT (Lightning Talks) Materials

Throughout Conference

I always lose the lotteries of Go Conference and this was the first time I attend. Although I initially thought the most of talks are about new features of Go, actual talks were mainly how to do something using Go.

The contents were wide from network, monitoring to DB and game library etc. I learned a lot and these will be definitely helpful when I consider the architecture.