SlideShare a Scribd company logo
Why Go Lang?
@sathishvj
Some products written in Go
● Kubernetes - Container Scheduling and Management
● Docker, Rkt, containerd - containers
● Go - go is written in go
● Prometheus - monitoring system
● Istio - Connect, secure, control, and observe services.
● bolt, cockroach, dgraph, goleveldb, gorocksdb, influxdb, tidb, tiedot - databases
● Ethereum - blockchain platform
● Caddy - http web server (vs nginx)
● Loki - like prometheus but for logging
● Ngrok - Introspected tunnels to localhost
● Grpcurl - curl for grpc
● Gogs - self hosted git service
● dl.google.com - rewritten in go
2
Tech Migrations
3
Why are products/projects written in Go?
4
● https://blog.iron.io/how-we-went-from-30-servers-to-2-go/
5
● https://rcoh.me/posts/why-you-can-have-a-million-go-routines-but-only-1000-jav
a-threads/
6
● https://medium.com/koinex-crunch/pushman-the-koinex-standard-for-realtime-e
xperience-4122d2715c92
7
dl.google.com now served by Go (26/10/2012)
Google uses Go for many internal projects, but for confidentiality reasons it's rare that we can point to a specific example. YouTube’s open source vitess
project (http://code.google.com/p/vitess/) is one high-profile success story, and now I'm happy to announce another.
The service that runs dl.google.com--the source for Chrome, Earth, Android SDK, and other large Google downloads--has been rewritten in Go. In fact, if
you’ve had Chrome installed during the past few months then you have almost certainly talked to this Go program. :-)
Why rewrite in Go? It all started back in April of this year, when I was running "apt-get update" at home and noticed that downloads from dl.google.com
were stalling for no apparent reason. I asked about this on our internal Google+ and was put in touch with the right people. It turned out that the existing
C++ dl.google.com service was no longer actively maintained (short of being kept alive) and that it relied on some assumptions about Google's internal
architecture which were no longer true.
The C++ version had grown thorny over the years (so many callbacks!), and it still used some of Google’s oldest C++ libraries, long since deprecated. It
also had a few HTTP details wrong and a fair bit of duplicated code, sometimes missing pieces in some copies which were present in others. Much work
was required to fix it (or rewrite it in modern C++), so we decided instead to rewrite it in Go.
The Go version is much less code, more readable, more testable, doesn’t have blocking problems, and fixes a number of HTTP correctness issues from
the old version. It also compiles quickly. We were prepared to take a hit in CPU and/or memory usage in exchange for readable code, but it turned out that
the CPU was the same and the memory usage actually dropped!
The Go version also uses interfaces to abstract out the file system, so migrating from local disk (as used in the Go version while transitioning from C++) to
networked file systems (like our Colossus) was trivial. For the same reason, it was easy to introduce a memory caching layer for the most popular
downloads.
All this is to say: apt-get against dl.google.com is fast again. I’m happy. :-) 8
Go Creators
● Robert Griesemer
● Rob Pike (Unix, Plan9 from Bell Labs, Limbo, sam, acme, UTF-8,...)
● Ken Thompson (Unix, Plan9 from Bell Labs, B, UTF-8,...)
9
● Some don’t scale for modern hardware - Python, Node
● Some are too complex - C++
● Some don’t distribute well - Java, C#, Python, Node
● Parallel programming is very useful but very challenging - all programs
● Tooling is splintered - all languages
● Modern systems require a modern language
Origins of Go
10
Fast in Build
11
Fast in Execution
12
Interest (via google trends)
13
Can Utilize Multiple CPUs and Cores
14
Statically Compiled
● Everything required by the app is available in the executable.
● So what does it take to deploy?
● No dll hell
● No upgrade dependencies
● No VM
● No dependent libraries
● Super easy in containerization
15
Go: The lean, mean, fit machine
16
OSOSOSOSOSOS
GoGoGoGoGo
App App App
Compiled Language: Direct Machine Code
● No JVM/.Net/Python/Node environments
● No local builds in each deploy location
17
Cross Compiling
● Much better solution than “platform independence” of Java/C#/Python
18
Much Simpler but More Effective Parallelism
● How many of you have regularly coded multithreaded programs?
19
Go Tooling
● Unit Testing
● Benchmarking
● Coverage
● Profiling - CPU, memory, blocking, latency
● Call graphs, flame charts
20
Governance
● Very strong backward compatibility guarantee
● Changes go through strong vetting process
● Keeps original design goals of speed and ease
21
Developer Love - Wanted and Loved
22
https://insights.stackoverflow.com/survey/2018/#most-loved-dreaded-and-wanted
Hackerrank Survey 2018
23
https://research.hackerrank.com/developer-skills/2018
Very Strongly Typed - Less implicit conversions
● Less errors in production
● Less random errors
24
Smaller, Simpler Language -> Compound Programs
25ref: https://github.com/leighmcculloch/keywords
Less is exponentially more. - Rob Pike
26
Other Advantages
● Allows your programming language to evolve better.
○ Does not start with a big-bang design.
● Consistent formatting everywhere with “go fmt”
● New very useful “defer” keyword.
● Better defaults - implicit break in case, no semi-colons
● Slices pre-allocate unlike arrays and increases efficiency by a large amount in
return for some space
27
What’s different that people have found useful elsewhere?
● No GC in C/C++ - memory management is your problem. No bounds checking. No
GC.
○ So greater speed at the cost of reliability and robustness.
● No Generics in Go - matter of much debate. Does generics reduce speed?
● No Exceptions in Go - has a C like error return and catching. Simpler,
straightforward. A little more boiler-plate but very clear error handling.
● Not OOP (technically) - but we can achieve all similar concepts.
● No Macros in Go - no preprocessing, but there is code generation capability
● No pointer arithmetic- makes programs safer
● No operator overloading
● No default arguments
● Strict braces even around single line blocks - stops inadvertent block additions
● No ternary operator
28
Thank you!
Questions?
You can find me at:
Twitter: @sathishvj
LinkedIn: Sathish VJ
29

