SlideShare a Scribd company logo
1 of 114
AUTOMATE OR DIE!
Trotter Cashion / Strange Loop 2010
                        http://pinktentacle.com/images/irex2009_4_large.jpg
CO-FOUNDER
@CASHION




   http://www.charlesheflin.com/wp-content/uploads/2010/06/fail-whale.jpg
github.com/trotter




http://gems.github.com/octocat.png
AGENDA
THE MANUAL PROBLEM
CHEF SERVER VS. CHEF SOLO
COOKBOOK INTERNALS
GOING WAY BACK




         http://www.ameshistoricalsociety.org/identify/old_car1.jpg
FORD VS. THE OTHER GUYS
Pre-Ford (?-1907)     Model T (1915)


 $2,000 - $3,000          $850


  Made by hand        Assembly Line


12.5 hours to build     1.5 hours
BY 1930
  250 car companies had died




http://sdo210.files.wordpress.com/2010/05/grantwood-american-gothic-1930.jpg
SO WHAT ABOUT US?




       http://media.photobucket.com/image/nerds%20candy/civy1811/car002.jpg
Most Tech Companies are Essentially
American Auto Companies Pre-Ford
MYSQL




        http://www.dolphinsc.com/images/Dolphin.jpg
POSTGRES




http://images.buycostumes.com/mgen/merchandiser/32494.jpg
APACHE




   http://www.wallpapers-free.org/34/-/Apache_Longbow_Helicopter/
NGINX




http://www.allbestwallpapers.com/travel-kremlin_and_red_square_fireworks,_moscow,_russia_wallpapers.html
Memcached
Memcached
        Redis
Memcached
        Redis
           Mongodb
Memcached
        Redis
           Mongodb Riak
Memcached
        Redis
           Mongodb Riak

                   Cassandra
Memcached
        Redis
           Mongodb Riak

                       Cassandra


                Project Voldemort
Memcached
        Redis
           Mongodb Riak

       Ubuntu          Cassandra


                Project Voldemort
Memcached
        Redis         Redhat
           Mongodb Riak

       Ubuntu          Cassandra


                Project Voldemort
Memcached
        Redis           Redhat
   Solaris   Mongodb Riak

       Ubuntu          Cassandra


                Project Voldemort
Memcached         iptables
        Redis           Redhat
   Solaris   Mongodb Riak

       Ubuntu          Cassandra


                Project Voldemort
Memcached         iptables
        Redis           Redhat
   Solaris   Mongodb Riak

       Ubuntu             Cassandra
                   sshd
                Project Voldemort
Memcached         iptables
        Redis         Redhat
  Solaris  Mongodb Riak
DNS Servers
       Ubuntu             Cassandra
                   sshd
                Project Voldemort
Memcached            iptables
        Redis           Redhat
  Solaris    Mongodb Riak
DNS Servers
       Ubuntu                Cassandra
                      sshd
TCP/IP internals
                   Project Voldemort
We Idolize the Artisan Sysadmin
... but what do we end up with?
SNOWFLAKES
     ... that become avalanches




http://www.enviro-bc.ca/wp-content/uploads/2009/04/bowlake-aval_clair-israelson.jpg
HEISENBUGS




http://osulibrary.oregonstate.edu/specialcollections/coll/nonspcoll/catalogue/portrait-heisenberg-600w.jpg
NO MORE MONEY!




      http://assets.troubledteenswizard.com/uploaded/WoW/nomoney1.jpg
We’re really left with two choices
Automate... or die.
Automation is not hard!
CFENGINE




http://hackedgadgets.com/wp-content/2/LEGO_V8_Engine_1.jpg
PUPPET




   http://www.flickr.com/photos/willemvelthoven/381608678/sizes/l/
CHEF!




   http://www.flickr.com/photos/venndiagram/4891510333/sizes/l/
WRITTEN BY




             http://www.opscode.com/
WRITTEN IN




     http://www.prestonlee.com/wp-content/uploads/2008/09/ruby.png
Two Delicious Flavors
SERVER




http://upload.wikimedia.org/wikipedia/commons/e/e0/Google%E2%80%99s_First_Production_Server.jpg
HOW IT WORKS
HOW IT WORKS

      Your
    Computer
