SlideShare a Scribd company logo
1 of 46
Download to read offline
Go’s 10th Birthday
Golang Taipei #45 November 2019
Evan Lin – @Evan_Lin
This Presentation was developed by:
Who am I ?
10th birthday limited edition Gopher art!
10th birthday limited “TAIPEI” edition Gopher art!
Why I Learn Go?
SECTION ONE
Go is fast!
“gofmt/goimport” save your time for coding convention / style
“Go test” save your time for preparing and running testing
“Godoc” save your time for documentation
“Godoc” save your time for documentation
The Beginning
SECTION TWO
● Rob and Robert shared
same office.
● Actual swivel chairs
involved.
● Just like XKCD, but with
lightsabers instead of
swords.
00. YEAR 0: 2007-2009
GO’S
ORIGINS
Rob Pike is waiting 50 minutes for a C++ Program to
Compile
Rob
Pike
Robert
Griesemer
inventing a new programming language
01. BACKGROUND
THE
REASON
FOR GO.
What changed
everything for us.
Goals for Go
Go was designed by and for people who write—and read and
debug and maintain—large software systems.
Go's purpose is not research into programming
language design.
Go's purpose is to make its designers'
programming lives better.
ELIMINATE
SLOWNESS
ELIMINATE
CLUMSINESS
IMPROVE
EFFECTIVENESS
IMPROVE
SCALE
BRIAN W. KERNIGHAN
“Debugging is twice as hard as writing the code in
the first place. Therefore, if you write the code as
cleverly as possible, you are, by definition, not
smart enough to debug it.”
01. YEAR 0-
GO 1.0:
HELLO WORLD
2009 Happy Gopher Day
After 15 months, Go is open sourced on
November 10, 2009
2009/11/10 Go
open-sourced.
YEAR 1 - 2010
Spreading
the word
2010: The early years:
The days when Rob, Russ, et. al. would travel around to conferences
to talk about Go.
2010/03/18: Go Blog
2010/06/23: Go
course
2010/09/15: Go
Playground
YEAR 3- 2012
FOO
March 2012 - Go reaches 1.0
Significance and importance of a compatibility promise in modern
software development
2012/03/28: Go 1.0
YEAR 4 - 2013
Early
Adoption
Language
Go 1.1 release. Race Detector. Performance
improvements to GC. `map`. Scheduler has been
re-written.
● 6-month release cycle
● 1st Go conference held (Tokyo Japan)
- Docker release (written in Go)
2013/May Go 1.1
2013/Aug Docker
released.
YEAR 5 - 2014
Getting BIG
Language
Go 1.3 released. Stack improvements (now allocated
contiguous segments of memory), linker overhaul,
1.4 release. - Official support for Android
golang.org/x/mobile. DVCS moves from mercurial to
git. go generate introduced
April: Gophercon, held in Denver
Kuberenetes is open sourced
1st US & European conferences
● 500 contributors
Kuberrnetes open-sourced in June
2014/Jun Go 1.3
2014/Jun
Kubernetes
open-sourced.
2014/Dec Go 1.4
YEAR 6 - 2015
COMMUNITY
Go 1.5
● Go compiler rewritten in Go
○ If you want to build go after 1.5, you need to install
go 1.4.2 first.
● Garbage collector re-engineered concurrently
● Women Who Go & GoBridge born
● 1st Indian & Chinese conferences
● Experimental support for “vendoring” (using
GO15VENDOREXPERIMENT)
2015/Aug Go 1.5
YEAR 7 - 2016
HTTP2
2016/02/13 Go 1.6
2016/08/15 Go 1.7
Go 1.6
● HTTP/2 & Context introduced
● 1st Lat Am & Middle East conferences
● Top 5 most loved languages (SO)
● 1st Go user survey
● 1000 contributors
● Default “GO15VENDOREXPERIMENT” on
Go 1.7
● Context package
● Remove “GO15VENDOREXPERIMENT”
YEAR 8- 2017
1 MILLION
2017/02/16 Go 1.8
2017/08/24 Go 1.9
GO 1.8
● Plugin: Package loading at runtime.
● `go fix` support context issue
“golang.org/x/net/context” into standard library
“context”.
● GC < ms pauses
Go 1.9
● Type aliases
● #1 language developers want to use (1st time)
● 1 million (estimated) users
● 13 conferences
● 1st contributor summit
- 7.1% of developers use Go
in 2018 StackOverflow survey
- Up from 4.2% in 2017
- 76% YoY growth of Go users
- 700,000+ new users
YEAR 8-9: 2017-2018
GO’S
GROWTH
2017/02/16 Go 1.8
2017/08/24 Go 1.9
Go has ~1.6M users worldwide
YEAR 8-9: 2017-2018
GO’S
MOMENTUM
- #1 language to learn in 2018 on
HackerRank (38% of responses)
- #3 language for hiring posts on
Hacker News
- #1 Median Pay and #1 Future
Language (23% of responses) on
2017 O’Reilly Dev Salary Survey
2017/02/16 Go 1.8
2017/08/24 Go 1.9
Go is in demand
YEAR 9- 2018
Modules
2018/02/16: Go 1.10
2018/08/24: Go 1.11
Go 1.10
● Note: your need write “1.10” (not 1.10) in travis ci.
● Vgo paper, and vgo arrived.
Go 1.11
● Go modules introduced
● Port to WebAssembly
● More contributions from outside the Go team (1st time)
● 19 Go conferences
● Go new brand & logo
● Go #4 language by PR on github
● #1 lang devs intend to learn
YEAR 19- 2019
ARRIVAL
2019/Feb Go 1.12
2019/May
Playground 3rd party
import.
2019/July Go GDE
2019/Sep Go 1.13
Go 1.12
● Go vet re-written
● TLS 1.3 support (Enable by tls13=1)
● “GO111MODULE” default auto
Go 1.13
● “GO111MODULE” default auto
● TLS 1.3 by default
● Error Warpping
Others
● Go Developer network
● 28 Go conferences
● Major performance gains & memory reduction
● Go module mirror / checksum DB launched
● 2000 contributors (Double in 1 yr)
How to become expert
SECTION THREE
SHARE! SHARE! Golang Taipei needs speakers
Map of the Go Community in 2017
Growth
● 76% YoY increase
● 700,000+ new Go developers
Inclusion: “I feel welcome in the Go community”
● 400% YoY improvement for women
● 300% YoY improvement for ethnically underrepresented
Reference
● Go timeline table from Google
● Go version changes from my blog
● The Why Of Go
● Slide template
Yes!
GopherCon Taiwan!
We need your help!
Introducing LINE SPOT
商家搜尋神器LINE SPOT新登場!路痴與懶人的福音 http://official-blog.line.me/tw/archives/81291010.html
Introducing LINE SPOT
商家搜尋神器LINE SPOT新登場!路痴與懶人的福音 http://official-blog.line.me/tw/archives/81291010.html
LINE Developer Meetup #10 2019/12/04
https://linegroup.kktix.cc/events/20191204-10
Thank You
END