More Related Content

What's hot

Demystifying kubernetes
Demystifying kubernetesDemystifying kubernetes
Demystifying kubernetes
Works Applications
 
Intro- Docker Native for OSX and Windows
Intro- Docker Native for OSX and WindowsIntro- Docker Native for OSX and Windows
Intro- Docker Native for OSX and Windows
Thomas Chacko
 
Introduction to kubernetes
Introduction to kubernetesIntroduction to kubernetes
Introduction to kubernetes
Göksel Pırnal
 
Docker Overview
Docker OverviewDocker Overview
Docker Overview
Rohit Jnagal
 
Docker-hanoi meetup #1: introduction about Docker
Docker-hanoi meetup #1: introduction about DockerDocker-hanoi meetup #1: introduction about Docker
Docker-hanoi meetup #1: introduction about Docker
Nguyen Anh Tu
 
Kubernetes - introduction
Kubernetes - introductionKubernetes - introduction
Kubernetes - introduction
Sparkbit
 
Containerize! Between Docker and Jube.
Containerize! Between Docker and Jube.Containerize! Between Docker and Jube.
Containerize! Between Docker and Jube.
Henryk Konsek
 
Kubernetes Basis: Pods, Deployments, and Services
Kubernetes Basis: Pods, Deployments, and ServicesKubernetes Basis: Pods, Deployments, and Services
Kubernetes Basis: Pods, Deployments, and Services
Jian-Kai Wang
 
From dev to prod: Kubernetes on AWS (short ver.)
From dev to prod: Kubernetes on AWS (short ver.)From dev to prod: Kubernetes on AWS (short ver.)
From dev to prod: Kubernetes on AWS (short ver.)
佑介 九岡
 
Docker n co
Docker n coDocker n co
Docker n co
Rohit Jnagal
 
Kubernetes Basic Operation
Kubernetes Basic OperationKubernetes Basic Operation
Kubernetes Basic Operation
Simon Su
 
Container orchestration
Container orchestrationContainer orchestration
Container orchestration
Timo Derstappen
 
Docker and Go: why did we decide to write Docker in Go?
Docker and Go: why did we decide to write Docker in Go?Docker and Go: why did we decide to write Docker in Go?
Docker and Go: why did we decide to write Docker in Go?
Jérôme Petazzoni
 
Docker for mere mortals
Docker for mere mortalsDocker for mere mortals
Docker for mere mortals
Henryk Konsek
 
Kubernetes in 30 minutes (2017/03/10)
Kubernetes in 30 minutes (2017/03/10)Kubernetes in 30 minutes (2017/03/10)
Kubernetes in 30 minutes (2017/03/10)
lestrrat
 
