Skip to content

Instantly share code, notes, and snippets.

Created October 9, 2013 18:24
Show Gist options
  • Save anonymous/6905817 to your computer and use it in GitHub Desktop.
Save anonymous/6905817 to your computer and use it in GitHub Desktop.
The case for go (with citations!)
Team behind Go:
- Ken Thompson
- Co-Creator of Unix
- Co-Creator of UTF-8
- Creator of 'B', the direct predecessor to the 'C' programming language
- Rob Pike
- Co-Creator of Unix
- Co-Creator of UTF-8
- Co-Authored Practice of Programming and The Unix Programming Environment with Brian Kernighan
- Brad Fitzgerald (more recently)
- Creator of memcached
Adoption within Google
- Public projects:
- All db traffic for YouTube flows through a proxy system written in Go.
- https://github.com/youtube/vitess
- Rewrote the pre-cdn download server from c++ to go
- http://talks.golang.org/2013/oscon-dl.slide#1
- The Thanksgiving interactive google logo on Google.com
- http://blog.golang.org/from-zero-to-go-launching-on-google
- Maintained ~40ms response times on the Google homepage, including jpeg encoding
- Used to rewrite some c++ systems
- http://matt-welsh.blogspot.com.au/2013/08/rewriting-large-production-system-in-go.html
Adoption outside of Google
- Over 10,000 open-source packages: http://godoc.org/-/index
- Over 400 contributors: http://golang.org/CONTRIBUTORS
- Heroku, one of the largest PaaS providers. http://blog.golang.org/go-at-heroku
- Cloudflare, an accelerating CDN uses Go in a variety of places. Publicly, in its local agent which is supported by dozens of hosting companies. http://blog.cloudflare.com/cloudflares-railgun-easier-than-ever
- MongoDB, our database provider uses go for its backup agent. http://blog.mongodb.org/post/51643994762/go-agent-go
- Bitly is using it to process billions(!) of messages per day. https://github.com/bitly/nsq
- Disqus is using it for notifications in their widely-deployed comment system. http://blog.disqus.com/post/51155103801/trying-out-this-go-thing
- Canonical (makers of Ubuntu) us Go in its services-coordination system (Juju). http://dave.cheney.net/wp-content/uploads/2012/08/august-go-meetup.pdf
- Thompson Reuters hires Go developers - http://www.gopheracademy.com/jobs/show/3
- Many, many more: https://code.google.com/p/go-wiki/wiki/GoUsers
Tools
- Excellent CPU and Memory profiler: http://blog.golang.org/profiling-go-programs
- Race condition detector: http://blog.golang.org/race-detector
- Good gdb support for debugging: http://golang.org/doc/gdb
- Eclipse support: https://code.google.com/p/goclipse/
Learning Go
"None of the engineers on the team have taken very long at all to come up to speed in the language; heck, even one of our interns picked it up in a couple of days." - http://bit.ly/14NxLnc
Easy to learn interactively: http://tour.golang.org/#1
Going from Ruby to golang
The creator of Sinatra (the ruby framework we use) now uses Go and has released Sinatra's `Go` successor.
- https://github.com/bmizerany/pat and other projects https://github.com/bmizerany?tab=repositories
"Python and Ruby programmers come to Go because they don’t have to surrender much expressiveness, but gain performance and get to play with concurrency."
- Rob Pike
http://bit.ly/ZGHF9d
- Currently handling > 100 million messages / day
- Experienced Java programmers spent the last few years in Ruby and decided to do a rewrite in Go after evaluating Java, Scala, Node.js and Erlang.
"Our CPU utilization was less than 5% and the entire process started up with only a few hundred KB's of memory (on startup) vs our Rails apps which were ~50MB (on startup). Compare that even to JVM memory usage! It was night and day. "
http://backstage.soundcloud.com/2012/07/go-at-soundcloud/
- Mainly a Ruby/Rails shop that started adding more services in Go.
- "An environment of shared code ownership is a perfect match for expressive, productive languages with low barriers to entry, and Go has proven to be exactly that.[...] All together, SoundCloud maintains about half a dozen services and over a dozen repositories written entirely in Go. And we’re increasingly turning to Go when spinning up new backend projects."
http://www.confreaks.com/videos/2461-railsconf2013-what-ruby-developers-can-learn-from-go
- Go Language talk at RailsConf 2013
https://twitter.com/brianhatfield/status/360866306276327424
- "My first major #golang service just finished 24 hours in production - outperforms the Ruby API it replaces by at least 10:1 (in servers)" - crashlytics.com
https://twitter.com/IvanVanderbyl/status/319002045740896256
- "Going back to Ruby after working with Go for a week makes me appreciate a fast feedback loop. Ruby Y U SO SLOW? #golang"
https://twitter.com/burkelibbey/status/312328030670450688
- "#golang is quickly becoming the de facto third language of @shopify (after ruby and JS). Pretty excited about this."
https://twitter.com/darkhelmetlive/status/142506549171073024
"It's faster to recompile and run my #golang app from scratch than it is to restart my ruby app doing the same thing."
@dgryski
Copy link

dgryski commented Oct 9, 2013

@nathany
Copy link

nathany commented Oct 10, 2013

@aaronblohowiak
Copy link

Copy link

ghost commented Oct 10, 2013

Russ cox should be mentioned as well.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment