Go success stories from around the web
github.com
github.com
The syntax is elegant, concurrencies consume an order of magnitude less in the memory stack and it has such a good performance benchmarking.
What excites me the most though is the TensorFlow wrapper for Go that Google has recently stated it's developing. It's a huge advance towards high-scale, real-time deep learning.
BTW, in a few days I'm giving an introductory workshop to backend development using Go, I'll talk about some of the examples mentioned for sure.
However, I know that Dropbox is one of the biggest Go users and it isn't in this success stories list. Anyone knows more about it?
Maybe the go devs see them as traitors for using rust for their core components. :P They were having memory consumption issues with go, so I'm not sure that would be the best thing to add to a list of success stories.
[1]: https://blogs.dropbox.com/tech/2016/06/lossless-compression-... [2]: https://news.ycombinator.com/item?id=11283685
they still use go for a lot of things, rust for a niche, which is why i made the other comment in this thread: we need to see more rust success stories (and nim, and elixir, and julia, and R, et cetera) because we need to be able to evaluate the best tool for a particular task. at this point everybody worth their salt in programming is a polyglot. "oh yah, i write everything in Go [but my html templates are all javascript]".
anyway, here's dropbox on go:
Any rust thoughts,aside?
When I look at Go I see a platform that looks highly unproductive relative to what I'm used to (JVM/Scala/now a bit of Kotlin). So I am often confused what people are comparing Go to that it seems so great. Python/Ruby?
I know NSQ has been implemented with some good success but I see a lot more systems and web server articles about go thank any data engineer or scientific computing.
People can use whatever language works for them, and Go has it's plusses, but I would hate to see popularity get in the way of a good new language like Julia in a domain it was intended for. It would be like if R were relatively new, and everyone wanted to use Javascript instead for statistical computing. Use the right tool for the job.
Golang big data world still lacks of the core components, such as Hadoop and Spark in Java.
I see Go right now at the stage Python was in 2009 in regards to scientific computing. The libraries are coming into place and the community enthusiasm is there.
go is asymptotically approaching boring and that's one of the goals of its creators. let other new programming language stars shine: i'd like to see the niche rust settles in for example, and that needs code.
It's very easy to pick up, though, especially if you played with Turbo Pascal as a child.
Go is a general purpose language and people write many different kinds of programs in it: from command-line utilities to network tools like web servers and proxies and file servers to distributed databases to website backends.
As long as you keep calling it "niche" I guess we do need those kinds of articles.
I would love to see more of these stories but not just for Go, pretty much for anything under the sun, especially "old and boring" languages and technologies. I want to know in which situations people still choose C++ or even C for new projects today, I want to see who's using Pascal (and what for?), I want to see if anyone is dumping, say, Postgres in favor for Oracle.
At my previous job (Rackspace) I had the awesome unexpected benefit of sitting on sales calls with our enterprise team, listening to what well-known tech companies are doing "under the hood" and what problems they're facing and what solutions they're considering. On a number of occasions I've heard folks say "this is super, you should blog about it", so I say: the more the better!
It's just another opportunity to learn, not about "fluffing"
What's the niche?
that said, i use go for everything. although most of the go code I've written has been in end-user applications, tools, and services, I still open up a listening port on localhost and serve web pages for any visualizations that i need to present. get the job done in the most boring way possible. that's its niche.
"Golang is to dynamic web development what Laravel (and similar) are to Php".
My feelings are that if you're amazing at C++ or Java and you need to write a highly performant and scalable service you are probably best to stick with that. But if you're like most developers and not great at C++ or Java (and perhaps never will be) Golang is a superb middle ground that makes highly performant and scalable services more accessible to developers trying to tackle those problems for perhaps the first time.
I'd be interested to hear what the community thinks of the analogy.
I think go solves my issues with using C, but introduces two others.. No one writes stubs to interact with go, just C, so I am not writing a permanent "neutral" resource. Go has (had I should hope?) the crazy static linking thing. I reject the possibility of using a static copy of any common code. Everything that could conceivably have a security bug should be forceably swapped by a rude package manager, such that my program breaks before running indefinitely with a disclosed security bug.
However, what I dislike about all this is the generalization issues (like I saw on "Moving from Scala to Go"), which misses the point of history, and what to expect next.
First, saying "look how Go simplified our code by not allowing anything too complex" and using that example is very biased against someone that usually programs using applicative functors and don't really see anything overly complex in that code - besides some overly compacted structure which makes reading a bit hard. And that comes from someone that is not a Scala programmer, BTW.
In fact, from the "applicative functor" guys, most OO code would be deemed overly complex - and TBH with some sound arguments - but the "improved Java" camp would think that reasoning about shared mutable state is easier...
Second, the article tries to reason that it's a matter of being opinated, but it's not a matter of just being opinated: it's a matter of having that particular opinion, which means using simplified concepts without any ways to really elaborate them further, and having a more lax approach about exact semantics, types, etc. Very nice for beginners, as you don't really have much to learn, but most programmers that like it now would start hitting that expressivity ceiling soon.
Which brings me to the history part: it's funny to think that Java was born in a very similar way: no generics, tried to follow the most popular paradigm of the time as closely as possible and stay simple.. then people started using it, requesting improvements, and it became more and more complex after each release - until everyone realized that the very same thing that got everyone using it (simplicity) was not really there, as the complexity moved from the language to your code. Boilerplate over boilerplate, ever-increasing tightly-coupled frameworks, and there you go.
If I had to guess, I'd say 10 or 20 years in the future we may see the same happening with Go (if it tries to become more expressive) or it being put aside as a niche language (if it stays the same). But only time will tell it's fate.
I've wrote a number of projects in go already, there are only a few things I'd love to see:
* A good UI library, there are some projects around Electron/Webkit wrappers, but otherwise only clunky Gtk/Qt bindings
* A good docker library that lets me manage containers on my own with the capabilities I need (my project does not need a FS, it only needs network and secure containment)
* More versatile cryptography options, I find the standard library to be somewhat lacking at times.
edit appendix:
* A more efficient memory allocator, in my experience the default memory allocator sucks. Sucks badly.
My approach was to wrap in extern C and use syscall.LoadLibrary() / syscall.GetProcAddress() as described on https://github.com/golang/go/wiki/WindowsDLLs . It was quite straightforward, i don't think there's enough information for a blog post.