Kubernetes Node Deep Dive
Kubernetes Node Deep DiveKubernetes Node Deep Dive
Kubernetes Node Deep Dive
Lei (Harry) Zhang
 
Kubernetes 101 for Beginners
Kubernetes 101 for BeginnersKubernetes 101 for Beginners
Kubernetes 101 for Beginners
Oktay Esgul
 
Academy PRO: Docker. Part 1
Academy PRO: Docker. Part 1Academy PRO: Docker. Part 1
Academy PRO: Docker. Part 1
Binary Studio
 
Academy PRO: Docker. Part 4
Academy PRO: Docker. Part 4Academy PRO: Docker. Part 4
Academy PRO: Docker. Part 4
Binary Studio
 
Monitoring, Logging and Tracing on Kubernetes
Monitoring, Logging and Tracing on KubernetesMonitoring, Logging and Tracing on Kubernetes
Monitoring, Logging and Tracing on Kubernetes
Martin Etmajer
 

What's hot (20)

Demystifying kubernetes
Demystifying kubernetesDemystifying kubernetes
Demystifying kubernetes
 
Intro- Docker Native for OSX and Windows
Intro- Docker Native for OSX and WindowsIntro- Docker Native for OSX and Windows
Intro- Docker Native for OSX and Windows
 
Introduction to kubernetes
Introduction to kubernetesIntroduction to kubernetes
Introduction to kubernetes
 
Docker Overview
Docker OverviewDocker Overview
Docker Overview
 
Docker-hanoi meetup #1: introduction about Docker
Docker-hanoi meetup #1: introduction about DockerDocker-hanoi meetup #1: introduction about Docker
Docker-hanoi meetup #1: introduction about Docker
 
Kubernetes - introduction
Kubernetes - introductionKubernetes - introduction
Kubernetes - introduction
 
Containerize! Between Docker and Jube.
Containerize! Between Docker and Jube.Containerize! Between Docker and Jube.
Containerize! Between Docker and Jube.
 
Kubernetes Basis: Pods, Deployments, and Services
Kubernetes Basis: Pods, Deployments, and ServicesKubernetes Basis: Pods, Deployments, and Services
Kubernetes Basis: Pods, Deployments, and Services
 
From dev to prod: Kubernetes on AWS (short ver.)
From dev to prod: Kubernetes on AWS (short ver.)From dev to prod: Kubernetes on AWS (short ver.)
From dev to prod: Kubernetes on AWS (short ver.)
 
Docker n co
Docker n coDocker n co
Docker n co
 
Kubernetes Basic Operation
Kubernetes Basic OperationKubernetes Basic Operation
Kubernetes Basic Operation
 
Container orchestration
Container orchestrationContainer orchestration
Container orchestration
 
Docker and Go: why did we decide to write Docker in Go?
Docker and Go: why did we decide to write Docker in Go?Docker and Go: why did we decide to write Docker in Go?
Docker and Go: why did we decide to write Docker in Go?
 
Docker for mere mortals
Docker for mere mortalsDocker for mere mortals
Docker for mere mortals
 
Kubernetes in 30 minutes (2017/03/10)
Kubernetes in 30 minutes (2017/03/10)Kubernetes in 30 minutes (2017/03/10)
Kubernetes in 30 minutes (2017/03/10)
 
Kubernetes Node Deep Dive
Kubernetes Node Deep DiveKubernetes Node Deep Dive
Kubernetes Node Deep Dive
 
Kubernetes 101 for Beginners
Kubernetes 101 for BeginnersKubernetes 101 for Beginners
Kubernetes 101 for Beginners
 
Academy PRO: Docker. Part 1
Academy PRO: Docker. Part 1Academy PRO: Docker. Part 1
Academy PRO: Docker. Part 1
 
Academy PRO: Docker. Part 4
Academy PRO: Docker. Part 4Academy PRO: Docker. Part 4
Academy PRO: Docker. Part 4
 
Monitoring, Logging and Tracing on Kubernetes
Monitoring, Logging and Tracing on KubernetesMonitoring, Logging and Tracing on Kubernetes
Monitoring, Logging and Tracing on Kubernetes
 

Similar to Why Go Lang?

Introduction to Go
Introduction to GoIntroduction to Go
Introduction to Go
Simon Hewitt
 
Introduction to go lang
Introduction to go langIntroduction to go lang
Introduction to go lang
Amal Mohan N
 
