<!doctype html>
<html lang="en">

  <head>
    <meta charset="utf-8">

    <title>Dev to DevOps</title>

    <meta name="description" content="A framework for easily creating beautiful presentations using HTML">
    <meta name="author" content="Hakim El Hattab">

    <meta name="apple-mobile-web-app-capable" content="yes" />
    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />

    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">

    <link rel="stylesheet" href="css/reveal.min.css">
    <link rel="stylesheet" href="css/theme/sky.css" id="theme">
    <link rel="stylesheet" href="css/dev2devops.css">

    <!-- For syntax highlighting -->
    <link rel="stylesheet" href="lib/css/zenburn.css">

    <!-- If the query includes 'print-pdf', use the PDF print sheet -->
    <script>
      document.write( '<link rel="stylesheet" href="css/print/' + ( window.location.search.match( /print-pdf/gi ) ? 'pdf' : 'paper' ) + '.css" type="text/css" media="print">' );
    </script>

    <!--[if lt IE 9]>
    <script src="lib/js/html5shiv.js"></script>
    <![endif]-->
  </head>
  <body>
    <div class='screen-logo'>
      <div style='position: absolute; left: 20px; bottom: 20px; opacity: 0.5;'>
        <img src='img/constant-contact-logo.png' width='250'>
      </div>
    </div>
    <div class="reveal">
      <!-- Any section element inside of this container is displayed as a slide -->
      <div class="slides">
        <section>
          <h3>Intro to DevOps</h3>
          <p>Hi, my name is Dinshaw.</p>
        </section>

        <section>
          <h2>Computers</h2>
          <p>The cause of &ndash; and the solution to &ndash; all of life's problems.</p>
        </section>


        <section>
          <h2>A Brief History of Computing</h2>
        </section>

        <section>
          <img src="img/colosus.jpg">
          <h3>Mainframe</h3>
        </section>

        <section>
          <img src="img/punch-cards.jpg">
          <h3>Punch Cards</h3>
        </section>

        <section>
          <img src="img/computer.jpg">
          <h3>Personal Computers</h3>
        </section>

        <section class='the-wall-goes-up'>
          <h3><span>Users . . .</span> The Wall <span>. . . Operations</span></h3>
        </section>

        <section>
          <img src="img/patrick.jpg">
          <h3>Patrick Dubois</h3>
          <p>The 'Godfather' of DevOps</p>
        </section>

        <section>
          <h3>10+ Deploys Per Day:</h3>
          <h3>Dev and Ops Cooperation at Flickr</h3>
          <p>John Allspaw and Paul Hammond</p>
          <p>@ Velocity Conference 2009, San Jose</p>
        </section>

        <section>
          <img src="img/spock-scotty.jpg">
        </section>

        <section>
          <h1>#devops</h1>
        </section>

        <section>
          <img src='img/culture.jpg'>
          <h3>Culture</h3>
        </section>

        <section>
          <img src='img/computer.jpg'>
          <h3>Tools</h3>
        </section>

        <section>
          <h3>... habits [tools &amp; culture] that allow us to survive in <em><strong>The Danger Zone</strong></em>.</h3>
        </section>

        <section>
          <h3>TurboTax</h3>
          <p>165 new-feature experiments in the 3 month tax season</p>
          <p><a href="http://network.intuit.com/2011/04/20/leadership-in-the-agile-age/">Economist conference 2011</a></p>
        </section>

        <section>
          <h3>Puppet: State of DevOps Report</h3>
          <p>'DevOps' up 50% on Linkedin keyword searches</p>
        </section>

        <section>
          <h3>Puppet: What is a DevOps Engineer?</h3>
          <ul>
            <li class='fragment'>Coding/Scripting</li>
            <li class='fragment'>Strong grasp of automation tools</li>
            <li class='fragment'>Process re-engineering</li>
            <li class='fragment'>A focus on business outcomes</li>
            <li class='fragment'>Communication &amp; Collaboration</li>
          </ul>
        </section>

        <section>
          <h2>Questions?</h2>
        </section>

        <section>
          <h2>Puppet &amp; Chef</h2>
          <ul>
            <li>Configuration Management</li>
            <li>Portable</li>
            <li>Repeatable</li>
          </ul>
        </section>

        <section>
          <h2>Puppet</h2>
          <ul>
            <li>http://puppetlabs.com/</li>
            <li>Ruby-like</li>
            <li>Modules @ Puppet Forge</li>
          </ul>
          <pre>
            <code>
              package { "gtypist":
                ensure   => installed,
                provider => homebrew,
              }
              package { "redis":
                ensure   => installed,
                provider => homebrew,
              }
            </code>
          </pre>
        </section>

        <section>
          <h2>Chef</h2>
          <ul>
            <li>http://www.getchef.com/</li>
            <li>Opscode</li>
            <li>Ruby</li>
            <li>Cookbooks @ Opscode Community</li>
          </ul>

        <pre>
            <code>
              package "mysql" do
                action :install
              end

              package "redis" do
                action :install
              end
            </code>
          </pre>

        </section>

        <section>
          <h2>Vagrant</h2>
          <p>http://www.vagrantup.com/</p>
          <pre>
            <code>
              Vagrant.configure do |config|
                config.vm.provision "puppet" do |puppet|
                  puppet.manifests_path = "my_manifests"
                  puppet.manifest_file = "default.pp"
                end
              end
            </code>
          </pre>
        </section>

        <section>
          <h2>You build it; you run it.</h2>
          <p>Deliver working code AND the environment it runs in.</p>
        </section>

        <section>
          <h2>T.D.D.</h2>
          <div>
            <blockquote>
              "If you tell the truth, you don't have to remember anything."
            </blockquote>
            <small class="author">- Mark Twain</small>
          </div>
          <p>Dev and Test are no longer separable</p>
        </section>

        <section>
          <h2>What we need from Ops</h2>
          <ul>
            <li class='fragment'>One button environment</li>
            <li class='fragment'>One button deploy</li>
          </ul>
        </section>



        <section>
          <h3>First Steps:</h3>
          <ul>
            <li class='fragment'>Automate something simple</li>
              <ul>
                <li class='fragment'>White space</li>
                <li class='fragment'>Dev Log rotation</li>
                <li class='fragment'><a href="http://dotfiles.github.io/">.Dotfiles</a></li>
              </ul>
            <li class='fragment'>Automate something not-so-simple</li>
              <ul>
                <li class='fragment'>Development machine configuration</li>
                <li class='fragment'>Production configuration</li>
              </ul>
          </ul>
        </section>

        <section>
          <h3>Questions?</h3>
        </section>

  <section>
          <h2>Google SRE</h2>
          <p class='fragment'>Hand-off Readiness Review</p>
          <ul>
            <li class='fragment'>Types/Frequency of defects</li>
            <li class='fragment'>Maturity of monitoring</li>
            <li class='fragment'>Release process</li>
          </ul>
        </section>

        <section>
          <h2><a href="http://techblog.netflix.com/2012/07/chaos-monkey-released-into-wild.html">Netflix: Chaos Monkey</a></h2>
          <p>April 21st, 2011 Amazon Web Service outage</p>
          <p>Netfilx maintained availability</p>
        </section>

        <section>
          <h2><a href="https://blog.twitter.com/2010/murder-fast-datacenter-code-deploys-using-bittorrent">Twitter Murder!</a></h2>
          <p class='fragment'>40 minute to  12 seconds!</p>
        </section>

        <section>
          <h2><a href="http://www.youtube.com/watch?v=-LxavzqLHj8">ChatOps at Github</a></h2>
          <p>Automating common operational tasks with Hu-Bot</p>
          <img src='img/hu-bot.jpg'>
        </section>

        <section>
          <h3>
            <a href='http://assets.en.oreilly.com/1/event/60/Velocity%20Culture%20Presentation.pdf'>Amazon @ O'rily Velocity Conf. 2011</a>
          </h3>
          <ul>
            <li class='fragment'>A deploy every 11.6 seconds</li>
            <li class='fragment'>Max deployments per hour: 10,000</li>
            <li class='fragment'>30,000 hosts simultaneously receiving a deployment</li>
          </ul>
        </section>

        <section class='links'>
          <ul>
            <li><a href="http://www.devopsdays.org/">DevOpsDays</a></li>
            <li><a href='http://velocityconf.com/velocity2009'>Velocity Conference 2009, San Jose</a></li>
            <li><a href='http://velocityconference.blip.tv/file/2284377/'>10+ Deploys Per Day: Dev and Ops Cooperation at Flickr</a></li>
            <li><a href='http://continuousdelivery.com/2012/10/theres-no-such-thing-as-a-devops-team/'>No such thing as a DevOps team</a></li>
            <li><a href='http://www.youtube.com/watch?v=disjFj4ruHg'>Why We Need DevOps Now</a></li>
            <li><a href='http://info.puppetlabs.com/2013-state-of-devops-report.html'>State of DevOps 2013 - Puppet Report</a></li>
            <li><a href="http://network.intuit.com/2011/04/20/leadership-in-the-agile-age/">Scott Cook on TurboTax @ Economist conference 2011</a></li>
            <li><a href="http://dotfiles.github.io/">.Dotfiles</a></li>
            <li><a href="http://docs.puppetlabs.com/learning/">Learning Puppet</a></li>
            <li><a href="http://forge.puppetlabs.com/">Puppet Forge</a></li>
            <li><a href='http://boxen.github.com/'>Boxen</a></li>
            <li><a href="http://vimeo.com/61172067">Boxen presentation: Managing an army of laptops</a></li>
            <li><a href='http://www.opscode.com/chef/'>Opscode</a></li>
            <li><a href="http://docs.opscode.com/">Learning Chef</a></li>
            <li><a href="https://github.com/opscode-cookbooks">Chef Cookbooks</a></li>
            <li><a href='http://www.youtube.com/watch?v=ZC91gZv-Uao'>Chef intro: TDDing tmux</a></li>
            <li><a href="http://techblog.netflix.com/2012/07/chaos-monkey-released-into-wild.html">Netflix: Chaos Monkey</a></li>
            <li><a href="https://blog.twitter.com/2010/murder-fast-datacenter-code-deploys-using-bittorrent">Twitter Murder!</a></li>
            <li><a href="http://www.youtube.com/watch?v=-LxavzqLHj8">ChatOps at Github</a></li>
            <li><a href="http://assets.en.oreilly.com/1/event/60/Velocity%20Culture%20Presentation.pdf">Amazon: A deploy every 11 seconds slides</a></li>
            <li><a href='http://vimeo.com/61172067'>Managing an Army of Laptops with Puppet</a></li>
            <li><a href='http://www.youtube.com/watch?v=ZC91gZv-Uao'>TDDing tmux</a></li>
          </ul>
        </section>

        <section>
          <p>Intro to DevOps</p>
          <p>Dinshaw Gobhai | <a href="mailto:dgobhai@constantcontact.com">dgobhai@constantcontact.com</a></p>
        </section>

        </div>
      </div>
      <script src="lib/js/head.min.js"></script>
      <script src="js/reveal.min.js"></script>

      <script>

      // Full list of configuration options available here:
      // https://github.com/hakimel/reveal.js#configuration
      Reveal.initialize({
        controls: true,
        progress: true,
        history: true,
        center: true,

        theme: Reveal.getQueryHash().theme, // available themes are in /css/theme
        transition: Reveal.getQueryHash().transition || 'default', // default/cube/page/concave/zoom/linear/fade/none

        // Optional libraries used to extend on reveal.js
        dependencies: [
          { src: 'lib/js/classList.js', condition: function() { return !document.body.classList; } },
          // { src: 'plugin/markdown/marked.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
          // { src: 'plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
          { src: 'plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } },
          { src: 'plugin/zoom-js/zoom.js', async: true, condition: function() { return !!document.body.classList; } },
          { src: 'plugin/notes/notes.js', async: true, condition: function() { return !!document.body.classList; } },
          // { src: 'plugin/search/search.js', async: true, condition: function() { return !!document.body.classList; } }
          // { src: 'plugin/remotes/remotes.js', async: true, condition: function() { return !!document.body.classList; } }
        ]
      });

      </script>
    </body>
  </head>
</html>
