SlideShare a Scribd company logo
1 of 15
Download to read offline
LETS GO
jayas@cisco.com
IT
STARTED
WITH
A
SPARK!
Should we build a service in GO?
EXPLORATIONS
➤ GO /Golang : Programming
Language from Google
➤ Very small language footprint
➤ No multitude of options to
accomplish a task.
➤ Easy to learn, Quick to build stuff.
➤ Tuned for concurrent tasks, multi
core systems, does memory
management too!
➤ Small memory footprint
(compared to Java/Scala)
➤ Availability of packages for most
needs, open source tools / systems
“In the Python version, our best shot at making use of all available cores is to run each
publisher and subscriber routine in a separate Python interpreter, each running on a
single OS process.
Go’s goroutines paint an entirely different picture. With only a single pub-sub client,
we’re able to consume all available CPU cores using a single OS process - Go manages
all of the parallelism for you.
-A tale of two queues: http://blog.jupo.org/2013/02/23/a-tale-of-two-queues/
GO 101
HELLO YOU!
➤ functions and data grouped in
packages
➤ One main package and one
main function
➤ import packages
➤ no semi colons
➤ var declaration
➤ inferred type
➤ quick definition
➤ basic data types
➤ Arrays/slices, map, channel
DO MORE AT SAME TIME
➤ functions can return multiple
values, last one is always an error
➤ if with no braces, no semi colons,
less to type
➤ neither pure functional nor object
oriented
➤ Anonymous functions/ functions
as values
➤ go routines - do stuff in parallel
➤ defer function - similar to
destructors
➤ panic and recoverWhat is Pr?
“No classes and inheritance, still we can get stuff done with types and functions
associated with the type.
Duck typing / Structural typing lets data structures makes data structures and
functions more useful and behaviour driven
No threads /mutexes/semaphores still we can have concurrent processing and co-
ordintation among multiple concurrent processing routines.
I MISS MY CLASSES
➤ struct - a custom type that contains
other types (custom / basic)
➤ Any struct member name that starts
with Uppercase letter is public
➤ Any function which specifies a struct as
a receiver of the function call, is similar
to methods of the struct
➤ Note the difference in specifying the
receiver - pass by value/ref
➤ interface - declares the expected
behaviour
➤ No one implements the interface
➤ Any type that has the behaviour
mentioned in the interface
automatically is of the same ‘type’ as
that of the interface.
MULTITASKING VIA MESSAGES
➤ Buffered/Blocking channels as
message streams
➤ go routines can send/receive
messages from channels
➤ Use select for receiving
messages from multiple
channels
➤ Simple http server
➤ easy to build and host APIs
echo WebApp
WHAT GOT BUILT
GONOTIFY - NOTIFICATION SERVICE
Chat
Services
gonotify*
App
Receive over Websocket
Initiate Chat
NotifyAPIForWebSocket
Time Taken (Including learning Go from Scratch) : 7 days
Redis
GOCHECK - PR CHECKER
Time Taken (Including Refreshing Go) : 4 hours
➤ Uses github APIs to pull all
PRs
➤ Validates PR age and
description
➤ Add comments to PR if agent
is more than the threshold
and length of description is
less than the threshold
➤ Cross compiled to run in
Linux box
REFERENCES
Chapter 1 will give head start
Refer further chapters on need basis
Available in Safari Books online
http://devslovebacon.com/conferences/bacon-2013/talks/why-node-and-scala-will-dry-
up-go-will-drink-their-milkshake
https://golang.org
Thank You!

More Related Content

What's hot

JAZOON'13 - Andrej Vckovski - Go synchronized
JAZOON'13 - Andrej Vckovski - Go synchronizedJAZOON'13 - Andrej Vckovski - Go synchronized
JAZOON'13 - Andrej Vckovski - Go synchronizedjazoon13
 
