I’m Muhammad Rauf and I’m a Software Engineer working at Uber Technologies Inc.
Go is one of the primary supported languages at Uber and most of the new code is being written in Go. Naturally, there is first class support for a lot of internal tools and protocols when using Go. As a result, for an internal project, I was tempted to write the client once in Go and then releasing a shared object - building other language bindings on top of it.
As I experimented with this idea, I encountered a bunch of problems and it suffices to say that plenty of lessons were learned.
I have captured problems I encountered as well as various ways I tried to make solve and make them work.