HOW IT WORKS

              Your
            Computer




 Box to
Provision
HOW IT WORKS

              Your
            Computer




 Box to
                       Chef Server
Provision
HOW IT WORKS

               Your
             Computer
Prepare


  Box to
                        Chef Server
 Provision
HOW IT WORKS

                Your
              Computer
Prepare

             What now?
  Box to
                         Chef Server
 Provision
HOW IT WORKS

                Your
              Computer
Prepare                    Cookbooks

             What now?
  Box to
                         Chef Server
 Provision
HOW IT WORKS

                Your
              Computer
Prepare                    Cookbooks

             What now?
  Box to
                         Chef Server
 Provision
                Run!
SOLO




http://www.pbs.org/parents/supersisters/han_solo-thumb-454x654.jpg
HOW IT WORKS
HOW IT WORKS


  Your
Computer
HOW IT WORKS


  Your         Box to
Computer      Provision
HOW IT WORKS

           Prepare
  Your                Box to
Computer             Provision
HOW IT WORKS

            Prepare
  Your                  Box to
Computer
           Cookbooks   Provision
HOW IT WORKS

            Prepare
  Your                  Box to
Computer
           Cookbooks   Provision
              Go!
Chef Structure
CHEF HEIRARCHY
                         Node



       Roles                             Cookbooks



Cookbooks



     Recipes    Attributes   Templates   Definitions
ROLES ARE REUSABLE!

 config/dev.json   config/db.json



           roles/db.rb
GETTING
              GOING




http://www.flickr.com/photos/seandreilinger/959864706/sizes/o/
WHAT YOU NEED
WHAT YOU NEED
           Ruby &
          Rubygems
WHAT YOU NEED
                      Ruby &
                     Rubygems



`gem install chef`   Chef Gem
WHAT YOU NEED
                                 Ruby &
                                Rubygems



     `gem install chef`         Chef Gem



`git clone http://github.com/
                                Chef Repo
   opscode/chef-repo.git`
COOKBOOKS.OPSCODE.COM




                 http://cookbooks.opscode.com/
TERMINAL JUNKIES
TERMINAL JUNKIES
•spatula   search mysql
TERMINAL JUNKIES
•spatula   search mysql
•spatula   install mysql
TERMINAL JUNKIES
•spatula   search mysql
•spatula   install mysql
•spatula   show mysql
TERMINAL JUNKIES
•spatula     search mysql
•spatula     install mysql
•spatula     show mysql
•... knife   has similar functionality
GET THE BOX READY

                                ssh db-one.host “install ruby”
spatula prepare db-one.host =
                                ssh db-one.host “install chef”
GO GO GO!

                                 rsync repo to db-one.host

spatula cook db-one.host db = ssh db-one.host “sudo 
                                chef-solo -c config/solo.rb 
                                -j config/db.json”
WITH CHEF SERVER
    install dependencies


       turn on client


  send cookbooks to client
DIGGING DEEPER




    http://media.photobucket.com/image/minecraft/bluekabal/roma/minesofroma.jpg
CHEF HEIRARCHY
                         Node



       Roles                             Cookbooks



Cookbooks



     Recipes    Attributes   Templates   Definitions
A NODE
// ./config/db_one.json
{ "run_list": ["role[db]"] }


        Recipes and Roles go here
CHEF HEIRARCHY
                         Node



       Roles                             Cookbooks



Cookbooks



     Recipes    Attributes   Templates   Definitions
A ROLE
# ./roles/db.rb
name "database"
description "Be a DB"
run_list [ "apache2", "mysql::server" ]
A ROLE
# ./roles/db.rb
name "database"
                            Recipes to run
description "Be a DB"
run_list [ "apache2", "mysql::server" ]
A ROLE
# ./roles/db.rb
name "database"
description "Be a DB"
run_list [ "apache2", "mysql::server" ]


  ./cookbooks/apache2/recipes/default.rb
A ROLE
# ./roles/db.rb
name "database"
description "Be a DB"
run_list [ "apache2", "mysql::server" ]


                  ./cookbooks/mysql/recipes/server.rb