More Related Content

What's hot

Modern Web 2016: Using Golang to build a smart IM Bot
Modern Web 2016: Using Golang to build a smart IM Bot Modern Web 2016: Using Golang to build a smart IM Bot
Modern Web 2016: Using Golang to build a smart IM Bot Evan Lin
 
Kotlin react bkk 3.0.0
Kotlin react bkk 3.0.0Kotlin react bkk 3.0.0
Kotlin react bkk 3.0.0Christopher Ng
 
Git Going w/ Git
Git Going w/ GitGit Going w/ Git
Git Going w/ GitheyMP
 
Introduction to GoLang
Introduction to GoLangIntroduction to GoLang
Introduction to GoLangNVISIA
 
GitLab 8.5 Highlights and Step-by-step tutorial
GitLab 8.5 Highlights and Step-by-step tutorialGitLab 8.5 Highlights and Step-by-step tutorial
GitLab 8.5 Highlights and Step-by-step tutorialHeather McNamee
 
Git and git workflow best practice
Git and git workflow best practiceGit and git workflow best practice
Git and git workflow best practiceMajid Hosseini
 
RESTful API Development using Go
RESTful API Development using GoRESTful API Development using Go
RESTful API Development using GoBaiju Muthukadan
 
JAZOON'13 - Andres Almiray - Rocket Propelled Java
JAZOON'13 - Andres Almiray - Rocket Propelled JavaJAZOON'13 - Andres Almiray - Rocket Propelled Java
JAZOON'13 - Andres Almiray - Rocket Propelled Javajazoon13
 
Hacktoberfest 2020 - Open source for beginners
Hacktoberfest 2020 - Open source for beginnersHacktoberfest 2020 - Open source for beginners
Hacktoberfest 2020 - Open source for beginnersDeepikaRana30
 
