Werckers path to Go

Pieter Joost van de Sande
Pieter Joost van de SandeSoftware Developer at Happy Pancake
Wercker’s path to Go
Where we got convinced, disappointed and excited
Micha Hernandez van Leuffen @mies
Pieter Joost van de Sande @pjvds
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.
Excitement!
Excitement!
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
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
Installing and setup
How we got convinced, excited and disappointed
Installing 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
Installing Go
Love for Go
It’s almost like a real relationship
Easy to setup
GoSublime
It all started with a Kata
This is where the fun starts
Coding Kata STRING CALCULATOR
Go Test
Build in test driven development support
Writing tests is easy
Running tests is easy
Love for Go
It’s almost like a real relationship
Easy to setup
GoSublime
Out of the box
testing support
Simple language
Go is pretty bitter, and I like it that way!
Unused variables are errors
KEYNOTE SUBJECT 21 April 2013 - CONFIDENTIAL
Unused imports are errors
KEYNOTE SUBJECT 21 April 2013 - CONFIDENTIAL
Handful of keywords
break default func interface select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var
Love for Go
It’s almost like a real relationship
Easy to setup
GoSublime
Out of the box
testing support
Bitter language
Handful of keywords
break default func interface select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var
?
Format is always the same
KEYNOTE SUBJECT 21 April 2013 - CONFIDENTIAL
before go format
Format is always the same
KEYNOTE SUBJECT 21 April 2013 - CONFIDENTIAL
after go format
Love for Go
It’s almost like a real relationship
Easy to setup
GoSublime
Out of the box
testing support
Bitter language
go
format
Even the compiler output is a boolean
Love for Go
It’s almost like a real relationship
Easy to setup
GoSublime
Out of the box
testing support
Bitter language
go
format
no warnings,
only errors
Flexible typing
KEYNOTE SUBJECT 21 April 2013 - CONFIDENTIAL
signature based polymorphism
Love for Go
It’s almost like a real relationship
Easy to setup
GoSublime
Out of the box
testing support
Bitter language
go
format
no warnings,
only errors
dynamic
behavior
Error mechanism that makes you think
KEYNOTE SUBJECT 21 April 2013 - CONFIDENTIAL
Not sure whether it’s good or bad
Love for Go
It’s almost like a real relationship
Easy to setup
GoSublime
Out of the box
testing support
Bitter language
go
format
no warnings,
only errors
dynamic
behavior
error
handling
Import paths not pull request friendly
Code that works against pull requests?
Import paths not pull request friendly
Code that works against pull requests?
Love for Go
It’s almost like a real relationship
Easy to setup
GoSublime
Out of the box
testing support
Bitter language
go
format
no warnings,
only errors
dynamic
behavior
error
handling
forking
unfriendly
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 ....
Love for Go
It’s almost like a real relationship
Easy to setup
GoSublime
Out of the box
testing support
Bitter language
go
format
no warnings,
only errors
dynamic
behavior
error
handling
forking
unfriendly
Package
management
Import paths not pull request friendly
Code that works against pull requests?
Where will our journey end?
It’s almost like a real relationship
Easy to setup
GoSublime
Out of the box
testing support
Bitter language
go
format
no warnings,
only errors
dynamic
behavior
error
handling
forking
unfriendly
Package
management
Go wercker now!
+
mail: go@wercker.com for an invite!
Thank you very much!
Pieter Joost van de Sande
@pjvds
Micha Hernandez van Leuffen
@mies
1 of 41

Recommended

C#, What Is Next? by
C#, What Is Next?C#, What Is Next?
C#, What Is Next?Pieter Joost van de Sande
579 views27 slides
Microservices by
MicroservicesMicroservices
MicroservicesPieter Joost van de Sande
1.2K views62 slides
Lessons for developers - long edition by
Lessons for developers  - long editionLessons for developers  - long edition
Lessons for developers - long editionPieter Joost van de Sande
728 views38 slides
Introduction to Spec# by
Introduction to Spec#Introduction to Spec#
Introduction to Spec#Pieter Joost van de Sande
589 views94 slides
Visual Storytelling: How Instagram becomes a new social media superstar by
Visual Storytelling: How Instagram becomes a new social media superstarVisual Storytelling: How Instagram becomes a new social media superstar
Visual Storytelling: How Instagram becomes a new social media superstarGee Ekachai
2.5K views52 slides
Instagram presentation by
Instagram presentation Instagram presentation
Instagram presentation Gee Ekachai
71.7K views30 slides

More Related Content

Similar to Werckers path to Go

JAZOON'13 - Sven Peters - How to do Kick-Ass Software Development by
JAZOON'13 - Sven Peters - How to do Kick-Ass Software DevelopmentJAZOON'13 - Sven Peters - How to do Kick-Ass Software Development
JAZOON'13 - Sven Peters - How to do Kick-Ass Software Developmentjazoon13
890 views118 slides
Workshop - Golang language by
Workshop - Golang languageWorkshop - Golang language
Workshop - Golang languageVincent Composieux
3K views11 slides
Fighting with Waste Driven Development - XP Days Ukraine 2017 by
Fighting with Waste Driven Development - XP Days Ukraine 2017Fighting with Waste Driven Development - XP Days Ukraine 2017
Fighting with Waste Driven Development - XP Days Ukraine 2017Lemi Orhan Ergin
1.2K views50 slides
Acceptance Testing for Continuous Delivery by Dave Farley at #AgileIndia2019 by
Acceptance Testing for Continuous Delivery by Dave Farley at #AgileIndia2019Acceptance Testing for Continuous Delivery by Dave Farley at #AgileIndia2019
Acceptance Testing for Continuous Delivery by Dave Farley at #AgileIndia2019Agile India
1.2K views191 slides
Responsive, adaptive and responsible - keynote at NebraskaJS by
Responsive, adaptive and responsible - keynote at NebraskaJSResponsive, adaptive and responsible - keynote at NebraskaJS
Responsive, adaptive and responsible - keynote at NebraskaJSChristian Heilmann
2.2K views52 slides
Beautiful PhoneGap Apps by
Beautiful PhoneGap AppsBeautiful PhoneGap Apps
Beautiful PhoneGap AppsTerry Ryan
7.4K views42 slides

Similar to Werckers path to Go(20)

