
Ask HN: Who is using Go language? - FlyingSnake
I read a lot about Google Go on Hacker News. Is it as good as we read here? What are its benefits?<p>Is anyone using Go language in real world projects?
======
stock_toaster
Apparently youtube is: <http://code.google.com/p/vitess/>

as well as heroku: <http://blog.golang.org/2011/04/go-at-heroku.html> /
<https://github.com/ha/doozerd>

edit: more here <http://go-lang.cat-v.org/organizations-using-go>

~~~
ExpiredLink
Apparently Google isn't a heavy Go user and has no plans to become one.

~~~
ori_b
That's not a comment on the technical benefits. It's a comment on turning
around battleships.

Porting large projects is lots of work, especially when there's plenty of
stuff to do that directly impacts the customer. New projects are a different
story.

~~~
oconnor0
And it's not even necessarily a good idea to port large projects - completely
ignoring the complexity of doing a port while continuing further development
and maintenance on an existing product.

------
4ad
I am a systems engineer, I worked a lot in filesystems and filesystem-like
things. About one year ago I started using Go instead of C for new projects,
with the exception of kernel programming where the existing environments are
too different for Go to integrate well. I'm very happy, I don't want to go
back.

~~~
shortlived
What exactly are you writing and what do you see as the big improvements vs C
in your day to day work?

------
georgemcbay
I've been using Go for a few months on a few different projects. Neither are
my "day job".

The first project is a Google Music player app for Chumby devices (and other
similar ARMv5/v6 class devices... will probably port to Raspberry Pi if/when I
ever get one). The project is pure Go at this point with its own UI toolkit
based on an mmaped /dev/fb.

The second project is a web service API for mobile apps plus an associated
webserver.

I hope more companies adopt Go, making it a viable language for commercial
programming. Using it is the most fun I've had coding in years.

~~~
depsypher
I'm hoping to use Go on a Raspberry Pi (and am currently waiting patiently for
it to arrive)... but this bug worries me:
<http://code.google.com/p/go/issues/detail?id=909>

Anyone know if it's a dealbreaker? I'm planning on running a webserver on it,
so I imagine a GC bug would likely manifest after running long enough.

~~~
tuxychandru
The bug affects application dealing with large integers which can be seen as a
valid pointer within the program's address space. So, this will affect your
app if it deals with large ints.

There is also work underway to make the GC more precise which will avoid this
problem in future.

