41
Wercker’s path to Go Where we got convinced, disappointed and excited Micha Hernandez van Leuffen @mies Pieter Joost van de Sande @pjvds

Werckers path to Go

Embed Size (px)

DESCRIPTION

A short lightning talk I gave at the first Golang meeting in Amsterdam

Citation preview

Page 1: Werckers path to Go

Wercker’s path to GoWhere we got convinced, disappointed and excited

Micha Hernandez van Leuffen @miesPieter Joost van de Sande @pjvds

Page 2: Werckers path to Go

WE’RE BUILDING AN INTEGRAL PLATFORM FOR HOW SOFTWARE GETS DELIVERED TO THE INTERNET AND THE CLOUD

“”

Pitch

Wercker is a collaborative continuous delivery platform that helps developers reduce risk and eliminate waste in their software development process by enabling them to test and deploy their code often in a hassle-free way.

Page 3: Werckers path to Go

Excitement!

Page 4: Werckers path to Go

Excitement!

Page 5: Werckers path to Go

Challenges at wercker

✓ We are building a mission critical system

✓ We have the need to scale

✓ When we fail we want to recover and continue

✓ We do dive system level deep

Page 6: Werckers path to Go

Design goals of Go

LOVE AT FIRST SIGHT!

✓ Compilations efficiency

✓ Statically typed

✓ Feels dynamically typed

✓ Compiles to machine code

✓ Single deploy unit

✓ Used by other companies in our space

Page 7: Werckers path to Go

Installing and setupHow we got convinced, excited and disappointed

Page 8: Werckers path to Go

Installing Go

Page 9: Werckers path to Go

We needed an editor

GOSUBLIME

✓ Syntax highlighting

✓ Go format on file save

✓ Sublime build system integration

✓ Compiles to machine code

✓ Quickly jump to error reported code

✓ Go to definition

Page 10: Werckers path to Go

Installing Go

Page 11: Werckers path to Go

Love for GoIt’s almost like a real relationship

Easy to setup

GoSublime

Page 12: Werckers path to Go

It all started with a KataThis is where the fun starts

Page 13: Werckers path to Go

Coding Kata STRING CALCULATOR

Page 14: Werckers path to Go

Go TestBuild in test driven development support

Page 15: Werckers path to Go

Writing tests is easy

Page 16: Werckers path to Go

Running tests is easy

Page 17: Werckers path to Go

Love for GoIt’s almost like a real relationship

Easy to setup

GoSublimeOut of the box

testing support

Page 18: Werckers path to Go

Simple languageGo is pretty bitter, and I like it that way!

Page 19: Werckers path to Go

Unused variables are errors

KEYNOTE SUBJECT 21 April 2013 - CONFIDENTIAL

Page 20: Werckers path to Go

Unused imports are errors

KEYNOTE SUBJECT 21 April 2013 - CONFIDENTIAL

Page 21: Werckers path to Go

Handful of keywords

break default func interface selectcase defer go map structchan else goto package switchconst fallthrough if range typecontinue for import return var

Page 22: Werckers path to Go

Love for GoIt’s almost like a real relationship

Easy to setup

GoSublimeOut of the box

testing support

Bitter language

Page 23: Werckers path to Go

Handful of keywords

break default func interface selectcase defer go map structchan else goto package switchconst fallthrough if range typecontinue for import return var

?

Page 24: Werckers path to Go

Format is always the same

KEYNOTE SUBJECT 21 April 2013 - CONFIDENTIAL

before go format

Page 25: Werckers path to Go

Format is always the same

KEYNOTE SUBJECT 21 April 2013 - CONFIDENTIAL

after go format

Page 26: Werckers path to Go

Love for GoIt’s almost like a real relationship

Easy to setup

GoSublimeOut of the box

testing support

Bitter language

go format

Page 27: Werckers path to Go

Even the compiler output is a boolean

Page 28: Werckers path to Go

Love for GoIt’s almost like a real relationship

Easy to setup

GoSublimeOut of the box

testing support

Bitter language

go format

no warnings, only errors

Page 29: Werckers path to Go

Flexible typing

KEYNOTE SUBJECT 21 April 2013 - CONFIDENTIAL

signature based polymorphism

Page 30: Werckers path to Go

Love for GoIt’s almost like a real relationship

Easy to setup

GoSublimeOut of the box

testing support

Bitter language

go format

no warnings, only errors

dynamic behavior

Page 31: Werckers path to Go

Error mechanism that makes you think

KEYNOTE SUBJECT 21 April 2013 - CONFIDENTIAL

Not sure whether it’s good or bad

Page 32: Werckers path to Go

Love for GoIt’s almost like a real relationship

Easy to setup

GoSublimeOut of the box

testing support

Bitter language

go format

no warnings, only errors

dynamic behavior error

handling

Page 33: Werckers path to Go

Import paths not pull request friendlyCode that works against pull requests?

Page 34: Werckers path to Go

Import paths not pull request friendlyCode that works against pull requests?

Page 35: Werckers path to Go

Love for GoIt’s almost like a real relationship

Easy to setup

GoSublimeOut of the box

testing support

Bitter language

go format

no warnings, only errors

dynamic behavior error

handling

forkingunfriendly

Page 36: Werckers path to Go

Package management

WHAT WE LOVE

✓ Simple, run go get

✓ Single way to import a package

✓ Import is done in the code file

✓ You can only import packages you use

✓ You always use HEAD

✓ Packages are still pretty young

WHAT WE ....

Page 37: Werckers path to Go

Love for GoIt’s almost like a real relationship

Easy to setup

GoSublimeOut of the box

testing support

Bitter language

go format

no warnings, only errors

dynamic behavior error

handling

forkingunfriendly

Package management

Page 38: Werckers path to Go

Import paths not pull request friendlyCode that works against pull requests?

Page 39: Werckers path to Go

Where will our journey end?It’s almost like a real relationship

Easy to setup

GoSublimeOut of the box

testing support

Bitter language

go format

no warnings, only errors

dynamic behavior error

handling

forkingunfriendly

Package management

Page 40: Werckers path to Go

Go wercker now!

+

mail: [email protected] for an invite!

Page 41: Werckers path to Go

Thank you very much!

Pieter Joost van de Sande@pjvds

Micha Hernandez van Leuffen@mies