JAZOON'13 - Sven Peters - How to do Kick-Ass Software Development by jazoon13
JAZOON'13 - Sven Peters - How to do Kick-Ass Software DevelopmentJAZOON'13 - Sven Peters - How to do Kick-Ass Software Development
JAZOON'13 - Sven Peters - How to do Kick-Ass Software Development
jazoon13890 views
Fighting with Waste Driven Development - XP Days Ukraine 2017 by Lemi Orhan Ergin
Fighting with Waste Driven Development - XP Days Ukraine 2017Fighting with Waste Driven Development - XP Days Ukraine 2017
Fighting with Waste Driven Development - XP Days Ukraine 2017
Lemi Orhan Ergin1.2K views
Acceptance Testing for Continuous Delivery by Dave Farley at #AgileIndia2019 by Agile India
Acceptance Testing for Continuous Delivery by Dave Farley at #AgileIndia2019Acceptance Testing for Continuous Delivery by Dave Farley at #AgileIndia2019
Acceptance Testing for Continuous Delivery by Dave Farley at #AgileIndia2019
Agile India1.2K views
Responsive, adaptive and responsible - keynote at NebraskaJS by Christian Heilmann
Responsive, adaptive and responsible - keynote at NebraskaJSResponsive, adaptive and responsible - keynote at NebraskaJS
Responsive, adaptive and responsible - keynote at NebraskaJS
Christian Heilmann2.2K views
Beautiful PhoneGap Apps by Terry Ryan
Beautiful PhoneGap AppsBeautiful PhoneGap Apps
Beautiful PhoneGap Apps
Terry Ryan7.4K views
Why the h# should I use Appium with React Native by Wim Selles
Why the h# should I use Appium with React NativeWhy the h# should I use Appium with React Native
Why the h# should I use Appium with React Native
Wim Selles982 views
Enterprise Workflows When You Aren't Enterprise by Chris Tankersley
Enterprise Workflows When You Aren't EnterpriseEnterprise Workflows When You Aren't Enterprise
Enterprise Workflows When You Aren't Enterprise
Chris Tankersley534 views
How To Do Kick-Ass Software Development by Sven Peters
How To Do Kick-Ass Software DevelopmentHow To Do Kick-Ass Software Development
How To Do Kick-Ass Software Development
Sven Peters68.7K views
Continuous Delivery - The Next 10 years by Dave Farley
Continuous Delivery - The Next 10 yearsContinuous Delivery - The Next 10 years
Continuous Delivery - The Next 10 years
Dave Farley574 views
Patterns of Automation: Simplify Your Test Code by TechWell
Patterns of Automation: Simplify Your Test CodePatterns of Automation: Simplify Your Test Code
Patterns of Automation: Simplify Your Test Code
TechWell859 views
How To Do Kick-Ass Software Development, by Sven Peters by ZeroTurnaround
How To Do Kick-Ass Software Development, by Sven PetersHow To Do Kick-Ass Software Development, by Sven Peters
How To Do Kick-Ass Software Development, by Sven Peters
ZeroTurnaround2.3K views
Modern Continuous Software Delivery by Martin Logan
Modern Continuous Software DeliveryModern Continuous Software Delivery
Modern Continuous Software Delivery
Martin Logan885 views
A Test Manifesto 2014.03.26 by Julio Ramirez
A Test Manifesto 2014.03.26A Test Manifesto 2014.03.26
A Test Manifesto 2014.03.26
Julio Ramirez538 views
Paving roads by gilforcada
Paving roadsPaving roads
Paving roads
gilforcada842 views
Coding Together - A Dev Workflow by Peter Chester
Coding Together - A Dev WorkflowCoding Together - A Dev Workflow
Coding Together - A Dev Workflow
Peter Chester1.2K views
Selling WordPress to Enterprises by Rahul Bansal @ WordSesh May 2019 by rtCamp
Selling WordPress to Enterprises by Rahul Bansal @ WordSesh May 2019Selling WordPress to Enterprises by Rahul Bansal @ WordSesh May 2019
Selling WordPress to Enterprises by Rahul Bansal @ WordSesh May 2019
rtCamp 545 views
UXDX London 2018 Nik Crabtree - Enhancing the Processes of Test Driven Develo... by UXDXConf
UXDX London 2018 Nik Crabtree - Enhancing the Processes of Test Driven Develo...UXDX London 2018 Nik Crabtree - Enhancing the Processes of Test Driven Develo...
UXDX London 2018 Nik Crabtree - Enhancing the Processes of Test Driven Develo...
UXDXConf35 views

More from Pieter Joost van de Sande

Actor Model by
Actor ModelActor Model
Actor ModelPieter Joost van de Sande
750 views104 slides
Microservices by
MicroservicesMicroservices
MicroservicesPieter Joost van de Sande
8.7K views65 slides
Introduction to CQRS by
Introduction to CQRSIntroduction to CQRS
Introduction to CQRSPieter Joost van de Sande
1.7K views63 slides
Introduction to (n)CQRS by
Introduction to (n)CQRSIntroduction to (n)CQRS
Introduction to (n)CQRSPieter Joost van de Sande
314 views1 slide
Lessons for developers by
Lessons for developersLessons for developers
Lessons for developersPieter Joost van de Sande
346 views27 slides
Rethink your architecture with CQRS by
Rethink your architecture with CQRSRethink your architecture with CQRS
Rethink your architecture with CQRSPieter Joost van de Sande
2.4K views57 slides

Recently uploaded

Attacking IoT Devices from a Web Perspective - Linux Day by
Attacking IoT Devices from a Web Perspective - Linux Day Attacking IoT Devices from a Web Perspective - Linux Day
Attacking IoT Devices from a Web Perspective - Linux Day Simone Onofri
15 views68 slides
Melek BEN MAHMOUD.pdf by
Melek BEN MAHMOUD.pdfMelek BEN MAHMOUD.pdf
Melek BEN MAHMOUD.pdfMelekBenMahmoud
14 views1 slide
.conf Go 2023 - How KPN drives Customer Satisfaction on IPTV by
.conf Go 2023 - How KPN drives Customer Satisfaction on IPTV.conf Go 2023 - How KPN drives Customer Satisfaction on IPTV
.conf Go 2023 - How KPN drives Customer Satisfaction on IPTVSplunk
86 views20 slides
20231123_Camunda Meetup Vienna.pdf by
20231123_Camunda Meetup Vienna.pdf20231123_Camunda Meetup Vienna.pdf
20231123_Camunda Meetup Vienna.pdfPhactum Softwareentwicklung GmbH
23 views73 slides
Architecting CX Measurement Frameworks and Ensuring CX Metrics are fit for Pu... by
Architecting CX Measurement Frameworks and Ensuring CX Metrics are fit for Pu...Architecting CX Measurement Frameworks and Ensuring CX Metrics are fit for Pu...
Architecting CX Measurement Frameworks and Ensuring CX Metrics are fit for Pu...NUS-ISS
32 views54 slides
DALI Basics Course 2023 by
DALI Basics Course  2023DALI Basics Course  2023
DALI Basics Course 2023Ivory Egg
14 views12 slides