Sprachsteuerung mit dem Google Assistant – Add a new User Interface to your P...
Sprachsteuerung mit dem Google Assistant – Add a new User Interface to your P...Sprachsteuerung mit dem Google Assistant – Add a new User Interface to your P...
Sprachsteuerung mit dem Google Assistant – Add a new User Interface to your P...inovex GmbH
 
Building Command Line Tools with Golang
Building Command Line Tools with GolangBuilding Command Line Tools with Golang
Building Command Line Tools with GolangTakaaki Mizuno
 
OSGi Versioning & Testing
OSGi Versioning & TestingOSGi Versioning & Testing
OSGi Versioning & TestingChris Aniszczyk
 
GitHub Classroom - An Open Source Learning Platform by Dr. Anchal Garg
GitHub Classroom - An Open Source Learning Platform by Dr. Anchal GargGitHub Classroom - An Open Source Learning Platform by Dr. Anchal Garg
GitHub Classroom - An Open Source Learning Platform by Dr. Anchal GargNisha Garg
 
componentDidCatch and Error Boundaries in React v16+
componentDidCatch and Error Boundaries in React v16+componentDidCatch and Error Boundaries in React v16+
componentDidCatch and Error Boundaries in React v16+Rohan Nair
 
Building a Portable Testing Rig with GoConvey and Docker
Building a Portable Testing Rig with GoConvey and DockerBuilding a Portable Testing Rig with GoConvey and Docker
Building a Portable Testing Rig with GoConvey and DockerAlison Rowland
 
Using Git in Eclipse - Eclipse Summit Europe 2010-11-03
Using Git in Eclipse - Eclipse Summit Europe 2010-11-03Using Git in Eclipse - Eclipse Summit Europe 2010-11-03
Using Git in Eclipse - Eclipse Summit Europe 2010-11-03msohn
 

What's hot (20)

GoLang Introduction
GoLang IntroductionGoLang Introduction
GoLang Introduction
 
Golang online course
Golang online courseGolang online course
Golang online course
 
Modern Web 2016: Using Golang to build a smart IM Bot
Modern Web 2016: Using Golang to build a smart IM Bot Modern Web 2016: Using Golang to build a smart IM Bot
Modern Web 2016: Using Golang to build a smart IM Bot
 
Kotlin react bkk 3.0.0
Kotlin react bkk 3.0.0Kotlin react bkk 3.0.0
Kotlin react bkk 3.0.0
 
Git Going w/ Git
Git Going w/ GitGit Going w/ Git
Git Going w/ Git
 
Introduction to GoLang
Introduction to GoLangIntroduction to GoLang
Introduction to GoLang
 
Git & Github
Git & GithubGit & Github
Git & Github
 
GitLab 8.5 Highlights and Step-by-step tutorial
GitLab 8.5 Highlights and Step-by-step tutorialGitLab 8.5 Highlights and Step-by-step tutorial
GitLab 8.5 Highlights and Step-by-step tutorial
 
Git and git workflow best practice
Git and git workflow best practiceGit and git workflow best practice
Git and git workflow best practice
 
Why golang
Why golangWhy golang
Why golang
 
RESTful API Development using Go
RESTful API Development using GoRESTful API Development using Go
RESTful API Development using Go
 
JAZOON'13 - Andres Almiray - Rocket Propelled Java
JAZOON'13 - Andres Almiray - Rocket Propelled JavaJAZOON'13 - Andres Almiray - Rocket Propelled Java
JAZOON'13 - Andres Almiray - Rocket Propelled Java
 
Hacktoberfest 2020 - Open source for beginners
Hacktoberfest 2020 - Open source for beginnersHacktoberfest 2020 - Open source for beginners
Hacktoberfest 2020 - Open source for beginners
 
Sprachsteuerung mit dem Google Assistant – Add a new User Interface to your P...
Sprachsteuerung mit dem Google Assistant – Add a new User Interface to your P...Sprachsteuerung mit dem Google Assistant – Add a new User Interface to your P...
Sprachsteuerung mit dem Google Assistant – Add a new User Interface to your P...
 
Building Command Line Tools with Golang
Building Command Line Tools with GolangBuilding Command Line Tools with Golang
Building Command Line Tools with Golang
 
OSGi Versioning & Testing
OSGi Versioning & TestingOSGi Versioning & Testing
OSGi Versioning & Testing
 