Golang : A Hype or the Future?
Golang : A Hype or the Future?Golang : A Hype or the Future?
Golang : A Hype or the Future?
Mindfire LLC
 
[2020 git lab commit] continuous infrastructure
[2020 git lab commit] continuous infrastructure[2020 git lab commit] continuous infrastructure
[2020 git lab commit] continuous infrastructure
Rodrigo Stefani Domingues
 
How We Bacame a 'Go' Company
How We Bacame a 'Go' CompanyHow We Bacame a 'Go' Company
How We Bacame a 'Go' Company
Luka Napotnik
 
Go at Skroutz
Go at SkroutzGo at Skroutz
Go at Skroutz
AgisAnastasopoulos
 
Introduction to serverless computing on Google Cloud
Introduction to serverless computing on Google CloudIntroduction to serverless computing on Google Cloud
Introduction to serverless computing on Google Cloud
wesley chun
 
Node js vs golang -which one is better ?
Node js vs golang -which one is better ?Node js vs golang -which one is better ?
Node js vs golang -which one is better ?
ForceBolt
 
Understanding the GitOps Workflow and CICD Pipeline - What It Is, Why It Matt...
Understanding the GitOps Workflow and CICD Pipeline - What It Is, Why It Matt...Understanding the GitOps Workflow and CICD Pipeline - What It Is, Why It Matt...
Understanding the GitOps Workflow and CICD Pipeline - What It Is, Why It Matt...
Gibran Badrulzaman
 
Advantages of golang development services & 10 most used go frameworks
Advantages of golang development services & 10 most used go frameworksAdvantages of golang development services & 10 most used go frameworks
Advantages of golang development services & 10 most used go frameworks
Katy Slemon
 
Mender.io | Develop embedded applications faster | Comparing C and Golang
Mender.io | Develop embedded applications faster | Comparing C and GolangMender.io | Develop embedded applications faster | Comparing C and Golang
Mender.io | Develop embedded applications faster | Comparing C and Golang
Mender.io
 
cadec-2017-golang
cadec-2017-golangcadec-2017-golang
cadec-2017-golang
TiNguyn863920
 
An Introduction to Go
An Introduction to GoAn Introduction to Go
An Introduction to Go
Imesh Gunaratne
 
Критика "библиотечного" подхода в разработке под Android. UA Mobile 2016.
Критика "библиотечного" подхода в разработке под Android. UA Mobile 2016.Критика "библиотечного" подхода в разработке под Android. UA Mobile 2016.
Критика "библиотечного" подхода в разработке под Android. UA Mobile 2016.
UA Mobile
 
Promise of DevOps
Promise of DevOpsPromise of DevOps
Promise of DevOps
Juraj Hantak
 
Getting started with Emscripten – Transpiling C / C++ to JavaScript / HTML5
Getting started with Emscripten – Transpiling C / C++ to JavaScript / HTML5Getting started with Emscripten – Transpiling C / C++ to JavaScript / HTML5
Getting started with Emscripten – Transpiling C / C++ to JavaScript / HTML5
David Voyles
 
Angular (v2 and up) - Morning to understand - Linagora
Angular (v2 and up) - Morning to understand - LinagoraAngular (v2 and up) - Morning to understand - Linagora
Angular (v2 and up) - Morning to understand - Linagora
LINAGORA
 
Introduction to DevOps and the Practical Use Cases at Credit OK
Introduction to DevOps and the Practical Use Cases at Credit OKIntroduction to DevOps and the Practical Use Cases at Credit OK
Introduction to DevOps and the Practical Use Cases at Credit OK
Kriangkrai Chaonithi
 
Comparing C and Go
Comparing C and GoComparing C and Go
Comparing C and Go
Marcin Pasinski
 
DocDoku: Using web technologies in a desktop application. OW2con'15, November...
DocDoku: Using web technologies in a desktop application. OW2con'15, November...DocDoku: Using web technologies in a desktop application. OW2con'15, November...
DocDoku: Using web technologies in a desktop application. OW2con'15, November...
OW2
 

Similar to Why Go Lang? (20)

Introduction to Go
Introduction to GoIntroduction to Go
Introduction to Go
 
Introduction to go lang
Introduction to go langIntroduction to go lang
Introduction to go lang
 
Golang : A Hype or the Future?
Golang : A Hype or the Future?Golang : A Hype or the Future?
Golang : A Hype or the Future?
 