Recently uploaded(20)

Attacking IoT Devices from a Web Perspective - Linux Day by Simone Onofri
Attacking IoT Devices from a Web Perspective - Linux Day Attacking IoT Devices from a Web Perspective - Linux Day
Attacking IoT Devices from a Web Perspective - Linux Day
Simone Onofri15 views
.conf Go 2023 - How KPN drives Customer Satisfaction on IPTV by Splunk
.conf Go 2023 - How KPN drives Customer Satisfaction on IPTV.conf Go 2023 - How KPN drives Customer Satisfaction on IPTV
.conf Go 2023 - How KPN drives Customer Satisfaction on IPTV
Splunk86 views
Architecting CX Measurement Frameworks and Ensuring CX Metrics are fit for Pu... by NUS-ISS
Architecting CX Measurement Frameworks and Ensuring CX Metrics are fit for Pu...Architecting CX Measurement Frameworks and Ensuring CX Metrics are fit for Pu...
Architecting CX Measurement Frameworks and Ensuring CX Metrics are fit for Pu...
NUS-ISS32 views
DALI Basics Course 2023 by Ivory Egg
DALI Basics Course  2023DALI Basics Course  2023
DALI Basics Course 2023
Ivory Egg14 views
How to reduce cold starts for Java Serverless applications in AWS at JCON Wor... by Vadym Kazulkin
How to reduce cold starts for Java Serverless applications in AWS at JCON Wor...How to reduce cold starts for Java Serverless applications in AWS at JCON Wor...
How to reduce cold starts for Java Serverless applications in AWS at JCON Wor...
Vadym Kazulkin70 views
AI: mind, matter, meaning, metaphors, being, becoming, life values by Twain Liu 刘秋艳
AI: mind, matter, meaning, metaphors, being, becoming, life valuesAI: mind, matter, meaning, metaphors, being, becoming, life values
AI: mind, matter, meaning, metaphors, being, becoming, life values
Igniting Next Level Productivity with AI-Infused Data Integration Workflows by Safe Software
Igniting Next Level Productivity with AI-Infused Data Integration Workflows Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Safe Software91 views
Voice Logger - Telephony Integration Solution at Aegis by Nirmal Sharma
Voice Logger - Telephony Integration Solution at AegisVoice Logger - Telephony Integration Solution at Aegis
Voice Logger - Telephony Integration Solution at Aegis
Nirmal Sharma17 views
STPI OctaNE CoE Brochure.pdf by madhurjyapb
STPI OctaNE CoE Brochure.pdfSTPI OctaNE CoE Brochure.pdf
STPI OctaNE CoE Brochure.pdf
madhurjyapb12 views
TouchLog: Finger Micro Gesture Recognition Using Photo-Reflective Sensors by sugiuralab
TouchLog: Finger Micro Gesture Recognition  Using Photo-Reflective SensorsTouchLog: Finger Micro Gesture Recognition  Using Photo-Reflective Sensors
TouchLog: Finger Micro Gesture Recognition Using Photo-Reflective Sensors
sugiuralab11 views
Transcript: The Details of Description Techniques tips and tangents on altern... by BookNet Canada
Transcript: The Details of Description Techniques tips and tangents on altern...Transcript: The Details of Description Techniques tips and tangents on altern...
Transcript: The Details of Description Techniques tips and tangents on altern...
BookNet Canada119 views
The Importance of Cybersecurity for Digital Transformation by NUS-ISS
The Importance of Cybersecurity for Digital TransformationThe Importance of Cybersecurity for Digital Transformation
The Importance of Cybersecurity for Digital Transformation
NUS-ISS25 views
.conf Go 2023 - Data analysis as a routine by Splunk
.conf Go 2023 - Data analysis as a routine.conf Go 2023 - Data analysis as a routine
.conf Go 2023 - Data analysis as a routine
Splunk90 views
Combining Orchestration and Choreography for a Clean Architecture by ThomasHeinrichs1
Combining Orchestration and Choreography for a Clean ArchitectureCombining Orchestration and Choreography for a Clean Architecture
Combining Orchestration and Choreography for a Clean Architecture
ThomasHeinrichs168 views
Empathic Computing: Delivering the Potential of the Metaverse by Mark Billinghurst
Empathic Computing: Delivering  the Potential of the MetaverseEmpathic Computing: Delivering  the Potential of the Metaverse
Empathic Computing: Delivering the Potential of the Metaverse
Mark Billinghurst449 views

