Go and AngularJS
Last week we launched Daily Reporting for ebook sales at my employer Smashwords. It's built on angularjs-nvd3-directives, which are obviously AngularJS directives built on top of nvd3, on top of d3. On the backend we're supplying the data via a Go server with go-json-rest, and Gorilla web toolkit.
I blogged last September about AngularJS, but I'm sad to say that my excitement about AngularJS has waned significantly since then.
I'm not saying that AngularJS is bad, persay, or that you shouldn't use it. I also think that it is likely that a lot of the complication that AngularJS had to build to make the framework run will melt away into the next version of HTML and ECMAScript. This is an ideal solution to the problem. In the meantime though, I'd advise against throwing caution to the wind when you introduce AngularJS to your projects.
On the other side of the spectrum entirely is where we'll find Go. When I first started writing Go, I really wasn't that excited about it. Isn't Python enough? Doesn't everyone love Ruby? C# is great with Mono. No exceptions? What do we really need another language for?
Go is simple.
Go source code is readable, and auditable, and it takes the whole "composition over inheritance" to its most extreme conclusion by not even allowing inheritance as you know it. Go has no operator overloading, no method overloading, no subclassing, no exceptions, and, really, no classes.
Instead it offers structs, method receivers, automatically-satisfied interfaces, embedded fields, and multiple return values. These features serve to provide a very different way of writing object-oriented programs than other popular languages these days.
Go isn't going to strike you as sexy.
The age-old debates about static versus dynamic languages aside, Go's competitors are really very different. If you don't want to write in C or C++, and want something compiled, Go is an excellent choice. And as many developers have exclaimed, Go is fast and performant.
Last week at the Linux User Group of Davis, I did an "Intro to Golang":
That's something I can definitely get behind.
Obligatory note: Does this sound like the kind of programming you want to do? Do you love ebooks? Contact me at firstlast @ gmail.com.