[2020 git lab commit] continuous infrastructure
[2020 git lab commit] continuous infrastructure[2020 git lab commit] continuous infrastructure
[2020 git lab commit] continuous infrastructure
 
How We Bacame a 'Go' Company
How We Bacame a 'Go' CompanyHow We Bacame a 'Go' Company
How We Bacame a 'Go' Company
 
Go at Skroutz
Go at SkroutzGo at Skroutz
Go at Skroutz
 
Introduction to serverless computing on Google Cloud
Introduction to serverless computing on Google CloudIntroduction to serverless computing on Google Cloud
Introduction to serverless computing on Google Cloud
 
Node js vs golang -which one is better ?
Node js vs golang -which one is better ?Node js vs golang -which one is better ?
Node js vs golang -which one is better ?
 
Understanding the GitOps Workflow and CICD Pipeline - What It Is, Why It Matt...
Understanding the GitOps Workflow and CICD Pipeline - What It Is, Why It Matt...Understanding the GitOps Workflow and CICD Pipeline - What It Is, Why It Matt...
Understanding the GitOps Workflow and CICD Pipeline - What It Is, Why It Matt...
 
Advantages of golang development services & 10 most used go frameworks
Advantages of golang development services & 10 most used go frameworksAdvantages of golang development services & 10 most used go frameworks
Advantages of golang development services & 10 most used go frameworks
 
Mender.io | Develop embedded applications faster | Comparing C and Golang
Mender.io | Develop embedded applications faster | Comparing C and GolangMender.io | Develop embedded applications faster | Comparing C and Golang
Mender.io | Develop embedded applications faster | Comparing C and Golang
 
cadec-2017-golang
cadec-2017-golangcadec-2017-golang
cadec-2017-golang
 
An Introduction to Go
An Introduction to GoAn Introduction to Go
An Introduction to Go
 
Критика "библиотечного" подхода в разработке под Android. UA Mobile 2016.
Критика "библиотечного" подхода в разработке под Android. UA Mobile 2016.Критика "библиотечного" подхода в разработке под Android. UA Mobile 2016.
Критика "библиотечного" подхода в разработке под Android. UA Mobile 2016.
 
Promise of DevOps
Promise of DevOpsPromise of DevOps
Promise of DevOps
 
Getting started with Emscripten – Transpiling C / C++ to JavaScript / HTML5
Getting started with Emscripten – Transpiling C / C++ to JavaScript / HTML5Getting started with Emscripten – Transpiling C / C++ to JavaScript / HTML5
Getting started with Emscripten – Transpiling C / C++ to JavaScript / HTML5
 
Angular (v2 and up) - Morning to understand - Linagora
Angular (v2 and up) - Morning to understand - LinagoraAngular (v2 and up) - Morning to understand - Linagora
Angular (v2 and up) - Morning to understand - Linagora
 
Introduction to DevOps and the Practical Use Cases at Credit OK
Introduction to DevOps and the Practical Use Cases at Credit OKIntroduction to DevOps and the Practical Use Cases at Credit OK
Introduction to DevOps and the Practical Use Cases at Credit OK
 
Comparing C and Go
Comparing C and GoComparing C and Go
Comparing C and Go
 
DocDoku: Using web technologies in a desktop application. OW2con'15, November...
DocDoku: Using web technologies in a desktop application. OW2con'15, November...DocDoku: Using web technologies in a desktop application. OW2con'15, November...
DocDoku: Using web technologies in a desktop application. OW2con'15, November...
 

More from Sathish VJ

gething started - ethereum & using the geth golang client
gething started - ethereum & using the geth golang clientgething started - ethereum & using the geth golang client
gething started - ethereum & using the geth golang client
Sathish VJ
 
Blockchain, bitcoin
Blockchain, bitcoinBlockchain, bitcoin
Blockchain, bitcoin
Sathish VJ
 
Apps and Hacks Showreel
Apps and Hacks ShowreelApps and Hacks Showreel
Apps and Hacks Showreel
Sathish VJ
 
Microsoft Ventures Hackday 2014 Bangalore - Limitless App
Microsoft Ventures Hackday 2014 Bangalore - Limitless AppMicrosoft Ventures Hackday 2014 Bangalore - Limitless App
Microsoft Ventures Hackday 2014 Bangalore - Limitless App
Sathish VJ
 
