# Go success stories from around the web

  * [The Way of the Gopher - Making the Switch from Node.js to Golang](https://medium.com/@theflapjack103/the-way-of-the-gopher-6693db15ae1f)
  * [Moving a team from Scala to Go](http://jimplush.com/talk/2015/12/19/moving-a-team-from-scala-to-golang/)
  * [400 Days of Go](http://www.philipotoole.com/400-days-of-go/)
  * [From Python to Go: Migrating our entire API](https://www.repustate.com/blog/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://readwrite.com/2012/03/29/googles-go-programming-languag/)
  * [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 Cockroach Labs](https://www.cockroachlabs.com/blog/why-go-was-the-right-choice-for-cockroachdb/), [cockroachdb/cockroach](https://github.com/cockroachdb/cockroach)
  * [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)
  * [Go at Streetspotr](https://thcyron.de/2015/go-at-streetspotr.html)
  * [Confession From A Go Programer](https://zeta.si/page/Confession-From-A-Go-Programer)
  * [Why we chose Go over C for updating embedded Linux devices](https://mender.io/blog/why-did-we-choose-golang-over-c)
  * [List of Tech Migrations](http://kokizzu.blogspot.com/2016/12/list-of-tech-migrations.html)
  * [Making the move from Scala to Go, and why we’re not going back](https://movio.co/blog/migrate-Scala-to-Go/)

See also [[GoUsers]].