[4developers2016] The ultimate mobile DX using JS as a primary language (Fato...
[4developers2016] The ultimate mobile DX using JS as a primary language (Fato...[4developers2016] The ultimate mobile DX using JS as a primary language (Fato...
[4developers2016] The ultimate mobile DX using JS as a primary language (Fato...PROIDEA
 
Angular2 getting started by Stephen Lautier
Angular2 getting started by Stephen LautierAngular2 getting started by Stephen Lautier
Angular2 getting started by Stephen LautierAndrei Toma
 
An introduction to the ruby ecosystem
An introduction to the ruby ecosystemAn introduction to the ruby ecosystem
An introduction to the ruby ecosystemGeison Goes
 
UCSY CS Club Week2
UCSY CS Club Week2UCSY CS Club Week2
UCSY CS Club Week2Ye Linn Wai
 
Extending JBoss EPP and Site Publisher your way
Extending JBoss EPP and Site Publisher your wayExtending JBoss EPP and Site Publisher your way
Extending JBoss EPP and Site Publisher your wayrafaelliu
 
How to Make Your Code OSGi Friendly Without Depending on OSGi - Neil Bartlett
How to Make Your Code OSGi Friendly Without Depending on OSGi - Neil BartlettHow to Make Your Code OSGi Friendly Without Depending on OSGi - Neil Bartlett
How to Make Your Code OSGi Friendly Without Depending on OSGi - Neil Bartlettmfrancis
 
Ch5 beeing an application
Ch5   beeing an applicationCh5   beeing an application
Ch5 beeing an applicationManolis Vavalis
 
Module design pattern i.e. express js
Module design pattern i.e. express jsModule design pattern i.e. express js
Module design pattern i.e. express jsAhmed Assaf
 

What's hot (11)

XDebug For php debugging
XDebug For php debuggingXDebug For php debugging
XDebug For php debugging
 
JAZOON'13 - Andrej Vckovski - Go synchronized
JAZOON'13 - Andrej Vckovski - Go synchronizedJAZOON'13 - Andrej Vckovski - Go synchronized
JAZOON'13 - Andrej Vckovski - Go synchronized
 
[4developers2016] The ultimate mobile DX using JS as a primary language (Fato...
[4developers2016] The ultimate mobile DX using JS as a primary language (Fato...[4developers2016] The ultimate mobile DX using JS as a primary language (Fato...
[4developers2016] The ultimate mobile DX using JS as a primary language (Fato...
 
Angular2 getting started by Stephen Lautier
Angular2 getting started by Stephen LautierAngular2 getting started by Stephen Lautier
Angular2 getting started by Stephen Lautier
 
An introduction to the ruby ecosystem
An introduction to the ruby ecosystemAn introduction to the ruby ecosystem
An introduction to the ruby ecosystem
 
Setting filedynamically
Setting filedynamicallySetting filedynamically
Setting filedynamically
 
UCSY CS Club Week2
UCSY CS Club Week2UCSY CS Club Week2
UCSY CS Club Week2
 
Extending JBoss EPP and Site Publisher your way
Extending JBoss EPP and Site Publisher your wayExtending JBoss EPP and Site Publisher your way
Extending JBoss EPP and Site Publisher your way
 
How to Make Your Code OSGi Friendly Without Depending on OSGi - Neil Bartlett
How to Make Your Code OSGi Friendly Without Depending on OSGi - Neil BartlettHow to Make Your Code OSGi Friendly Without Depending on OSGi - Neil Bartlett
How to Make Your Code OSGi Friendly Without Depending on OSGi - Neil Bartlett
 
Ch5 beeing an application
Ch5   beeing an applicationCh5   beeing an application
Ch5 beeing an application
 
Module design pattern i.e. express js
Module design pattern i.e. express jsModule design pattern i.e. express js
Module design pattern i.e. express js
 

Viewers also liked

C2.hm1.p3.s2. causas de la guerra de independencia
C2.hm1.p3.s2. causas de la guerra de independenciaC2.hm1.p3.s2. causas de la guerra de independencia
C2.hm1.p3.s2. causas de la guerra de independenciaMartín Ramírez
 
Rolls-Royce Ends Production of Phantom VII
Rolls-Royce Ends Production of Phantom VIIRolls-Royce Ends Production of Phantom VII
Rolls-Royce Ends Production of Phantom VIIRobert Taurosa
 
Güvenli Yazılım Geliştirmede Dosya Yükleme
Güvenli Yazılım Geliştirmede Dosya YüklemeGüvenli Yazılım Geliştirmede Dosya Yükleme
Güvenli Yazılım Geliştirmede Dosya YüklemeBGA Cyber Security
 
Juarez sanchez miriam_ m2s3_importanciadelaescritura
Juarez sanchez miriam_ m2s3_importanciadelaescrituraJuarez sanchez miriam_ m2s3_importanciadelaescritura
Juarez sanchez miriam_ m2s3_importanciadelaescrituraMiry Juarez
 
kimyasal atik dokuntu sizinti damlama paleti doga dostu toplama kuveti imalat...
kimyasal atik dokuntu sizinti damlama paleti doga dostu toplama kuveti imalat...kimyasal atik dokuntu sizinti damlama paleti doga dostu toplama kuveti imalat...
kimyasal atik dokuntu sizinti damlama paleti doga dostu toplama kuveti imalat...ilannn
 
Medios sociales y RRHH: impacto
Medios sociales y RRHH: impactoMedios sociales y RRHH: impacto
Medios sociales y RRHH: impactoGonzalo Martín
 
Benh utp cho sau dai hoc 2016
Benh utp cho sau dai hoc 2016Benh utp cho sau dai hoc 2016
Benh utp cho sau dai hoc 2016phuong tran
 
L'entrepreneur canadien - Denis Vincent
L'entrepreneur canadien - Denis VincentL'entrepreneur canadien - Denis Vincent
L'entrepreneur canadien - Denis VincentDenis Vincent
 
Groningen handout recapitulatie ce 17022017
Groningen handout recapitulatie ce 17022017Groningen handout recapitulatie ce 17022017
Groningen handout recapitulatie ce 17022017NederlandCirculair
 
Cuentas Anuales Consolidadas Vocento 2007
Cuentas Anuales Consolidadas Vocento 2007Cuentas Anuales Consolidadas Vocento 2007
Cuentas Anuales Consolidadas Vocento 2007Gonzalo Martín
 

Viewers also liked (18)

Kizoa
KizoaKizoa
Kizoa
 
Practica 1
Practica 1 Practica 1
Practica 1
 
Unid3t3a
Unid3t3aUnid3t3a
Unid3t3a
 
C2.hm1.p3.s2. causas de la guerra de independencia
C2.hm1.p3.s2. causas de la guerra de independenciaC2.hm1.p3.s2. causas de la guerra de independencia
C2.hm1.p3.s2. causas de la guerra de independencia
 
Examen oftalmológico
Examen oftalmológicoExamen oftalmológico
Examen oftalmológico
 
Rolls-Royce Ends Production of Phantom VII
Rolls-Royce Ends Production of Phantom VIIRolls-Royce Ends Production of Phantom VII
Rolls-Royce Ends Production of Phantom VII
 
Güvenli Yazılım Geliştirmede Dosya Yükleme
Güvenli Yazılım Geliştirmede Dosya YüklemeGüvenli Yazılım Geliştirmede Dosya Yükleme
Güvenli Yazılım Geliştirmede Dosya Yükleme
 
Juarez sanchez miriam_ m2s3_importanciadelaescritura
Juarez sanchez miriam_ m2s3_importanciadelaescrituraJuarez sanchez miriam_ m2s3_importanciadelaescritura
Juarez sanchez miriam_ m2s3_importanciadelaescritura
 
Essay 2 - Final PDF
Essay 2 - Final PDFEssay 2 - Final PDF
Essay 2 - Final PDF
 
kimyasal atik dokuntu sizinti damlama paleti doga dostu toplama kuveti imalat...
kimyasal atik dokuntu sizinti damlama paleti doga dostu toplama kuveti imalat...kimyasal atik dokuntu sizinti damlama paleti doga dostu toplama kuveti imalat...
kimyasal atik dokuntu sizinti damlama paleti doga dostu toplama kuveti imalat...
 
Medios sociales y RRHH: impacto
Medios sociales y RRHH: impactoMedios sociales y RRHH: impacto
Medios sociales y RRHH: impacto
 
Oriola-KD: vuosikertomus 2016
Oriola-KD: vuosikertomus 2016Oriola-KD: vuosikertomus 2016
Oriola-KD: vuosikertomus 2016
 
Benh utp cho sau dai hoc 2016
Benh utp cho sau dai hoc 2016Benh utp cho sau dai hoc 2016
Benh utp cho sau dai hoc 2016
 
L'entrepreneur canadien - Denis Vincent
L'entrepreneur canadien - Denis VincentL'entrepreneur canadien - Denis Vincent
L'entrepreneur canadien - Denis Vincent
 
Groningen handout recapitulatie ce 17022017
Groningen handout recapitulatie ce 17022017Groningen handout recapitulatie ce 17022017
Groningen handout recapitulatie ce 17022017
 
Utmana livet del 1
Utmana livet del 1Utmana livet del 1
Utmana livet del 1
 
Cuentas Anuales Consolidadas Vocento 2007
Cuentas Anuales Consolidadas Vocento 2007Cuentas Anuales Consolidadas Vocento 2007
Cuentas Anuales Consolidadas Vocento 2007
 
Ride on pdf
Ride on pdfRide on pdf
Ride on pdf
 

Similar to Let's Go

Digital Pebble Behemoth
Digital Pebble BehemothDigital Pebble Behemoth
Digital Pebble BehemothSteve Loughran
 
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 frameworksKaty Slemon
 
Building CLIs with Ruby
Building CLIs with RubyBuilding CLIs with Ruby
Building CLIs with Rubydrizzlo
 
The Ring programming language version 1.6 book - Part 6 of 189
The Ring programming language version 1.6 book - Part 6 of 189The Ring programming language version 1.6 book - Part 6 of 189
The Ring programming language version 1.6 book - Part 6 of 189Mahmoud Samir Fayed
 
Intro to Perfect - LA presentation
Intro to Perfect - LA presentationIntro to Perfect - LA presentation
Intro to Perfect - LA presentationTim Taplin
 
Building Server Applications Using ObjectiveC And GNUstep
Building Server Applications Using ObjectiveC And GNUstepBuilding Server Applications Using ObjectiveC And GNUstep
Building Server Applications Using ObjectiveC And GNUstepguest9efd1a1
 
Building Server Applications Using Objective C And Gn Ustep
Building Server Applications Using Objective C And Gn UstepBuilding Server Applications Using Objective C And Gn Ustep
Building Server Applications Using Objective C And Gn Ustepwangii
 
Sybsc cs sem 3 core java
Sybsc cs sem 3 core javaSybsc cs sem 3 core java
Sybsc cs sem 3 core javaWE-IT TUTORIALS
 
“Bootify your app - from zero to hero
“Bootify  your app - from zero to hero“Bootify  your app - from zero to hero
“Bootify your app - from zero to heroIzzet Mustafaiev
 
Aucklug slides - desktop tips and tricks
Aucklug slides - desktop tips and tricksAucklug slides - desktop tips and tricks
Aucklug slides - desktop tips and tricksGlen Ogilvie
 
[Mas 500] Software Development Strategies
[Mas 500] Software Development Strategies[Mas 500] Software Development Strategies
[Mas 500] Software Development Strategiesrahulbot
 
Normalizing x pages web development
Normalizing x pages web development Normalizing x pages web development
Normalizing x pages web development Shean McManus
 
Introduction to go lang
Introduction to go langIntroduction to go lang
Introduction to go langAmal Mohan N
 
A Fabric/Puppet Build/Deploy System
A Fabric/Puppet Build/Deploy SystemA Fabric/Puppet Build/Deploy System
A Fabric/Puppet Build/Deploy Systemadrian_nye
 
Presentación rs232 java
Presentación rs232 javaPresentación rs232 java
Presentación rs232 javaJohn Rojas
 
Bootify Yyour App from Zero to Hero
Bootify Yyour App from Zero to HeroBootify Yyour App from Zero to Hero
Bootify Yyour App from Zero to HeroEPAM
 
Puppet - Configuration Management Made Eas(ier)
Puppet - Configuration Management Made Eas(ier)Puppet - Configuration Management Made Eas(ier)
Puppet - Configuration Management Made Eas(ier)Aaron Bernstein
 
Where's the source, Luke? : How to find and debug the code behind Plone
Where's the source, Luke? : How to find and debug the code behind PloneWhere's the source, Luke? : How to find and debug the code behind Plone
Where's the source, Luke? : How to find and debug the code behind PloneVincenzo Barone
 
RSYSLOG v8 improvements and how to write plugins in any language.
RSYSLOG v8 improvements and how to write plugins in any language.RSYSLOG v8 improvements and how to write plugins in any language.
RSYSLOG v8 improvements and how to write plugins in any language.Rainer Gerhards
 
Java Performance, Threading and Concurrent Data Structures
Java Performance, Threading and Concurrent Data StructuresJava Performance, Threading and Concurrent Data Structures
Java Performance, Threading and Concurrent Data StructuresHitendra Kumar
 

Similar to Let's Go (20)

Digital Pebble Behemoth
Digital Pebble BehemothDigital Pebble Behemoth
Digital Pebble Behemoth
 
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
 
Building CLIs with Ruby
Building CLIs with RubyBuilding CLIs with Ruby
Building CLIs with Ruby
 
The Ring programming language version 1.6 book - Part 6 of 189
The Ring programming language version 1.6 book - Part 6 of 189The Ring programming language version 1.6 book - Part 6 of 189
The Ring programming language version 1.6 book - Part 6 of 189
 
Intro to Perfect - LA presentation
Intro to Perfect - LA presentationIntro to Perfect - LA presentation
Intro to Perfect - LA presentation
 
Building Server Applications Using ObjectiveC And GNUstep
Building Server Applications Using ObjectiveC And GNUstepBuilding Server Applications Using ObjectiveC And GNUstep
Building Server Applications Using ObjectiveC And GNUstep
 
Building Server Applications Using Objective C And Gn Ustep
Building Server Applications Using Objective C And Gn UstepBuilding Server Applications Using Objective C And Gn Ustep
Building Server Applications Using Objective C And Gn Ustep
 
Sybsc cs sem 3 core java
Sybsc cs sem 3 core javaSybsc cs sem 3 core java
Sybsc cs sem 3 core java
 
“Bootify your app - from zero to hero
“Bootify  your app - from zero to hero“Bootify  your app - from zero to hero
“Bootify your app - from zero to hero
 
Aucklug slides - desktop tips and tricks
Aucklug slides - desktop tips and tricksAucklug slides - desktop tips and tricks
Aucklug slides - desktop tips and tricks
 
[Mas 500] Software Development Strategies
[Mas 500] Software Development Strategies[Mas 500] Software Development Strategies
[Mas 500] Software Development Strategies
 
Normalizing x pages web development
Normalizing x pages web development Normalizing x pages web development
Normalizing x pages web development
 
Introduction to go lang
Introduction to go langIntroduction to go lang
Introduction to go lang
 
A Fabric/Puppet Build/Deploy System
A Fabric/Puppet Build/Deploy SystemA Fabric/Puppet Build/Deploy System
A Fabric/Puppet Build/Deploy System
 
Presentación rs232 java
Presentación rs232 javaPresentación rs232 java
Presentación rs232 java
 
Bootify Yyour App from Zero to Hero
Bootify Yyour App from Zero to HeroBootify Yyour App from Zero to Hero
Bootify Yyour App from Zero to Hero
 
Puppet - Configuration Management Made Eas(ier)
Puppet - Configuration Management Made Eas(ier)Puppet - Configuration Management Made Eas(ier)
Puppet - Configuration Management Made Eas(ier)
 
Where's the source, Luke? : How to find and debug the code behind Plone
Where's the source, Luke? : How to find and debug the code behind PloneWhere's the source, Luke? : How to find and debug the code behind Plone
Where's the source, Luke? : How to find and debug the code behind Plone
 
RSYSLOG v8 improvements and how to write plugins in any language.
RSYSLOG v8 improvements and how to write plugins in any language.RSYSLOG v8 improvements and how to write plugins in any language.
RSYSLOG v8 improvements and how to write plugins in any language.
 
Java Performance, Threading and Concurrent Data Structures
Java Performance, Threading and Concurrent Data StructuresJava Performance, Threading and Concurrent Data Structures
Java Performance, Threading and Concurrent Data Structures
 

Recently uploaded

Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
What are the features of Vehicle Tracking System?
What are the features of Vehicle Tracking System?What are the features of Vehicle Tracking System?
What are the features of Vehicle Tracking System?Watsoo Telematics
 
XpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsXpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsMehedi Hasan Shohan
 
buds n tech IT solutions
buds n  tech IT                solutionsbuds n  tech IT                solutions
buds n tech IT solutionsmonugehlot87
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyFrank van der Linden
 
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - InfographicHr365.us smith
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...aditisharan08
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationkaushalgiri8080
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 

Recently uploaded (20)

Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
What are the features of Vehicle Tracking System?
What are the features of Vehicle Tracking System?What are the features of Vehicle Tracking System?
What are the features of Vehicle Tracking System?
 
XpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsXpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software Solutions
 
buds n tech IT solutions
buds n  tech IT                solutionsbuds n  tech IT                solutions
buds n tech IT solutions
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The Ugly
 
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - Infographic
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanation
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 

Let's Go

  • 3. EXPLORATIONS ➤ GO /Golang : Programming Language from Google ➤ Very small language footprint ➤ No multitude of options to accomplish a task. ➤ Easy to learn, Quick to build stuff. ➤ Tuned for concurrent tasks, multi core systems, does memory management too! ➤ Small memory footprint (compared to Java/Scala) ➤ Availability of packages for most needs, open source tools / systems
  • 4. “In the Python version, our best shot at making use of all available cores is to run each publisher and subscriber routine in a separate Python interpreter, each running on a single OS process. Go’s goroutines paint an entirely different picture. With only a single pub-sub client, we’re able to consume all available CPU cores using a single OS process - Go manages all of the parallelism for you. -A tale of two queues: http://blog.jupo.org/2013/02/23/a-tale-of-two-queues/
  • 6. HELLO YOU! ➤ functions and data grouped in packages ➤ One main package and one main function ➤ import packages ➤ no semi colons ➤ var declaration ➤ inferred type ➤ quick definition ➤ basic data types ➤ Arrays/slices, map, channel
  • 7. DO MORE AT SAME TIME ➤ functions can return multiple values, last one is always an error ➤ if with no braces, no semi colons, less to type ➤ neither pure functional nor object oriented ➤ Anonymous functions/ functions as values ➤ go routines - do stuff in parallel ➤ defer function - similar to destructors ➤ panic and recoverWhat is Pr?
  • 8. “No classes and inheritance, still we can get stuff done with types and functions associated with the type. Duck typing / Structural typing lets data structures makes data structures and functions more useful and behaviour driven No threads /mutexes/semaphores still we can have concurrent processing and co- ordintation among multiple concurrent processing routines.
  • 9. I MISS MY CLASSES ➤ struct - a custom type that contains other types (custom / basic) ➤ Any struct member name that starts with Uppercase letter is public ➤ Any function which specifies a struct as a receiver of the function call, is similar to methods of the struct ➤ Note the difference in specifying the receiver - pass by value/ref ➤ interface - declares the expected behaviour ➤ No one implements the interface ➤ Any type that has the behaviour mentioned in the interface automatically is of the same ‘type’ as that of the interface.
  • 10. MULTITASKING VIA MESSAGES ➤ Buffered/Blocking channels as message streams ➤ go routines can send/receive messages from channels ➤ Use select for receiving messages from multiple channels ➤ Simple http server ➤ easy to build and host APIs echo WebApp
  • 12. GONOTIFY - NOTIFICATION SERVICE Chat Services gonotify* App Receive over Websocket Initiate Chat NotifyAPIForWebSocket Time Taken (Including learning Go from Scratch) : 7 days Redis
  • 13. GOCHECK - PR CHECKER Time Taken (Including Refreshing Go) : 4 hours ➤ Uses github APIs to pull all PRs ➤ Validates PR age and description ➤ Add comments to PR if agent is more than the threshold and length of description is less than the threshold ➤ Cross compiled to run in Linux box
  • 14. REFERENCES Chapter 1 will give head start Refer further chapters on need basis Available in Safari Books online http://devslovebacon.com/conferences/bacon-2013/talks/why-node-and-scala-will-dry- up-go-will-drink-their-milkshake https://golang.org