Timehop
Published in

Timehop

Why Timehop Chose Go to Replace Our Rails App

The Golang Gopher and Timehop’s Abe hanging out during GopherGala at Timehop HQ

What prompted you to first consider Go?

Why did Go win compared to the other languages you considered?

  • Performance — Go code is compiled down to machine code. There is no VM or interpreter that adds overhead.
  • Static typing — Turns out computers are way better than humans at a whole class of errors when you know what type a variable is. Who knew?
  • Sane, readable concurrency — Goroutines and channels make concurrent code easy to read and reason about. Those constructs also make safe concurrent code without needing explicit locks. Also, no callback spaghetti.
  • Dead-simple deployment — it compiles down to a single binary with all of its dependencies. More on that later.
  • Amazing toolchain — Go also includes tons of amazing tools, not the least of which is the code formatter`go fmt`. It has eliminated code formatting debates, and with it, an untold amount of wasted developer-hours.
  • Extremely robust standard library — we’ve found that we haven’t needed a ton of third party libraries. The libraries provided by the language are extremely well thought out.

Were there any surprises — positive or negative — once you started using Go?

How did the team ramp up? What’s your advice to help teams go through this process smoothly?

What are Go’s weaknesses?

import “github.com/timehop/golog/log”

What Go libraries are critical to deployment on the modern web?

What are options for hosting? How does deployment work?

  1. Push code to Github
  2. Run tests via Travis
  3. On success, build the binaries, tar them, and upload to S3
$ GOOS=linux GOARCH=arm go build main.go

Is the language suited for building APIs?

type User struct {
FirstName string `json:"first_name"`
LastName string `json:"last_name"`
Password string `json:"-"`
}
u := User{FirstName: "Abe", LastName: "Dino", Password: "p4ssw0rd"}
jsonBytes, _ := json.Marshal(u)

How does the language deal with polymorphism and modularization?

How important is Google’s involvement in the project?

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Benny Wong

cofounder at @timehop • formerly built @GiltCity & @ExitStrategyNYC iPhone app • fan of @lorwich