------
eikenberry
We are using it at Janrain [ <http://janrain.com> ] for a web-hook/callback
system. It will go into production over the next few weeks and is an important
feature which will need to deal with a heavy load.

It has worked out great so far. Might write about our experiences once it has
a few miles on it.

~~~
stock_toaster
please do!

------
micro_cam
We (a group at the Institute for Systems Biology) use it for some cluster
management software (<http://code.google.com/p/golem/>) that coordinates 10's
of thousands of core hours most days. The consistency and compactness and fast
compilation of the language make it a joy to work in and the concurrency
features and packages for basic http and web sockets etc make it great for
wiring up distributed infrastructure. The standard go packages for http are so
much better then the python ones it isn't even funny.

We leave our processes running for months and memory usage stays quite low and
stability good which is surprising considering the minimal time spent in
development (note: we run on 64 bit linux). (Actually the other day I realized
we had generated 24 gb log file because no one had restarted the master
process in months.)

We still use other languages for linear algebra heavy things or things that
benefit from a more complete webframework (in terms of both features and
documentation) but I am hoping the go ecosystem develops in those areas.

------
joshfraser
We are using Go at Torbit. We can write high level code and still get C-like
performance. It gives us the rapid development of an interpreted language,
with the stability and performance of a compiled language.

~~~
joshfraser
Oh, and we're hiring Go engineers too! <http://torbit.com/jobs>

~~~
BarkMore
The job title is "Golang Developer". Are you really looking for people who
identify with a programming language and not programming in general? Also,
it's called Go, not Golang.

~~~
scarecrow
Well if you're looking for someone to work on Go code you will look
specifically for Go programmers. People who can already write idiomatic Go
code.

Golang is also a better term, due to the fact that "Go" means a lot of
different things and is extraordinarily difficult to search for.

~~~
BarkMore
There's a difference between an X programmer and a developer with programming
experience in language X. The former is either incapable, unwilling or not
expected to program in anything other than X. The latter has no implied
limitations.

In the specific case where X is Go, requiring previous experience is a signal
that the company might not be hiring skilled developers. Skilled developers
can learn Go quickly because of the language's small size and consistency.

~~~
joshfraser
You're right. Most of our guys are using Go for the first time. What I should
have said is we use Go at Torbit and we're hiring. If you want to program in
Go and work on technology that touches millions of people every day, come join
us!

------
CyberFonic
I'm using Go with Google AppEngine. Seems to be about an order of magnitude
less resource intensive than the Python versions of the apps. Not exactly
surprising, considering that Google developed the language. And of course the
team has leveraged the learnings from C / Unix and Inferno.

Don't forget that the Go suite contains C compiler and assembler as well for
multiple platforms. In the Inferno version it was very easy to do cross-
platform compilations.

------
bkaradzic
At Carbon Games we're using Go for backend servers, including game sessions
server. If you go and play AirMech multiplayer game right now, you'll be
playing it on server written in Go.

[https://chrome.google.com/webstore/detail/hdahlabpinmfcemhcb...](https://chrome.google.com/webstore/detail/hdahlabpinmfcemhcbcfoijcpoalfgdn)

There is also Windows build if you prefer that over Chrome:
<https://www.carbongames.com/download.html>

------
jemeshsu
Youtube, Heroku, Canonical, BBC Worldwide, ngmoco, smugmug, Spotify... Golang
is strange, need to write some Go codes in order to appreciate the language
design decision.

------
jrussbowman
I have just started playing with it primarily to rewrite chatfor.us as I want
to see if I can build the full stack without extra dependencies. Chatfor.us
uses zeromq and tornado along with virtualenv so I am hoping with go I can
speed up development as well as take better advantage of multi core systems
with less dependence on load balancing.

I was already planning on rewriting the authentication to work with more than
just twitter so it seemed like a good time to try rewriting it in go. Also go
is supposed to have a really nice mongodb db interface so I wanted to give
that a try as well.

~~~
jrussbowman
I guess I should note this is a personal project, basically a hobby. If I had
more time I would probably be focusing on tornado more. I'm a weirdo who finds
learning new languages relaxing

------
sciurus
Anchor uses it for orchestra, which is "a suite for managing the reliable
execution of tasks over a number of hosts."

<http://www.anchor.com.au/blog/2011/08/the-automation-waltz/>
<https://github.com/anchor/Orchestra>

------
SoftwareMaven
I am seriously considering Go for a portion of a desktop application. This
portion needs to be cross-platform (Linux, OS X, and Windows), thread-aware,
and safe (I really don't want buffer overruns raining on my parade).

I would also prefer to have a single executable as opposed to a run time that
has to be installed first, especially since I want to be able to sign the
executable.

Are there any other options out there that fits the bill? I don't consider C
or C++ safe. Python, ruby and others are safe, but they aren't wrapped up as
conveniently (especially on Windows). C# would work on Windows, but is less
than ideal on OS X and Linux (but it is a contender, thanks to Mono).

~~~
nadinengland
I cant find the exact link to what I'm thinking of (I'll pop back if I do) but
there are tools that package ruby scripts up with the runtime into one
executable, especially on windows. There was one that could produce
executables for many platforms, in the meantime take a look at
[https://www.ruby-
toolbox.com/categories/packaging_to_executa...](https://www.ruby-
toolbox.com/categories/packaging_to_executables)

------
hpcorona
We're using it for all our toolchain in our small first game. We've also
created a small build system based on v8 (javascript), but integrated it using
go, it generates all your project so you just need to compile it.

We were using it also for our web page (a custom blog engine made on go), but,
we left it on alpha, and Go 1 changed a lot, gofix didn't fixed and priorities
made us choose another tool for our web page.

Still, i think go only needs a desktop GUI toolkit to become popular. It has a
lot of potential.

------
jaybill
I am. It's pretty amazing. All performance benefits of C, none of the language
drawbacks. (No offense to C.)

I have a few apps in production already and I'm only doing new stuff in Go.

~~~
batista
> _I am. It's pretty amazing. All performance benefits of C, none of the
> language drawbacks. (No offense to C.)_

Actually the "all performance benefits of C" is not quite true. Go ranks
slightly slower than Java, and 2-3X the speed of C/C++.

~~~
jaybill
I'm curious what benchmarks you're deriving that from. I've not found that to
be the case at all.

------
zemo
I'm using it on a fairly substantial web back end for a new mobile startup.
I've also used it in the past at hackathons. I'm a big fan, overall.

------
aflott
Part of my DVR system uses Go <https://github.com/aflott/syncgenie>

------
zmj
I'm using it for some personal projects. A variety of web servers, mostly.

The standard HTTP/networking libraries and goroutine model are fantastic.

------
jff
I use it to serve my personal website and blog. I've also helped develop and
maintain a cluster management tool written in Go.

------
eternalban
> Is it as good as we read here? What are its benefits?

C - pain.

[+ps]: well, the concurrency model is quite nice, too.

------
philh
> Is it as good as we read here? What are its benefits?

Just as importantly, what's bad about it? Or if you don't want to say
something like (e.g.) syntax can be "bad", what do you dislike? What changes
would you make if you were designing it?

~~~
jesstaa
The bad parts of Go are mostly the tradeoffs you have to make for a systems
programming language. They have benefits but also some unfortunate downsides.
Some are just implementation details that will get solved over time.

* integers overflow

* sharing memory between threads isn't safe

* mutable state/ shared state

* nil pointers

* block scoping can lead to multiple different variables with the same names within a function. Sometimes confusing.

* value types limit certain conversions. eg. you can't convert an []int to an []interface{} directly because an int and an interface{} are different sizes in memory.(<http://golang.org/doc/go_faq.html#convert_slice_of_interface>)

* Error handling can become quite verbose if you don't design your code to limit the places errors can come from.

* gofmt is awesome, but in some rare situations the default format makes code less clear, so you have to change your style of code to fit the formatting.

* 'go get' is awesome, but it's lack of centralisation makes it harder to find the good 3rd party libraries amongst the bad/incomplete ones.

* The current goroutine scheduler is really simple and moves goroutines between threads and CPUs. This leads to lots of cache misses, so running on many threads can become slower than running on a single thread.

~~~
peterfunny
"nil pointers" is a tradeoff for you?

Block scoping, too?

~~~
jesstaa
It's possible to never have nil pointer dereferences. But the tradeoff is
constructors and some complicated scoping.

Block scoping is confusing for many people coming from the dynamic languages
where scoping is usually function level.

------
isidl
Docs Detective is using Go for its main document comparison algorithm. Its
running on App Engine, where most of the app is in Java. Cross-language
communication is done via the shared datastore and web-hooks.

------
jtregunna
Go is one of those languages I'd like to use more, but can't find a good fit
for the kind of work I do (I mostly write iOS apps, and programming languages
myself (weird dichotomy I know)).

------
tahu
I'm successfully using it in my web usage data mining BSc thesis.

------
Kilimanjaro
I've played with it building blogs, forums, polls and everything the web can
handle, so yes, let me tell you Go can do it all. Easily.

~~~
Kilimanjaro
Like in any language, if you can access a database and print, that's all you
need to do web pages:

    
    
        func Blog(ctx app.Context) {
            data := models.GetPosts(ctx,10)
            ctx.Render(app.Templates+"blog.html",data)
        }
    

Deliciously simple.

------
jgrahamc
Me

~~~
FlyingSnake
Could you please elaborate the application? Are there any benefits over other
languages(python/clojure/ruby etc)?

~~~
ssmall
So whenever people ask me about Go, I try and get them to keep in mind this
isn't meant to be a competitor to python/ruby or any of that. Approach it from
the mindset of a C guy and it will look amazing. The biggest benefits over
python/ruby are static typing and that it is compiled. I know static typing
isn't popular around here but it has its benefits. I love go and I know web
programming is possible in it, but I'd never use it for that. To me it shines
at system level services, embedded linux, and anything with high performances
and reliability requirements without real time requirements.

We were actually having a talk today about using it here on an embedded Linux
device we produce. I'm not very confident anything will come of it but I think
it would be a good fit.

~~~
breadbox
Indeed. There's been so much focus on interpreted langauges these days,
compiled languages seem to be all but forgotten. C++ is the last new compiled
language that's caught on. (There are others, like D, which are hanging in
there, but don't seem to be gaining ground.) Go seems to have potential to
grow into a successful compiled language.

~~~
pjmlp
While I share your point of view, being a bit pedatic, I would like to note
that most JVM and .NET languages are also compiled.

~~~
breadbox
Compiling to a virtual machine is only one step up from byte-compiling, which
hardly counts. Calling a tail a leg doesn't make it one.

~~~
pjmlp
Microsoft .NET always JITs the code, there is no VM bytecodes being executed
on runtime. If you prefer you can AOT your application with NGEN.

Mono also offers the possibility to fully AOT your .NET application.

Most Java VMs can be made to fully JIT the code, bypassing any interpretation
with flags similar to -XX:CompileThreshold in Hotspots' case.

If you prefer compile Java directly to native code, you can make use of gcj,
Aonix Perc or Excelsior JET.

Language != Implementation

------
obxerve
gobl.googlecode.com - a small web CMS

------
drivebyacct2
You want to know if it's as good as Hacker News reader say it is, so you ask
Hacker News? :P

Yes, it's awesome. :)

