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?”

(more…)

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.

(more…)

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

(more…)

Microcontainers, and Logging in Docker: Iron.io CTO speaks at Docker NYC

microcontainers-banner

Travis Reeder, the co-founder and CTO of Iron.io, spoke at last night’s Docker NYC meetup about Microcontainers. In addition, Hermann Hesse of Sumo Logic spoke about Logging in Docker.

Slack for iOS Upload

Iron.io is a big proponent of microcontainers, which are minimalistic docker containers that can still process full-fledged jobs. We’ve seen microcontainers gaining traction amongst software architects and developers because their minimalistic size makes them easy to download and distribute via a docker registry. Microcontainers are easier to secure due to the small amount of code, libraries and dependencies, which reduces the attack surface and makes the OS base more secure. (more…)

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. (more…)

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)?

(more…)

#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!

(more…)

#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!

(more…)

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.

(more…)

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.

(more…)