AngularJS Beginners Workshop
AngularJS Beginners WorkshopAngularJS Beginners Workshop
AngularJS Beginners Workshop
Sathish VJ
 
Smart Ride - our winning Internet of Things hack at the weekend Apigee hackathon
Smart Ride - our winning Internet of Things hack at the weekend Apigee hackathonSmart Ride - our winning Internet of Things hack at the weekend Apigee hackathon
Smart Ride - our winning Internet of Things hack at the weekend Apigee hackathon
Sathish VJ
 
Google AppEngine - For GBG Bangalore
Google AppEngine - For GBG BangaloreGoogle AppEngine - For GBG Bangalore
Google AppEngine - For GBG Bangalore
Sathish VJ
 
Internet of Things GDG Bangalore 2013
Internet of Things GDG Bangalore 2013Internet of Things GDG Bangalore 2013
Internet of Things GDG Bangalore 2013
Sathish VJ
 

More from Sathish VJ (8)

gething started - ethereum & using the geth golang client
gething started - ethereum & using the geth golang clientgething started - ethereum & using the geth golang client
gething started - ethereum & using the geth golang client
 
Blockchain, bitcoin
Blockchain, bitcoinBlockchain, bitcoin
Blockchain, bitcoin
 
Apps and Hacks Showreel
Apps and Hacks ShowreelApps and Hacks Showreel
Apps and Hacks Showreel
 
Microsoft Ventures Hackday 2014 Bangalore - Limitless App
Microsoft Ventures Hackday 2014 Bangalore - Limitless AppMicrosoft Ventures Hackday 2014 Bangalore - Limitless App
Microsoft Ventures Hackday 2014 Bangalore - Limitless App
 
AngularJS Beginners Workshop
AngularJS Beginners WorkshopAngularJS Beginners Workshop
AngularJS Beginners Workshop
 
Smart Ride - our winning Internet of Things hack at the weekend Apigee hackathon
Smart Ride - our winning Internet of Things hack at the weekend Apigee hackathonSmart Ride - our winning Internet of Things hack at the weekend Apigee hackathon
Smart Ride - our winning Internet of Things hack at the weekend Apigee hackathon
 
Google AppEngine - For GBG Bangalore
Google AppEngine - For GBG BangaloreGoogle AppEngine - For GBG Bangalore
Google AppEngine - For GBG Bangalore
 
Internet of Things GDG Bangalore 2013
Internet of Things GDG Bangalore 2013Internet of Things GDG Bangalore 2013
Internet of Things GDG Bangalore 2013
 

Recently uploaded

Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
DianaGray10
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
panagenda
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
IndexBug
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
Neo4j
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
DianaGray10
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Malak Abu Hammad
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
Claudio Di Ciccio
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
Neo4j
 
Infrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI modelsInfrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI models
Zilliz
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
tolgahangng
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
Zilliz
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Speck&Tech
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Safe Software
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc
 

Recently uploaded (20)

Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
 
Infrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI modelsInfrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI models
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
 

