LET’S “GO”
An Introduction to Programming in Go
ST. LOUIS COCOAHEADS @ LAKE ST LOUIS MO, JAN 28 2020
Paul Balogh
Cloud Platform@NISC
@javaducky
● Pronounce “BAY-LOG”
● Cloud Platform Team Lead@NISC
● Java Developer ~19 years,
Software Engineer > 20
● Golang Enthusiast &
Occasional OSS Contributor
● Twitter/GitHub: @javaducky
I AM NOT an expert! Paul
Disclaimer:
About Me
Agenda
What is Go?
Meet WeeSVC
Demo
What’s Next?
Wrap Up
01
02
03
04
05
What is Go?
SECTION 01
https://golang.org/
Go is an open source
programming language that
makes it easy to build
simple, reliable, and
efficient software.
What is Go?
● Publicly announced by Google in November, 2009
● Created by Robert Griesemer, Rob Pike, and Ken
Thompson
● ThoughtWorks Technology Radar suggests Trial use in
2014; switches to Adopt 6 months later
● Vibrant, inclusive community striving for diversity backed
by the Go Community Code of Conduct
● Development language for major Cloud Native projects:
Kubernetes, Linkerd, Docker, Terraform, Vitess, etc.
About Go...
What is Go?
● Simple
● Efficient
● Reliable
● Productive
● Consistent
● Popular
About Go...
{Simplicity.
Advertised due to the smaller
number (25) of keywords and
single binaries. In reality, more
of a credo than a language
feature.
“Clear is better than clever.”
What is Go?
Rob Pike
… a desire to keep the
language specification
simple enough to hold in a
programmer’s head.
{Efficiency.
Compiles to native machine
code (32- & 64-bit x86, ARM).
Programs compile fast with a
very small binary result.
Built with concurrency in mind:
goroutines and channels.
What is Go?
{Reliability.
Managed memory with Garbage
Collection; pointer arithmetic
not allowed.
`defer` for use with cleanup
code.
What is Go?
{Productivity.
Large standard library.
Strong typing with type
inference.
Standardized test framework.
What is Go?
{Consistency.
Static analysis tools `gofmt`
and `golint` for ensuring
standard code and
documentation format.
“Gofmt’s style is no one’s favorite, yet
gofmt is everyone’s favorite.”
What is Go?
{Popularity.
Go is the #4 language in use in
GitHub behind JS, Python, and
Java based upon “stars.”
A trend driven by high-profile
programs in the Cloud Native
Computing Foundation (CNCF).
What is Go?
What is Go?
https://madnight.github.io/githut/#/stars/2019/4
Popularity
What is Go?
Gophers are multiplying!
Popularity
Meet WeeSVC
SECTION 02
Helps you select an application framework
by implementing a common service
application with various languages and
frameworks allowing for benchmark
comparison.
Wee S-V-C: a tiny service
About WeeSVC...
Meet WeeSVC
● First repo started May ‘19 with Java/SpringBoot
● Like TodoMVC but for backend (micro)services
● Many implementations; same use requirements
● weesvc-gorilla is currently defining standard
● It’s only me at this time
Where it’s headed
● Compatibility tests to ensure requirements met
● Testing with simulated load for profiling
● Website with published profiling results
Demo,
weesvc-gorilla
SECTION 03
THIS SLIDE INTENTIONALLY
LEFT BLANK
What Next?
SECTION 04
What Next?
● Finalized “requirements” for functionality
● Compatibility Suite to ensure service compliance
● Updated weesvc-[springboot|micronaut|gokit]
● Website with logo
● Profiling Suite for comparative analysis
And to appease the crowd...
● weesvc-vapor written in Swift
Coming Soon...
Wrap Up
SECTION 05
Wrap Up
● Go Developer Resources
https://go.dev/
● GoDoc - Package Documentation
https://godoc.org/
● Golang Weekly Newsletter
https://golangweekly.com/
● Exercism - Code Practice and Mentorship
https://exercism.io/
● Gopher Slack
https://gophers.slack.com/
Resources
GopherCon
June 22-25, 2020
Walt Disney World
Dolphin Resort
Orlando, Florida
$1,095 Corporate
$795 Self-Paid
Wrap Up
Questions?
StLGo Meetup
4th Wednesday/month
Project WeeSVC
github.com/weesvc
Paul Balogh
@javaducky
ThankYou!
Wrap Up

Let's Go @ St. Louis CocoaHeads

  • 1.
    LET’S “GO” An Introductionto Programming in Go ST. LOUIS COCOAHEADS @ LAKE ST LOUIS MO, JAN 28 2020 Paul Balogh Cloud Platform@NISC @javaducky
  • 2.
    ● Pronounce “BAY-LOG” ●Cloud Platform Team Lead@NISC ● Java Developer ~19 years, Software Engineer > 20 ● Golang Enthusiast & Occasional OSS Contributor ● Twitter/GitHub: @javaducky I AM NOT an expert! Paul Disclaimer: About Me
  • 3.
    Agenda What is Go? MeetWeeSVC Demo What’s Next? Wrap Up 01 02 03 04 05
  • 4.
  • 5.
    https://golang.org/ Go is anopen source programming language that makes it easy to build simple, reliable, and efficient software.
  • 6.
    What is Go? ●Publicly announced by Google in November, 2009 ● Created by Robert Griesemer, Rob Pike, and Ken Thompson ● ThoughtWorks Technology Radar suggests Trial use in 2014; switches to Adopt 6 months later ● Vibrant, inclusive community striving for diversity backed by the Go Community Code of Conduct ● Development language for major Cloud Native projects: Kubernetes, Linkerd, Docker, Terraform, Vitess, etc. About Go...
  • 7.
    What is Go? ●Simple ● Efficient ● Reliable ● Productive ● Consistent ● Popular About Go...
  • 8.
    {Simplicity. Advertised due tothe smaller number (25) of keywords and single binaries. In reality, more of a credo than a language feature. “Clear is better than clever.” What is Go?
  • 9.
    Rob Pike … adesire to keep the language specification simple enough to hold in a programmer’s head.
  • 10.
    {Efficiency. Compiles to nativemachine code (32- & 64-bit x86, ARM). Programs compile fast with a very small binary result. Built with concurrency in mind: goroutines and channels. What is Go?
  • 11.
    {Reliability. Managed memory withGarbage Collection; pointer arithmetic not allowed. `defer` for use with cleanup code. What is Go?
  • 12.
    {Productivity. Large standard library. Strongtyping with type inference. Standardized test framework. What is Go?
  • 13.
    {Consistency. Static analysis tools`gofmt` and `golint` for ensuring standard code and documentation format. “Gofmt’s style is no one’s favorite, yet gofmt is everyone’s favorite.” What is Go?
  • 14.
    {Popularity. Go is the#4 language in use in GitHub behind JS, Python, and Java based upon “stars.” A trend driven by high-profile programs in the Cloud Native Computing Foundation (CNCF). What is Go?
  • 15.
  • 16.
    What is Go? Gophersare multiplying! Popularity
  • 17.
  • 18.
    Helps you selectan application framework by implementing a common service application with various languages and frameworks allowing for benchmark comparison. Wee S-V-C: a tiny service
  • 19.
    About WeeSVC... Meet WeeSVC ●First repo started May ‘19 with Java/SpringBoot ● Like TodoMVC but for backend (micro)services ● Many implementations; same use requirements ● weesvc-gorilla is currently defining standard ● It’s only me at this time Where it’s headed ● Compatibility tests to ensure requirements met ● Testing with simulated load for profiling ● Website with published profiling results
  • 20.
  • 21.
  • 22.
  • 23.
    What Next? ● Finalized“requirements” for functionality ● Compatibility Suite to ensure service compliance ● Updated weesvc-[springboot|micronaut|gokit] ● Website with logo ● Profiling Suite for comparative analysis And to appease the crowd... ● weesvc-vapor written in Swift Coming Soon...
  • 24.
  • 25.
    Wrap Up ● GoDeveloper Resources https://go.dev/ ● GoDoc - Package Documentation https://godoc.org/ ● Golang Weekly Newsletter https://golangweekly.com/ ● Exercism - Code Practice and Mentorship https://exercism.io/ ● Gopher Slack https://gophers.slack.com/ Resources
  • 26.
    GopherCon June 22-25, 2020 WaltDisney World Dolphin Resort Orlando, Florida $1,095 Corporate $795 Self-Paid Wrap Up
  • 27.
    Questions? StLGo Meetup 4th Wednesday/month ProjectWeeSVC github.com/weesvc Paul Balogh @javaducky ThankYou! Wrap Up