# Go success stories from around the web

  * [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/)
  * [Go as an alternative to Node.js for Very Fast Servers](http://techblog.safaribooksonline.com/2013/02/22/go-as-an-alternative-to-node-js-for-very-fast-servers/)
  * [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)
  * [Go At Conformal](https://www.cyphertite.com/blog.php?/archives/7-Go-at-Conformal..html)
  * [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/)
  * [PARALLELISM FOR THE WIN!](http://areyoufuckingcoding.me/2012/08/16/parallelism-for-the-win/)
  * [Go is boring](http://aeronotix.pl/blog/go-is-boring)
  * [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)

See also [[GoUsers]].