# Go success stories from around the web

  * [400 Days of Go](http://www.philipotoole.com/400-days-of-go/)
  * [From Python to Go: Migrating our entire API](https://blog.repustate.com/migrating-entire-api-go-python/)
  * [Our Experience with Golang](https://www.scriptrock.com/blog/our-experience-with-golang)
  * [The Reliability of Go](http://andrewwdeane.blogspot.de/2013/05/the-reliability-of-go.html)
  * [A Go Redirection Service](http://blog.dnsimple.com/a-golang-redirection-service/)
  * [pool.ntp.org DNS server in Go](http://news.ntppool.org/2012/10/new-dns-server.html)
  * [Juju at Canonical](http://www.reddit.com/r/programming/comments/18atce/juju_canonical_109k_lines_of_go_code/)
  * [Go at bitly](http://word.bitly.com/post/29550171827/go-go-gadget)
  * [NSQ: realtime distributed message processing at scale](http://word.bitly.com/post/33232969144/nsq)
  * [CloudFlare blows hole in laws of Web physics with Go and Railgun](http://arstechnica.com/information-technology/2013/02/cloudflare-blows-hole-in-laws-of-web-physics-with-go-and-railgun/)
  * [Why I Like Go](https://gist.github.com/freeformz/4746274)
  * [Why I Program in Go](http://tech.t9i.in/2013/01/why-program-in-go/)
  * [dl.google.com now served by Go](https://groups.google.com/forum/?fromgroups=#!topic/golang-nuts/BNUNbKSypE0)
  * [Google's Go Programming Language Grows Up: Now What?](http://www.readwriteweb.com/cloud/2012/03/googles-go-programming-languag.php)
  * [Moving to Go](http://blog.toggl.com/2012/09/moving-to-go/)
  * [Rob Pike: Why Learn Go?](http://www.youtube.com/watch?v=FTl0tl9BGdc)
  * [Why I went from Python to Go (and not node.js)](http://jordanorelli.tumblr.com/post/31533769172/why-i-went-from-python-to-go-and-not-node-js)
  * [Another go at the Next Big Language](http://dave.cheney.net/2012/09/03/another-go-at-the-next-big-language)
  * [@tobi](http://twitter.com/tobi): ["I have now completed two projects in Go. I predict that it's going to be the dominant language for server work."](https://twitter.com/tobi/status/245873677483274240)
  * [@derekcollison](http://twitter.com/derekcollison): ["Prediction: Go will become the dominant language for systems work in IaaS, Orchestration, and PaaS in 24 months."](https://twitter.com/derekcollison/status/245522124666716160)
  * [Will Go be the new go-to programming language?](http://gigaom.com/cloud/will-go-be-the-new-go-to-programming-language/)
  * [Dr. Dobb's: Why Not Go?](http://www.drdobbs.com/open-source/why-not-go/240005062)
  * [Google I/O 2012: Go in production](http://www.youtube.com/watch?v=kKQLhGZVN4A)
  * [Go at Novartis](https://plus.google.com/114945221884326152379/posts/d1SVaqkRyTL)
  * [Go at the BBC](http://www.quora.com/Go-programming-language/Is-Google-Go-ready-for-production-use/answer/Kunal-Anand)
  * [Go at SoundCloud](http://backstage.soundcloud.com/2012/07/go-at-soundcloud/)
  * [Go at Moovweb](https://groups.google.com/forum/#!topic/golang-nuts/MeiTNnGhLg8/discussion)
  * [Building StatHat with Go](http://blog.golang.org/2011/12/building-stathat-with-go.html)
  * [Go at CloudFlare](http://blog.cloudflare.com/go-at-cloudflare)
  * [Why you PHP guys should learn Golang](http://www.mikespook.com/2012/08/why-you-php-guys-should-learn-golang/)
  * [I/O BootCamp 2011: Real World Go](http://www.youtube.com/watch?v=7QDVRowyUQA)
  * [Go at Heroku](http://blog.golang.org/2011/04/go-at-heroku.html)
  * [Go at Basecamp](https://signalvnoise.com/posts/3897-go-at-basecamp)

See also [[GoUsers]].
