Excellent success story with Go. Love this quote... "We also weren't sure if we would be able hire top talent if we chose Go, but we soon found out that we could get top talent because we chose Go."
How We Went from 30 Servers to 2: Go
241–250 of 511 posts
Re: How We Went from 30 Servers to 2: Go
#242It's not really "go" that makes the difference. it's how the runtimes and frameworks are used and/or made. frameworks on top of frameworks, all being over engineered, with poor understanding of what the system actually does, result in super slow apps on top, that you generally go to aws to scale. It's not the first time that I see people reducing a dozen servers that were "always maxed out" by a couple of servers "th…
But from what I've seen and read about Go, it does seem to have things in it that do make a difference.
For example from day one Go was designed for with concurrency in mind and that's a big plus.
To see how this can help this Rob Pike video does a good job of showing off Go's version of concurrency:
http://blog.golang.org/2013/01/concurrency-is-not-parallelis...
Now, you can implement concurrency lots of different ways using many different languages. But I've used a lot of languages and I never seen concurrency done as easily as shown in that video.
Re: How We Went from 30 Servers to 2: Go
#243Earlier quoted context omitted.
Hey OP! I appreciate your sharing. Since you came from ruby and we're on the topic of the language itself, I'd appreciate your impression of how well Go supports collections. Is there or could one write something like http://underscorejs.org/ ? Can you do this kind of thing? [1, 2, 3, 4, 5].reject {|i| i I did the go tutorial the other day and I became a little worried that one would not be able to do this kind of th…
Go's lack of type parametrisation makes many higher order functions really awkward. I'm no expert on Go, but below is my attempt at writing a generic Map function. As you can see, the code of the Map function itself isn't so bad (though there's a lot of noise in the declaration). Using that function however is really annoying, as you need to convert from the slice you have ([]string, []int, etc.) to an empty interfac…
Re: How We Went from 30 Servers to 2: Go
#244Like.
I don't need exceptions because Go function can return multiple values.
I don't need a mocking framework like Mockito because Go has interfaces.
I don't need an interactive debugger because I can debug with command line using gdb.
I don't need named arguments because I can instantiate a struct and call my function with it. (Have you seen Ruby or Javascript code? Almost every function takes 'opts' as a single argument. Go is probably going down this path too.)
Then I learned about Scala. I'm not saying that Scala is better than Go. However, it has everything that I need. :)
Re: How We Went from 30 Servers to 2: Go
#245Earlier quoted context omitted.
There's some idiots who troll the #golang-nuts freenode channel occasionally with a bunch of spam saying 'node is way better!'. I assume they're not gainfully employed, or else they would understand that the two languages/platforms have very different goals and principles.
`chord`? Yeah, I was in there and was one of the people feeding him/her, I'm ashamed to say. I'd had a few beers and wasn't on my best behavior. Chord was on about "Rails" is better, couldn't fathom a web world without MVC and failed to understand that Rails was just a framework on Ruby and that one could write similar helpers in Go. It was the perfect example of Dunning-Kruger. Painful to witness.
You guys are hanging out on IRC making fun of people that are 'stupider' than you, attack the messenger instead of the message, while you post a non-generic function to fool unsuspecting readers into thinking Go can do map in a way comparable to OP's example. Look in the mirror much?
Re: How We Went from 30 Servers to 2: Go
#246Obviously there must be other architectural changes in play here (I'm guessing RoRs thread-per-request vs some kind of event loop on Go?). Please be more specific.
Re: How We Went from 30 Servers to 2: Go
#247Re: How We Went from 30 Servers to 2: Go
#248I was originally very excited about Go when I first learned about it. But then I got tired and frustrated quickly after having to listen to the other Gophers telling me that I don't need this or that feature because there is a better way to do it in Go. Like. I don't need exceptions because Go function can return multiple values. I don't need a mocking framework like Mockito because Go has interfaces. I don't need an…
Re: How We Went from 30 Servers to 2: Go
#249Earlier quoted context omitted.
Go's lack of type parametrisation makes many higher order functions really awkward. I'm no expert on Go, but below is my attempt at writing a generic Map function. As you can see, the code of the Map function itself isn't so bad (though there's a lot of noise in the declaration). Using that function however is really annoying, as you need to convert from the slice you have ([]string, []int, etc.) to an empty interfac…
Thank you for your answer. If you're right and this is the Go way to do it (and I have no reason to doubt you), it's exactly what I was afraid of. I can see why for loops would just read better. Feels like a step in the wrong direction though -- at least for me.
Re: How We Went from 30 Servers to 2: Go
#250Earlier quoted context omitted.
Do you have a citation for Mozilla using Go? I would be a bit surprised given their(Mozilla) development of Rust.
Rust and Go are not similar or competing. They are both new, but aside from that the differences are huge. So if a project uses one, that doesn't mean the other was a possibility for that project too.