Four and a Half Years of Go in Production at goto Chicago 2016

GOTO_Chicago2016

Travis Reeder, CTO and co-founder of Iron.io, gave a talk at Goto Chicago 2016 discussing Iron.io’s early migration to Go, why we changed our infrastructure and the benefits it has brought to us.

One of the questions that always comes up after telling people we migrated to Go is:

“Why not Ruby?”

Continue reading “Four and a Half Years of Go in Production at goto Chicago 2016”

GopherFest Summer 2016 Recap

GopherFest

Hundreds of Go enthusiasts gathered at the prestigious Bently Reserve in downtown San Francisco for a day full of talks about data science, scaling, testing, speed, code reuse and refactoring, all in the context of Golang. Below, a write-up of a few selected talks:

Built for Snappiness by Blake Mizerany @bmizerany

When I was in the Ruby community, I built Sinatra. I’ve been using Go since 2009. Now I’m the founder at backplane.io.

Snappy == happy users

Slowness is inexcusable. So much work has gone into allowing engineers to build snappy websites. If you have a powerful language that lets you do powerful things, and things are slow, it’s even more frustrating.

Continue reading “GopherFest Summer 2016 Recap”

GoLangSF April 2016: Gohan, Essentier and rqlite

GoSF-April

Thank you to New Relic for hosting the April 2016 Golang SF meetup, sponsored by Iron.io!

Gohan with Nachi Ueno

Nachi

Gohan provides a REST-based API server, database backend, CLI, and WebUI generated from a JSON schema. Gohan can interpret definitions and act as a REST API server. As opposed to Open API, which defines the API, Gohan defines the controller and data model as well.

Gohan provides for inheritance, schemas, policies and extensions. You can use a YAML format. Permission are defined by property using a CRUD model. You can also specify the relationship in the property;

Extensions

Continue reading “GoLangSF April 2016: Gohan, Essentier and rqlite”

GoSF: The 1.6 Release Party at Docker HQ

Go 1.6 Launch Party

Lightning, thunder, and even hail swept through SF yesterday. But, that didn’t deter hundreds from hustling to Docker’s HQ for the Go 1.6 release party! GoSF received over 470 signups, a nice sum for a relatively young language.

Yesterday’s launch party boasted trivia, stuffed gopher giveaways, and a limited run T-shirt from Iron.io’s Bruce Lu. Oh, and as always there were some great talks.

Video of the talks will also be online soon! For the impatient, we’ve also included summaries and slides of last night’s talks below. Continue reading “GoSF: The 1.6 Release Party at Docker HQ”

Best practices for ElePHPants coding in Go

Coding in PHP to GO

Thanks to Guido da Rozza for the base image CC BY 2.0

I’ve often coded in PHP. Recently, I realized that when I code in Go, it’s easier to spot my PHPisms. After weeks of cleaning them up, it only takes a day to fry my brain with them again. I’m sure I’m not the only developer doing this, so I started collecting tips and tricks to help with the process. I’m sure other ElePHPants have their own tips and tricks, but here are a few of mine.

You don’t always need an additional memory allocation.

PHP’s API is formatted into functions that return values. Want to parse JSON? Just read a string into a variable and json_decode it.

I know – there are exceptions like fputcsv and fgetcsv. Still, you can anticipate that you pass a variable as input and get some kind of output. Variables, as opposed to resources, must be noted here.

Conversely, Go allows for variables as much as streams. You’re able to json.Marshal or json.(*Encoder).Encode an io.Reader.

In Go, you have to determine what to do and the ramifications of your actions. Will it be better to process loading/unloading from memory (json.Marshal) or just iteration through the io.Reader (json.Encoder)?

Continue reading “Best practices for ElePHPants coding in Go”

#EastBayGo: Pareto Efficiencies and AOP with GoWeave

east-bay-go

Special thanks to James Daisa for the base image! CC BY 2.0

The other night we headed over to the TurnItIn offices to get nerdy about Go. They hosted the first speaker-led event for the EastBayGo group. Full disclosure: I was one of the speakers!

Continue reading “#EastBayGo: Pareto Efficiencies and AOP with GoWeave”

#GoSF: Identity, Safe Secrets, and IoT Friendly Languages

GoSF at Betable

The Go gopher was designed by Renee French. CC BY 3.0 US

Last night’s meetup, which was hosted by Betable, included two presentations and two lightning talks rounding out a solid evening for the GoSF group. Topics included identity on the web, safe storage of tokens (beyond ENV vars), and even the debut of a new Go-inspired embedded systems language.

Let’s take a look at each!

Continue reading “#GoSF: Identity, Safe Secrets, and IoT Friendly Languages”

Notes from Gotham Go

Notes from Gotham Go
Thanks to Anthony Quintano for the base image! CC BY 2.0

Last week, I had the pleasure of joining gophers at Gotham Go. It was a incredibly dense single day of information. What follows is a quick impression of each talk, along with links to more detailed material. Special thanks to Peggy Li for tossing her notes on github!

UPDATE: VODs are appearing online now. You can view these talks on Youtube.

Continue reading “Notes from Gotham Go”

The Easiest Way to Develop with Go — Introducing a Docker Based Go Tool

Via Medium

While trying to make a drop dead simple example for running Go programs on IronWorker, I realized there’s just no simple way to for us to point someone at an example repo with Go code and have them up and running in a few minutes. This can be done in other languages fairly easily because they don’t have special requirements like a GOPATH, a specific directory structure, and they typically have easier dependency management.

Continue reading “The Easiest Way to Develop with Go — Introducing a Docker Based Go Tool”

An Easier Way to Create Tiny Golang Docker Images

Docker_Golang_IronAtlassian just posted a blog post about creating Static Go binaries with Docker on OSX which shows how to make a tiny little Docker image (~6MB total) with your Go program inside. When I read it, I thought “this is cool… but way too complicated”. I’ve been using Docker a lot lately and knew there had to be an easier way. Here is that way. Continue reading “An Easier Way to Create Tiny Golang Docker Images”