werckers path to go
DESCRIPTION
A short lightning talk I gave at the first Golang meeting in AmsterdamTRANSCRIPT
![Page 1: Werckers path to Go](https://reader033.vdocuments.us/reader033/viewer/2022060117/5584af5ad8b42a045c8b507c/html5/thumbnails/1.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060117/5584af5ad8b42a045c8b507c/html5/thumbnails/2.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060117/5584af5ad8b42a045c8b507c/html5/thumbnails/3.jpg)
Excitement!
![Page 4: Werckers path to Go](https://reader033.vdocuments.us/reader033/viewer/2022060117/5584af5ad8b42a045c8b507c/html5/thumbnails/4.jpg)
Excitement!
![Page 5: Werckers path to Go](https://reader033.vdocuments.us/reader033/viewer/2022060117/5584af5ad8b42a045c8b507c/html5/thumbnails/5.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060117/5584af5ad8b42a045c8b507c/html5/thumbnails/6.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060117/5584af5ad8b42a045c8b507c/html5/thumbnails/7.jpg)
Installing and setupHow we got convinced, excited and disappointed
![Page 8: Werckers path to Go](https://reader033.vdocuments.us/reader033/viewer/2022060117/5584af5ad8b42a045c8b507c/html5/thumbnails/8.jpg)
Installing Go
![Page 9: Werckers path to Go](https://reader033.vdocuments.us/reader033/viewer/2022060117/5584af5ad8b42a045c8b507c/html5/thumbnails/9.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060117/5584af5ad8b42a045c8b507c/html5/thumbnails/10.jpg)
Installing Go
![Page 11: Werckers path to Go](https://reader033.vdocuments.us/reader033/viewer/2022060117/5584af5ad8b42a045c8b507c/html5/thumbnails/11.jpg)
Love for GoIt’s almost like a real relationship
Easy to setup
GoSublime
![Page 12: Werckers path to Go](https://reader033.vdocuments.us/reader033/viewer/2022060117/5584af5ad8b42a045c8b507c/html5/thumbnails/12.jpg)
It all started with a KataThis is where the fun starts
![Page 13: Werckers path to Go](https://reader033.vdocuments.us/reader033/viewer/2022060117/5584af5ad8b42a045c8b507c/html5/thumbnails/13.jpg)
Coding Kata STRING CALCULATOR
![Page 14: Werckers path to Go](https://reader033.vdocuments.us/reader033/viewer/2022060117/5584af5ad8b42a045c8b507c/html5/thumbnails/14.jpg)
Go TestBuild in test driven development support
![Page 15: Werckers path to Go](https://reader033.vdocuments.us/reader033/viewer/2022060117/5584af5ad8b42a045c8b507c/html5/thumbnails/15.jpg)
Writing tests is easy
![Page 16: Werckers path to Go](https://reader033.vdocuments.us/reader033/viewer/2022060117/5584af5ad8b42a045c8b507c/html5/thumbnails/16.jpg)
Running tests is easy
![Page 17: Werckers path to Go](https://reader033.vdocuments.us/reader033/viewer/2022060117/5584af5ad8b42a045c8b507c/html5/thumbnails/17.jpg)
Love for GoIt’s almost like a real relationship
Easy to setup
GoSublimeOut of the box
testing support
![Page 18: Werckers path to Go](https://reader033.vdocuments.us/reader033/viewer/2022060117/5584af5ad8b42a045c8b507c/html5/thumbnails/18.jpg)
Simple languageGo is pretty bitter, and I like it that way!
![Page 19: Werckers path to Go](https://reader033.vdocuments.us/reader033/viewer/2022060117/5584af5ad8b42a045c8b507c/html5/thumbnails/19.jpg)
Unused variables are errors
KEYNOTE SUBJECT 21 April 2013 - CONFIDENTIAL
![Page 20: Werckers path to Go](https://reader033.vdocuments.us/reader033/viewer/2022060117/5584af5ad8b42a045c8b507c/html5/thumbnails/20.jpg)
Unused imports are errors
KEYNOTE SUBJECT 21 April 2013 - CONFIDENTIAL
![Page 21: Werckers path to Go](https://reader033.vdocuments.us/reader033/viewer/2022060117/5584af5ad8b42a045c8b507c/html5/thumbnails/21.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060117/5584af5ad8b42a045c8b507c/html5/thumbnails/22.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060117/5584af5ad8b42a045c8b507c/html5/thumbnails/23.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060117/5584af5ad8b42a045c8b507c/html5/thumbnails/24.jpg)
Format is always the same
KEYNOTE SUBJECT 21 April 2013 - CONFIDENTIAL
before go format
![Page 25: Werckers path to Go](https://reader033.vdocuments.us/reader033/viewer/2022060117/5584af5ad8b42a045c8b507c/html5/thumbnails/25.jpg)
Format is always the same
KEYNOTE SUBJECT 21 April 2013 - CONFIDENTIAL
after go format
![Page 26: Werckers path to Go](https://reader033.vdocuments.us/reader033/viewer/2022060117/5584af5ad8b42a045c8b507c/html5/thumbnails/26.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060117/5584af5ad8b42a045c8b507c/html5/thumbnails/27.jpg)
Even the compiler output is a boolean
![Page 28: Werckers path to Go](https://reader033.vdocuments.us/reader033/viewer/2022060117/5584af5ad8b42a045c8b507c/html5/thumbnails/28.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060117/5584af5ad8b42a045c8b507c/html5/thumbnails/29.jpg)
Flexible typing
KEYNOTE SUBJECT 21 April 2013 - CONFIDENTIAL
signature based polymorphism
![Page 30: Werckers path to Go](https://reader033.vdocuments.us/reader033/viewer/2022060117/5584af5ad8b42a045c8b507c/html5/thumbnails/30.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060117/5584af5ad8b42a045c8b507c/html5/thumbnails/31.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060117/5584af5ad8b42a045c8b507c/html5/thumbnails/32.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060117/5584af5ad8b42a045c8b507c/html5/thumbnails/33.jpg)
Import paths not pull request friendlyCode that works against pull requests?
![Page 34: Werckers path to Go](https://reader033.vdocuments.us/reader033/viewer/2022060117/5584af5ad8b42a045c8b507c/html5/thumbnails/34.jpg)
Import paths not pull request friendlyCode that works against pull requests?
![Page 35: Werckers path to Go](https://reader033.vdocuments.us/reader033/viewer/2022060117/5584af5ad8b42a045c8b507c/html5/thumbnails/35.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060117/5584af5ad8b42a045c8b507c/html5/thumbnails/36.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060117/5584af5ad8b42a045c8b507c/html5/thumbnails/37.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060117/5584af5ad8b42a045c8b507c/html5/thumbnails/38.jpg)
Import paths not pull request friendlyCode that works against pull requests?
![Page 39: Werckers path to Go](https://reader033.vdocuments.us/reader033/viewer/2022060117/5584af5ad8b42a045c8b507c/html5/thumbnails/39.jpg)
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 41: Werckers path to Go](https://reader033.vdocuments.us/reader033/viewer/2022060117/5584af5ad8b42a045c8b507c/html5/thumbnails/41.jpg)
Thank you very much!
Pieter Joost van de Sande@pjvds
Micha Hernandez van Leuffen@mies