CHEF HEIRARCHY
                         Node



       Roles                             Cookbooks



Cookbooks



     Recipes    Attributes   Templates   Definitions
ATTRIBUTES
# ./cookbooks/mysql/attributes/server.rb
default[:mysql][:server_debian_password]   =   secure_password
default[:mysql][:server_root_password]     =   secure_password
default[:mysql][:server_repl_password]     =   secure_password
default[:mysql][:bind_address]             =   ipaddress
default[:mysql][:datadir]                  =   "/var/lib/mysql"

# Tunables
default[:mysql][:tunable][:key_buffer]              = "250M"
default[:mysql][:tunable][:max_connections]         = "800"
default[:mysql][:tunable][:wait_timeout]            = "180"
OVERRIDING ATTRIBUTES
   Node
// ./config/db.json
{ "mysql": { "server_root_password": "beefcake" },
  "recipes": [ "mysql" ] }



   Role
# ./roles/db.rb
name "database"
description "Be a DB"
run_list [ "mysql::server" ]
default_attributes :mysql => { :server_root_password =>
                               "beefcake" }
CHEF HEIRARCHY
                         Node



       Roles                             Cookbooks



Cookbooks



     Recipes    Attributes   Templates   Definitions
THE RECIPE... PART 1
# ./cookbooks/mysql/recipes/server.rb
include_recipe "mysql::client"
THE RECIPE... PART 2
package "mysql-server" do
  action :install
end
THE RECIPE... PART 3
template "/etc/mysql/my.cnf" do
  source "my.cnf.erb"
  owner "root"
  group "root"
  mode "0644"
  notifies :restart,
           resources(:service => "mysql"),
           :immediately
end
CHEF HEIRARCHY
                         Node



       Roles                             Cookbooks



Cookbooks



     Recipes    Attributes   Templates   Definitions
A TEMPLATE SAMPLE
user            =   mysql
pid-file        =   /var/run/mysqld/mysqld.pid
socket          =   /var/run/mysqld/mysqld.sock
datadir         =   <%= @datadir %>
bind-address    =   <%= @node[:mysql][:bind_address] %>
A TEMPLATE SAMPLE
user            =   mysql
pid-file        =   /var/run/mysqld/mysqld.pid
socket          =   /var/run/mysqld/mysqld.sock
datadir         =   <%= @datadir %>
bind-address    =   <%= @node[:mysql][:bind_address] %>


                               OMG, ERB!!
A TEMPLATE SAMPLE
user            =   mysql
pid-file        =   /var/run/mysqld/mysqld.pid
socket          =   /var/run/mysqld/mysqld.sock
datadir         =   <%= @datadir %>
bind-address    =   <%= @node[:mysql][:bind_address] %>


                               From Attributes
A TEMPLATE SAMPLE
user            =   mysql
pid-file        =   /var/run/mysqld/mysqld.pid
socket          =   /var/run/mysqld/mysqld.sock
datadir         =   <%= @datadir %>     From Template
bind-address    =   <%= @node[:mysql][:bind_address] %>
ASSIGNING VARIABLES
template "/etc/mysql/my.cnf" do
  source "my.cnf.erb"
  owner "root"
  group "root"
  mode "0644"
  variables :datadir => “/var/lib/mysql”
end
CHEF HEIRARCHY
                         Node



       Roles                             Cookbooks



Cookbooks



     Recipes    Attributes   Templates   Definitions
DEFINITIONS
define :apache_conf do
  dir = node[:apache][:dir]
  template "#{dir}/mods-available/#{params[:name]}.conf" do
    source "mods/#{params[:name]}.conf.erb"
    notifies :restart, resources(:service => "apache2")
  end
end

# In your recipe
apache_conf "mod_ssl"
LET’S
                  WRAP
                  IT U P




http://www.flickr.com/photos/andresthor/3946773501/sizes/l/in/photostream/
AUTOMATE EVERYTHING!!




            http://www.flickr.com/photos/kenfagerdotcom/3409813881/
Deploying == Provisioning
USE CHEF!!!!!




      http://www.flickr.com/photos/martin_borjesson/4083726805/sizes/o/