Why Go Lang?

  • 2. Some products written in Go ● Kubernetes - Container Scheduling and Management ● Docker, Rkt, containerd - containers ● Go - go is written in go ● Prometheus - monitoring system ● Istio - Connect, secure, control, and observe services. ● bolt, cockroach, dgraph, goleveldb, gorocksdb, influxdb, tidb, tiedot - databases ● Ethereum - blockchain platform ● Caddy - http web server (vs nginx) ● Loki - like prometheus but for logging ● Ngrok - Introspected tunnels to localhost ● Grpcurl - curl for grpc ● Gogs - self hosted git service ● dl.google.com - rewritten in go 2
  • 4. Why are products/projects written in Go? 4
  • 8. dl.google.com now served by Go (26/10/2012) Google uses Go for many internal projects, but for confidentiality reasons it's rare that we can point to a specific example. YouTube’s open source vitess project (http://code.google.com/p/vitess/) is one high-profile success story, and now I'm happy to announce another. The service that runs dl.google.com--the source for Chrome, Earth, Android SDK, and other large Google downloads--has been rewritten in Go. In fact, if you’ve had Chrome installed during the past few months then you have almost certainly talked to this Go program. :-) Why rewrite in Go? It all started back in April of this year, when I was running "apt-get update" at home and noticed that downloads from dl.google.com were stalling for no apparent reason. I asked about this on our internal Google+ and was put in touch with the right people. It turned out that the existing C++ dl.google.com service was no longer actively maintained (short of being kept alive) and that it relied on some assumptions about Google's internal architecture which were no longer true. The C++ version had grown thorny over the years (so many callbacks!), and it still used some of Google’s oldest C++ libraries, long since deprecated. It also had a few HTTP details wrong and a fair bit of duplicated code, sometimes missing pieces in some copies which were present in others. Much work was required to fix it (or rewrite it in modern C++), so we decided instead to rewrite it in Go. The Go version is much less code, more readable, more testable, doesn’t have blocking problems, and fixes a number of HTTP correctness issues from the old version. It also compiles quickly. We were prepared to take a hit in CPU and/or memory usage in exchange for readable code, but it turned out that the CPU was the same and the memory usage actually dropped! The Go version also uses interfaces to abstract out the file system, so migrating from local disk (as used in the Go version while transitioning from C++) to networked file systems (like our Colossus) was trivial. For the same reason, it was easy to introduce a memory caching layer for the most popular downloads. All this is to say: apt-get against dl.google.com is fast again. I’m happy. :-) 8
  • 9. Go Creators ● Robert Griesemer ● Rob Pike (Unix, Plan9 from Bell Labs, Limbo, sam, acme, UTF-8,...) ● Ken Thompson (Unix, Plan9 from Bell Labs, B, UTF-8,...) 9
  • 10. ● Some don’t scale for modern hardware - Python, Node ● Some are too complex - C++ ● Some don’t distribute well - Java, C#, Python, Node ● Parallel programming is very useful but very challenging - all programs ● Tooling is splintered - all languages ● Modern systems require a modern language Origins of Go 10
  • 13. Interest (via google trends) 13
  • 14. Can Utilize Multiple CPUs and Cores 14
  • 15. Statically Compiled ● Everything required by the app is available in the executable. ● So what does it take to deploy? ● No dll hell ● No upgrade dependencies ● No VM ● No dependent libraries ● Super easy in containerization 15
  • 16. Go: The lean, mean, fit machine 16 OSOSOSOSOSOS GoGoGoGoGo App App App
  • 17. Compiled Language: Direct Machine Code ● No JVM/.Net/Python/Node environments ● No local builds in each deploy location 17
  • 18. Cross Compiling ● Much better solution than “platform independence” of Java/C#/Python 18
  • 19. Much Simpler but More Effective Parallelism ● How many of you have regularly coded multithreaded programs? 19
  • 20. Go Tooling ● Unit Testing ● Benchmarking ● Coverage ● Profiling - CPU, memory, blocking, latency ● Call graphs, flame charts 20
  • 21. Governance ● Very strong backward compatibility guarantee ● Changes go through strong vetting process ● Keeps original design goals of speed and ease 21
  • 22. Developer Love - Wanted and Loved 22 https://insights.stackoverflow.com/survey/2018/#most-loved-dreaded-and-wanted
  • 24. Very Strongly Typed - Less implicit conversions ● Less errors in production ● Less random errors 24
  • 25. Smaller, Simpler Language -> Compound Programs 25ref: https://github.com/leighmcculloch/keywords
  • 26. Less is exponentially more. - Rob Pike 26
  • 27. Other Advantages ● Allows your programming language to evolve better. ○ Does not start with a big-bang design. ● Consistent formatting everywhere with “go fmt” ● New very useful “defer” keyword. ● Better defaults - implicit break in case, no semi-colons ● Slices pre-allocate unlike arrays and increases efficiency by a large amount in return for some space 27
  • 28. What’s different that people have found useful elsewhere? ● No GC in C/C++ - memory management is your problem. No bounds checking. No GC. ○ So greater speed at the cost of reliability and robustness. ● No Generics in Go - matter of much debate. Does generics reduce speed? ● No Exceptions in Go - has a C like error return and catching. Simpler, straightforward. A little more boiler-plate but very clear error handling. ● Not OOP (technically) - but we can achieve all similar concepts. ● No Macros in Go - no preprocessing, but there is code generation capability ● No pointer arithmetic- makes programs safer ● No operator overloading ● No default arguments ● Strict braces even around single line blocks - stops inadvertent block additions ● No ternary operator 28
  • 29. Thank you! Questions? You can find me at: Twitter: @sathishvj LinkedIn: Sathish VJ 29