GitHub Classroom - An Open Source Learning Platform by Dr. Anchal Garg
GitHub Classroom - An Open Source Learning Platform by Dr. Anchal GargGitHub Classroom - An Open Source Learning Platform by Dr. Anchal Garg
GitHub Classroom - An Open Source Learning Platform by Dr. Anchal Garg
 
componentDidCatch and Error Boundaries in React v16+
componentDidCatch and Error Boundaries in React v16+componentDidCatch and Error Boundaries in React v16+
componentDidCatch and Error Boundaries in React v16+
 
Building a Portable Testing Rig with GoConvey and Docker
Building a Portable Testing Rig with GoConvey and DockerBuilding a Portable Testing Rig with GoConvey and Docker
Building a Portable Testing Rig with GoConvey and Docker
 
Using Git in Eclipse - Eclipse Summit Europe 2010-11-03
Using Git in Eclipse - Eclipse Summit Europe 2010-11-03Using Git in Eclipse - Eclipse Summit Europe 2010-11-03
Using Git in Eclipse - Eclipse Summit Europe 2010-11-03
 

Similar to Golang taipei #45 10th birthday

Hire golang developers and make the shift to brighter business future (build ...
Hire golang developers and make the shift to brighter business future (build ...Hire golang developers and make the shift to brighter business future (build ...
Hire golang developers and make the shift to brighter business future (build ...Katy Slemon
 
Let's Go @ St. Louis CocoaHeads
Let's Go @ St. Louis CocoaHeadsLet's Go @ St. Louis CocoaHeads
Let's Go @ St. Louis CocoaHeadsPaul Balogh
 
Let's Go: Introduction to Google's Go Programming Language
Let's Go: Introduction to Google's Go Programming LanguageLet's Go: Introduction to Google's Go Programming Language
Let's Go: Introduction to Google's Go Programming LanguageGanesh Samarthyam
 
Lets Go - An introduction to Google's Go Programming Language
Lets Go - An introduction to Google's Go Programming Language Lets Go - An introduction to Google's Go Programming Language
Lets Go - An introduction to Google's Go Programming Language Ganesh Samarthyam
 
Android is going to Go! Android and Golang
Android is going to Go! Android and GolangAndroid is going to Go! Android and Golang
Android is going to Go! Android and GolangAlmog Baku
 
Android is going to Go! - Android and goland - Almog Baku
Android is going to Go! - Android and goland - Almog BakuAndroid is going to Go! - Android and goland - Almog Baku
Android is going to Go! - Android and goland - Almog BakuDroidConTLV
 
Golang skills session1: introduction
Golang skills session1: introductionGolang skills session1: introduction
Golang skills session1: introductionsofianinho
 
Introduction to go lang
Introduction to go langIntroduction to go lang
Introduction to go langAmal Mohan N
 
The Ring programming language version 1.7 book - Part 6 of 196
The Ring programming language version 1.7 book - Part 6 of 196The Ring programming language version 1.7 book - Part 6 of 196
The Ring programming language version 1.7 book - Part 6 of 196Mahmoud Samir Fayed
 
The Ring programming language version 1.5.1 book - Part 4 of 180
The Ring programming language version 1.5.1 book - Part 4 of 180The Ring programming language version 1.5.1 book - Part 4 of 180
The Ring programming language version 1.5.1 book - Part 4 of 180Mahmoud Samir Fayed
 
welcome to gopherlabs - why go (golang)?
welcome to gopherlabs - why go (golang)?welcome to gopherlabs - why go (golang)?
welcome to gopherlabs - why go (golang)?sangam biradar
 
Gomobile: gophers in the land of Android
Gomobile: gophers in the land of AndroidGomobile: gophers in the land of Android
Gomobile: gophers in the land of AndroidJovica Popovic
 
Google's Go Programming Language - Introduction
Google's Go Programming Language - Introduction Google's Go Programming Language - Introduction
Google's Go Programming Language - Introduction Ganesh Samarthyam
 
A First Look at Google's Go Programming Language
A First Look at Google's Go Programming LanguageA First Look at Google's Go Programming Language
A First Look at Google's Go Programming LanguageGanesh Samarthyam
 
Golang, Future of Programming Language.
Golang, Future of Programming Language.Golang, Future of Programming Language.
Golang, Future of Programming Language.Sunil Yadav
 
The Ring programming language version 1.4 book - Part 2 of 30
The Ring programming language version 1.4 book - Part 2 of 30The Ring programming language version 1.4 book - Part 2 of 30
The Ring programming language version 1.4 book - Part 2 of 30Mahmoud Samir Fayed
 
The Ring programming language version 1.4.1 book - Part 2 of 31
The Ring programming language version 1.4.1 book - Part 2 of 31The Ring programming language version 1.4.1 book - Part 2 of 31
The Ring programming language version 1.4.1 book - Part 2 of 31Mahmoud Samir Fayed
 
[Google I/O 2018 Highlights] Flutter / WearOS
[Google I/O 2018 Highlights] Flutter / WearOS[Google I/O 2018 Highlights] Flutter / WearOS
[Google I/O 2018 Highlights] Flutter / WearOSKenichi Kambara
 
When, how &amp; why use golang in 2021 go benefits &amp; use cases
When, how &amp; why use golang in 2021  go benefits &amp; use casesWhen, how &amp; why use golang in 2021  go benefits &amp; use cases
When, how &amp; why use golang in 2021 go benefits &amp; use casesKaty Slemon
 
The Ring programming language version 1.10 book - Part 6 of 212
The Ring programming language version 1.10 book - Part 6 of 212The Ring programming language version 1.10 book - Part 6 of 212
The Ring programming language version 1.10 book - Part 6 of 212Mahmoud Samir Fayed
 

Similar to Golang taipei #45 10th birthday (20)

Hire golang developers and make the shift to brighter business future (build ...
Hire golang developers and make the shift to brighter business future (build ...Hire golang developers and make the shift to brighter business future (build ...
Hire golang developers and make the shift to brighter business future (build ...
 
Let's Go @ St. Louis CocoaHeads
Let's Go @ St. Louis CocoaHeadsLet's Go @ St. Louis CocoaHeads
Let's Go @ St. Louis CocoaHeads
 
Let's Go: Introduction to Google's Go Programming Language
Let's Go: Introduction to Google's Go Programming LanguageLet's Go: Introduction to Google's Go Programming Language
Let's Go: Introduction to Google's Go Programming Language
 
Lets Go - An introduction to Google's Go Programming Language
Lets Go - An introduction to Google's Go Programming Language Lets Go - An introduction to Google's Go Programming Language
Lets Go - An introduction to Google's Go Programming Language
 
Android is going to Go! Android and Golang
Android is going to Go! Android and GolangAndroid is going to Go! Android and Golang
Android is going to Go! Android and Golang
 
Android is going to Go! - Android and goland - Almog Baku
Android is going to Go! - Android and goland - Almog BakuAndroid is going to Go! - Android and goland - Almog Baku
Android is going to Go! - Android and goland - Almog Baku
 
Golang skills session1: introduction
Golang skills session1: introductionGolang skills session1: introduction
Golang skills session1: introduction
 
Introduction to go lang
Introduction to go langIntroduction to go lang
Introduction to go lang
 
The Ring programming language version 1.7 book - Part 6 of 196
The Ring programming language version 1.7 book - Part 6 of 196The Ring programming language version 1.7 book - Part 6 of 196
The Ring programming language version 1.7 book - Part 6 of 196
 
The Ring programming language version 1.5.1 book - Part 4 of 180
The Ring programming language version 1.5.1 book - Part 4 of 180The Ring programming language version 1.5.1 book - Part 4 of 180
The Ring programming language version 1.5.1 book - Part 4 of 180
 
welcome to gopherlabs - why go (golang)?
welcome to gopherlabs - why go (golang)?welcome to gopherlabs - why go (golang)?
welcome to gopherlabs - why go (golang)?
 
Gomobile: gophers in the land of Android
Gomobile: gophers in the land of AndroidGomobile: gophers in the land of Android
Gomobile: gophers in the land of Android
 
Google's Go Programming Language - Introduction
Google's Go Programming Language - Introduction Google's Go Programming Language - Introduction
Google's Go Programming Language - Introduction
 
A First Look at Google's Go Programming Language
A First Look at Google's Go Programming LanguageA First Look at Google's Go Programming Language
A First Look at Google's Go Programming Language
 
Golang, Future of Programming Language.
Golang, Future of Programming Language.Golang, Future of Programming Language.
Golang, Future of Programming Language.
 
The Ring programming language version 1.4 book - Part 2 of 30
The Ring programming language version 1.4 book - Part 2 of 30The Ring programming language version 1.4 book - Part 2 of 30
The Ring programming language version 1.4 book - Part 2 of 30
 
The Ring programming language version 1.4.1 book - Part 2 of 31
The Ring programming language version 1.4.1 book - Part 2 of 31The Ring programming language version 1.4.1 book - Part 2 of 31
The Ring programming language version 1.4.1 book - Part 2 of 31
 
[Google I/O 2018 Highlights] Flutter / WearOS
[Google I/O 2018 Highlights] Flutter / WearOS[Google I/O 2018 Highlights] Flutter / WearOS
[Google I/O 2018 Highlights] Flutter / WearOS
 
When, how &amp; why use golang in 2021 go benefits &amp; use cases
When, how &amp; why use golang in 2021  go benefits &amp; use casesWhen, how &amp; why use golang in 2021  go benefits &amp; use cases
When, how &amp; why use golang in 2021 go benefits &amp; use cases
 
The Ring programming language version 1.10 book - Part 6 of 212
The Ring programming language version 1.10 book - Part 6 of 212The Ring programming language version 1.10 book - Part 6 of 212
The Ring programming language version 1.10 book - Part 6 of 212
 

More from Evan Lin

好書分享: 一人公司 Company Of One
好書分享:  一人公司  Company Of One好書分享:  一人公司  Company Of One
好書分享: 一人公司 Company Of OneEvan Lin
 
iThome Modern Web 2018: 如何打造高效的機器學習平台
iThome Modern Web 2018: 如何打造高效的機器學習平台iThome Modern Web 2018: 如何打造高效的機器學習平台
iThome Modern Web 2018: 如何打造高效的機器學習平台Evan Lin
 
Kubernetes secret introduction
Kubernetes secret introductionKubernetes secret introduction
Kubernetes secret introductionEvan Lin
 
Consistent hashing algorithmic tradeoffs
Consistent hashing  algorithmic tradeoffsConsistent hashing  algorithmic tradeoffs
Consistent hashing algorithmic tradeoffsEvan Lin
 
GTG30: Introduction vgo
GTG30: Introduction vgoGTG30: Introduction vgo
GTG30: Introduction vgoEvan Lin
 
Kubernetes v.s. mesos
Kubernetes v.s. mesosKubernetes v.s. mesos
Kubernetes v.s. mesosEvan Lin
 
iThome Cloud Summit: The next generation of data center: Machine Intelligent ...
iThome Cloud Summit: The next generation of data center: Machine Intelligent ...iThome Cloud Summit: The next generation of data center: Machine Intelligent ...
iThome Cloud Summit: The next generation of data center: Machine Intelligent ...Evan Lin
 
Google APAC Machine Learning Expert Day
Google APAC Machine Learning Expert DayGoogle APAC Machine Learning Expert Day
Google APAC Machine Learning Expert DayEvan Lin
 
Use go channel to write a disk queue
Use go channel to write a disk queueUse go channel to write a disk queue
Use go channel to write a disk queueEvan Lin
 
Gopher Taiwan Gathering #16: Build a smart bot via Golang
Gopher Taiwan Gathering #16:  Build a smart bot via GolangGopher Taiwan Gathering #16:  Build a smart bot via Golang
Gopher Taiwan Gathering #16: Build a smart bot via GolangEvan Lin
 
Docker swarm introduction
Docker swarm introductionDocker swarm introduction
Docker swarm introductionEvan Lin
 
Docker introduction in Hardware Company
Docker introduction in Hardware CompanyDocker introduction in Hardware Company
Docker introduction in Hardware CompanyEvan Lin
 
Host Line Bot with Golang
Host Line Bot with GolangHost Line Bot with Golang
Host Line Bot with GolangEvan Lin
 

More from Evan Lin (13)

好書分享: 一人公司 Company Of One
好書分享:  一人公司  Company Of One好書分享:  一人公司  Company Of One
好書分享: 一人公司 Company Of One
 
iThome Modern Web 2018: 如何打造高效的機器學習平台
iThome Modern Web 2018: 如何打造高效的機器學習平台iThome Modern Web 2018: 如何打造高效的機器學習平台
iThome Modern Web 2018: 如何打造高效的機器學習平台
 
Kubernetes secret introduction
Kubernetes secret introductionKubernetes secret introduction
Kubernetes secret introduction
 
Consistent hashing algorithmic tradeoffs
Consistent hashing  algorithmic tradeoffsConsistent hashing  algorithmic tradeoffs
Consistent hashing algorithmic tradeoffs
 
GTG30: Introduction vgo
GTG30: Introduction vgoGTG30: Introduction vgo
GTG30: Introduction vgo
 
Kubernetes v.s. mesos
Kubernetes v.s. mesosKubernetes v.s. mesos
Kubernetes v.s. mesos
 
iThome Cloud Summit: The next generation of data center: Machine Intelligent ...
iThome Cloud Summit: The next generation of data center: Machine Intelligent ...iThome Cloud Summit: The next generation of data center: Machine Intelligent ...
iThome Cloud Summit: The next generation of data center: Machine Intelligent ...
 
Google APAC Machine Learning Expert Day
Google APAC Machine Learning Expert DayGoogle APAC Machine Learning Expert Day
Google APAC Machine Learning Expert Day
 
Use go channel to write a disk queue
Use go channel to write a disk queueUse go channel to write a disk queue
Use go channel to write a disk queue
 
Gopher Taiwan Gathering #16: Build a smart bot via Golang
Gopher Taiwan Gathering #16:  Build a smart bot via GolangGopher Taiwan Gathering #16:  Build a smart bot via Golang
Gopher Taiwan Gathering #16: Build a smart bot via Golang
 
Docker swarm introduction
Docker swarm introductionDocker swarm introduction
Docker swarm introduction
 
Docker introduction in Hardware Company
Docker introduction in Hardware CompanyDocker introduction in Hardware Company
Docker introduction in Hardware Company
 
Host Line Bot with Golang
Host Line Bot with GolangHost Line Bot with Golang
Host Line Bot with Golang
 

Recently uploaded

"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 

Recently uploaded (20)

"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 

Golang taipei #45 10th birthday

  • 1. Go’s 10th Birthday Golang Taipei #45 November 2019 Evan Lin – @Evan_Lin This Presentation was developed by:
  • 3. 10th birthday limited edition Gopher art!
  • 4. 10th birthday limited “TAIPEI” edition Gopher art!
  • 5. Why I Learn Go? SECTION ONE
  • 6.
  • 7.
  • 8.
  • 9.
  • 11. “gofmt/goimport” save your time for coding convention / style
  • 12. “Go test” save your time for preparing and running testing
  • 13. “Godoc” save your time for documentation
  • 14. “Godoc” save your time for documentation
  • 16. ● Rob and Robert shared same office. ● Actual swivel chairs involved. ● Just like XKCD, but with lightsabers instead of swords. 00. YEAR 0: 2007-2009 GO’S ORIGINS Rob Pike is waiting 50 minutes for a C++ Program to Compile Rob Pike Robert Griesemer inventing a new programming language
  • 17. 01. BACKGROUND THE REASON FOR GO. What changed everything for us. Goals for Go Go was designed by and for people who write—and read and debug and maintain—large software systems. Go's purpose is not research into programming language design. Go's purpose is to make its designers' programming lives better. ELIMINATE SLOWNESS ELIMINATE CLUMSINESS IMPROVE EFFECTIVENESS IMPROVE SCALE
  • 18. BRIAN W. KERNIGHAN “Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.”
  • 19. 01. YEAR 0- GO 1.0: HELLO WORLD 2009 Happy Gopher Day After 15 months, Go is open sourced on November 10, 2009 2009/11/10 Go open-sourced.
  • 20. YEAR 1 - 2010 Spreading the word 2010: The early years: The days when Rob, Russ, et. al. would travel around to conferences to talk about Go. 2010/03/18: Go Blog 2010/06/23: Go course 2010/09/15: Go Playground
  • 21. YEAR 3- 2012 FOO March 2012 - Go reaches 1.0 Significance and importance of a compatibility promise in modern software development 2012/03/28: Go 1.0
  • 22. YEAR 4 - 2013 Early Adoption Language Go 1.1 release. Race Detector. Performance improvements to GC. `map`. Scheduler has been re-written. ● 6-month release cycle ● 1st Go conference held (Tokyo Japan) - Docker release (written in Go) 2013/May Go 1.1 2013/Aug Docker released.
  • 23. YEAR 5 - 2014 Getting BIG Language Go 1.3 released. Stack improvements (now allocated contiguous segments of memory), linker overhaul, 1.4 release. - Official support for Android golang.org/x/mobile. DVCS moves from mercurial to git. go generate introduced April: Gophercon, held in Denver Kuberenetes is open sourced 1st US & European conferences ● 500 contributors Kuberrnetes open-sourced in June 2014/Jun Go 1.3 2014/Jun Kubernetes open-sourced. 2014/Dec Go 1.4
  • 24. YEAR 6 - 2015 COMMUNITY Go 1.5 ● Go compiler rewritten in Go ○ If you want to build go after 1.5, you need to install go 1.4.2 first. ● Garbage collector re-engineered concurrently ● Women Who Go & GoBridge born ● 1st Indian & Chinese conferences ● Experimental support for “vendoring” (using GO15VENDOREXPERIMENT) 2015/Aug Go 1.5
  • 25. YEAR 7 - 2016 HTTP2 2016/02/13 Go 1.6 2016/08/15 Go 1.7 Go 1.6 ● HTTP/2 & Context introduced ● 1st Lat Am & Middle East conferences ● Top 5 most loved languages (SO) ● 1st Go user survey ● 1000 contributors ● Default “GO15VENDOREXPERIMENT” on Go 1.7 ● Context package ● Remove “GO15VENDOREXPERIMENT”
  • 26. YEAR 8- 2017 1 MILLION 2017/02/16 Go 1.8 2017/08/24 Go 1.9 GO 1.8 ● Plugin: Package loading at runtime. ● `go fix` support context issue “golang.org/x/net/context” into standard library “context”. ● GC < ms pauses Go 1.9 ● Type aliases ● #1 language developers want to use (1st time) ● 1 million (estimated) users ● 13 conferences ● 1st contributor summit
  • 27. - 7.1% of developers use Go in 2018 StackOverflow survey - Up from 4.2% in 2017 - 76% YoY growth of Go users - 700,000+ new users YEAR 8-9: 2017-2018 GO’S GROWTH 2017/02/16 Go 1.8 2017/08/24 Go 1.9 Go has ~1.6M users worldwide
  • 28. YEAR 8-9: 2017-2018 GO’S MOMENTUM - #1 language to learn in 2018 on HackerRank (38% of responses) - #3 language for hiring posts on Hacker News - #1 Median Pay and #1 Future Language (23% of responses) on 2017 O’Reilly Dev Salary Survey 2017/02/16 Go 1.8 2017/08/24 Go 1.9 Go is in demand
  • 29. YEAR 9- 2018 Modules 2018/02/16: Go 1.10 2018/08/24: Go 1.11 Go 1.10 ● Note: your need write “1.10” (not 1.10) in travis ci. ● Vgo paper, and vgo arrived. Go 1.11 ● Go modules introduced ● Port to WebAssembly ● More contributions from outside the Go team (1st time) ● 19 Go conferences ● Go new brand & logo ● Go #4 language by PR on github ● #1 lang devs intend to learn
  • 30. YEAR 19- 2019 ARRIVAL 2019/Feb Go 1.12 2019/May Playground 3rd party import. 2019/July Go GDE 2019/Sep Go 1.13 Go 1.12 ● Go vet re-written ● TLS 1.3 support (Enable by tls13=1) ● “GO111MODULE” default auto Go 1.13 ● “GO111MODULE” default auto ● TLS 1.3 by default ● Error Warpping Others ● Go Developer network ● 28 Go conferences ● Major performance gains & memory reduction ● Go module mirror / checksum DB launched ● 2000 contributors (Double in 1 yr)
  • 31. How to become expert SECTION THREE
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38. SHARE! SHARE! Golang Taipei needs speakers
  • 39. Map of the Go Community in 2017 Growth ● 76% YoY increase ● 700,000+ new Go developers Inclusion: “I feel welcome in the Go community” ● 400% YoY improvement for women ● 300% YoY improvement for ethnically underrepresented
  • 40. Reference ● Go timeline table from Google ● Go version changes from my blog ● The Why Of Go ● Slide template
  • 42. Introducing LINE SPOT 商家搜尋神器LINE SPOT新登場!路痴與懶人的福音 http://official-blog.line.me/tw/archives/81291010.html
  • 43. Introducing LINE SPOT 商家搜尋神器LINE SPOT新登場!路痴與懶人的福音 http://official-blog.line.me/tw/archives/81291010.html
  • 44. LINE Developer Meetup #10 2019/12/04 https://linegroup.kktix.cc/events/20191204-10
  • 45.