ON THE INTERNETS
ON THE INTERNETS
•twitter   - @cashion
ON THE INTERNETS
•twitter   - @cashion
•github    - http://github.com/trotter
ON THE INTERNETS
•twitter   - @cashion
•github    - http://github.com/trotter
•email   - cashion on the gmailz
DOMO ARIGATO




       http://www.flickr.com/photos/dancoulter/21042744/sizes/o/
RESOURCES
RESOURCES
• http://wiki.opscode.com/display/chef/Resources
RESOURCES
• http://wiki.opscode.com/display/chef/Resources

•#chef   on freenode
RESOURCES
• http://wiki.opscode.com/display/chef/Resources

•#chef   on freenode
•cashion@gmail.com

More Related Content

What's hot

Chef Fundamentals Training Series Module 4: The Chef Client Run and Expanding...
Chef Fundamentals Training Series Module 4: The Chef Client Run and Expanding...Chef Fundamentals Training Series Module 4: The Chef Client Run and Expanding...
Chef Fundamentals Training Series Module 4: The Chef Client Run and Expanding...
Chef Software, Inc.
 

What's hot (20)

Lights, Camera, Docker: Streaming Video at DramaFever
Lights, Camera, Docker: Streaming Video at DramaFeverLights, Camera, Docker: Streaming Video at DramaFever
Lights, Camera, Docker: Streaming Video at DramaFever
 
Chef
ChefChef
Chef
 
Getting Started with Ansible
Getting Started with AnsibleGetting Started with Ansible
Getting Started with Ansible
 
Chef Fundamentals Training Series Module 2: Workstation Setup
Chef Fundamentals Training Series Module 2: Workstation SetupChef Fundamentals Training Series Module 2: Workstation Setup
Chef Fundamentals Training Series Module 2: Workstation Setup
 
Cool like a Frontend Developer: Grunt, RequireJS, Bower and other Tools
Cool like a Frontend Developer: Grunt, RequireJS, Bower and other ToolsCool like a Frontend Developer: Grunt, RequireJS, Bower and other Tools
Cool like a Frontend Developer: Grunt, RequireJS, Bower and other Tools
 
Automated infrastructure is on the menu
Automated infrastructure is on the menuAutomated infrastructure is on the menu
Automated infrastructure is on the menu
 
Using Sinatra to Build REST APIs in Ruby
Using Sinatra to Build REST APIs in RubyUsing Sinatra to Build REST APIs in Ruby
Using Sinatra to Build REST APIs in Ruby
 
Chef Fundamentals Training Series Module 4: The Chef Client Run and Expanding...
Chef Fundamentals Training Series Module 4: The Chef Client Run and Expanding...Chef Fundamentals Training Series Module 4: The Chef Client Run and Expanding...
Chef Fundamentals Training Series Module 4: The Chef Client Run and Expanding...
 
Chef
ChefChef
Chef
 
Ruby talk romania
Ruby talk romaniaRuby talk romania
Ruby talk romania
 
Brasil Ross 2011
Brasil Ross 2011Brasil Ross 2011
Brasil Ross 2011
 
Rocket Fuelled Cucumbers
Rocket Fuelled CucumbersRocket Fuelled Cucumbers
Rocket Fuelled Cucumbers
 
Chef: Smart infrastructure automation
Chef: Smart infrastructure automationChef: Smart infrastructure automation
Chef: Smart infrastructure automation
 
The unintended benefits of Chef
The unintended benefits of ChefThe unintended benefits of Chef
The unintended benefits of Chef
 
Nginx Workshop Aftermath
Nginx Workshop AftermathNginx Workshop Aftermath
Nginx Workshop Aftermath
 
Puppet at janrain
Puppet at janrainPuppet at janrain
Puppet at janrain
 
Consegi 2010 - Dicas de Desenvolvimento Web com Ruby
Consegi 2010 - Dicas de Desenvolvimento Web com RubyConsegi 2010 - Dicas de Desenvolvimento Web com Ruby
Consegi 2010 - Dicas de Desenvolvimento Web com Ruby
 
Performance testing crash course (Dustin Whittle)
Performance testing crash course (Dustin Whittle)Performance testing crash course (Dustin Whittle)
Performance testing crash course (Dustin Whittle)
 