Werckers path to Go

  • 1. Wercker’s path to Go Where we got convinced, disappointed and excited Micha Hernandez van Leuffen @mies Pieter Joost van de Sande @pjvds
  • 2. 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.
  • 5. 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
  • 6. 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
  • 7. Installing and setup How we got convinced, excited and disappointed
  • 9. 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
  • 11. Love for Go It’s almost like a real relationship Easy to setup GoSublime
  • 12. It all started with a Kata This is where the fun starts
  • 13. Coding Kata STRING CALCULATOR
  • 14. Go Test Build in test driven development support
  • 17. Love for Go It’s almost like a real relationship Easy to setup GoSublime Out of the box testing support
  • 18. Simple language Go is pretty bitter, and I like it that way!
  • 19. Unused variables are errors KEYNOTE SUBJECT 21 April 2013 - CONFIDENTIAL
  • 20. Unused imports are errors KEYNOTE SUBJECT 21 April 2013 - CONFIDENTIAL
  • 21. Handful of keywords break default func interface select case defer go map struct chan else goto package switch const fallthrough if range type continue for import return var
  • 22. Love for Go It’s almost like a real relationship Easy to setup GoSublime Out of the box testing support Bitter language
  • 23. Handful of keywords break default func interface select case defer go map struct chan else goto package switch const fallthrough if range type continue for import return var ?
  • 24. Format is always the same KEYNOTE SUBJECT 21 April 2013 - CONFIDENTIAL before go format
  • 25. Format is always the same KEYNOTE SUBJECT 21 April 2013 - CONFIDENTIAL after go format
  • 26. Love for Go It’s almost like a real relationship Easy to setup GoSublime Out of the box testing support Bitter language go format
  • 27. Even the compiler output is a boolean
  • 28. Love for Go It’s almost like a real relationship Easy to setup GoSublime Out of the box testing support Bitter language go format no warnings, only errors
  • 29. Flexible typing KEYNOTE SUBJECT 21 April 2013 - CONFIDENTIAL signature based polymorphism
  • 30. Love for Go It’s almost like a real relationship Easy to setup GoSublime Out of the box testing support Bitter language go format no warnings, only errors dynamic behavior
  • 31. Error mechanism that makes you think KEYNOTE SUBJECT 21 April 2013 - CONFIDENTIAL Not sure whether it’s good or bad
  • 32. Love for Go It’s almost like a real relationship Easy to setup GoSublime Out of the box testing support Bitter language go format no warnings, only errors dynamic behavior error handling
  • 33. Import paths not pull request friendly Code that works against pull requests?
  • 34. Import paths not pull request friendly Code that works against pull requests?
  • 35. Love for Go It’s almost like a real relationship Easy to setup GoSublime Out of the box testing support Bitter language go format no warnings, only errors dynamic behavior error handling forking unfriendly
  • 36. 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 ....
  • 37. Love for Go It’s almost like a real relationship Easy to setup GoSublime Out of the box testing support Bitter language go format no warnings, only errors dynamic behavior error handling forking unfriendly Package management
  • 38. Import paths not pull request friendly Code that works against pull requests?
  • 39. Where will our journey end? It’s almost like a real relationship Easy to setup GoSublime Out of the box testing support Bitter language go format no warnings, only errors dynamic behavior error handling forking unfriendly Package management
  • 40. Go wercker now! + mail: go@wercker.com for an invite!
  • 41. Thank you very much! Pieter Joost van de Sande @pjvds Micha Hernandez van Leuffen @mies