Ansible for beginners ...?
Ansible for beginners ...?Ansible for beginners ...?
Ansible for beginners ...?
 
Introduction to Chef
Introduction to ChefIntroduction to Chef
Introduction to Chef
 

Similar to Automate or Die

chef loves windows
chef loves windowschef loves windows
chef loves windows
Mat Schaffer
 
Rails Presentation (Anton Dmitriyev)
Rails Presentation (Anton Dmitriyev)Rails Presentation (Anton Dmitriyev)
Rails Presentation (Anton Dmitriyev)
True-Vision
 

Similar to Automate or Die (20)

chef loves windows
chef loves windowschef loves windows
chef loves windows
 
Cloud Automation with Opscode Chef
Cloud Automation with Opscode ChefCloud Automation with Opscode Chef
Cloud Automation with Opscode Chef
 
Linecook - A Chef Alternative
Linecook - A Chef AlternativeLinecook - A Chef Alternative
Linecook - A Chef Alternative
 
Chef or how to make computers do the work for us
Chef or how to make computers do the work for usChef or how to make computers do the work for us
Chef or how to make computers do the work for us
 
Cloud Automation with Opscode Chef
Cloud Automation with Opscode ChefCloud Automation with Opscode Chef
Cloud Automation with Opscode Chef
 
infra-as-code
infra-as-codeinfra-as-code
infra-as-code
 
Wordpress y Docker, de desarrollo a produccion
Wordpress y Docker, de desarrollo a produccionWordpress y Docker, de desarrollo a produccion
Wordpress y Docker, de desarrollo a produccion
 
The Docker "Gauntlet" - Introduction, Ecosystem, Deployment, Orchestration
The Docker "Gauntlet" - Introduction, Ecosystem, Deployment, OrchestrationThe Docker "Gauntlet" - Introduction, Ecosystem, Deployment, Orchestration
The Docker "Gauntlet" - Introduction, Ecosystem, Deployment, Orchestration
 
AWS OpsWorks Under the Hood (DMG304) | AWS re:Invent 2013
AWS OpsWorks Under the Hood (DMG304) | AWS re:Invent 2013AWS OpsWorks Under the Hood (DMG304) | AWS re:Invent 2013
AWS OpsWorks Under the Hood (DMG304) | AWS re:Invent 2013
 
Squashing the Heisenbugs
Squashing the HeisenbugsSquashing the Heisenbugs
Squashing the Heisenbugs
 
Cook Infrastructure with chef -- Justeat.IN
Cook Infrastructure with chef  -- Justeat.INCook Infrastructure with chef  -- Justeat.IN
Cook Infrastructure with chef -- Justeat.IN
 
Chef introduction
Chef introductionChef introduction
Chef introduction
 
Rails Presentation (Anton Dmitriyev)
Rails Presentation (Anton Dmitriyev)Rails Presentation (Anton Dmitriyev)
Rails Presentation (Anton Dmitriyev)
 
The Environment Restaurant
The Environment RestaurantThe Environment Restaurant
The Environment Restaurant
 
Ruby on Rails and Docker - Why should I care?
Ruby on Rails and Docker - Why should I care?Ruby on Rails and Docker - Why should I care?
Ruby on Rails and Docker - Why should I care?
 
Mitchell Hashimoto, HashiCorp
Mitchell Hashimoto, HashiCorpMitchell Hashimoto, HashiCorp
Mitchell Hashimoto, HashiCorp
 
Test Driven Development with Chef
Test Driven Development with ChefTest Driven Development with Chef
Test Driven Development with Chef
 
Chef training - Day2
Chef training - Day2Chef training - Day2
Chef training - Day2
 
Chef Tutorial for DEVOPS Newbies
Chef Tutorial for DEVOPS NewbiesChef Tutorial for DEVOPS Newbies
Chef Tutorial for DEVOPS Newbies
 
Cloud Automation with Opscode Chef
Cloud Automation with Opscode ChefCloud Automation with Opscode Chef
Cloud Automation with Opscode Chef
 

Recently uploaded

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 

Recently uploaded (20)

Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 

Automate or Die

Editor's Notes