changeset 13:3547bba86af2

Removed *.html from .hgignore because we are using our own theme now (that includes a base.html file), and it is convenient to control the generated presentation since I won't necessarily have Python and landslide installed on every computer I want to give the presentation.
author Brian Neal <bgneal@gmail.com>
date Wed, 30 Nov 2011 18:46:32 -0600
parents 727c48601d66
children d0f34c9c8a76
files .hgignore my_theme/base.html slides.html
diffstat 3 files changed, 1781 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/.hgignore	Wed Nov 30 18:44:44 2011 -0600
+++ b/.hgignore	Wed Nov 30 18:46:32 2011 -0600
@@ -1,4 +1,3 @@
 syntax: glob
 *.pyc
 *.swp
-*.html
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/my_theme/base.html	Wed Nov 30 18:46:32 2011 -0600
@@ -0,0 +1,182 @@
+<!DOCTYPE html>
+<!--
+  Copyright 2010 Google Inc.
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+  Original slides: Marcin Wichary (mwichary@google.com)
+  Modifications: Ernest Delgado (ernestd@google.com)
+                 Alex Russell (slightlyoff@chromium.org)
+
+  landslide modifications: Adam Zapletal (adamzap@gmail.com)
+                           Nicolas Perriault (nperriault@gmail.com)
+-->
+<html>
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <meta http-equiv="X-UA-Compatible" content="chrome=1">
+    <title>{{ head_title }}</title>
+    <!-- Styles -->
+    {% if embed %}
+    <style type="text/css" media="print">
+      {{ css.print.contents }}
+    </style>
+    <style type="text/css" media="screen, projection">
+      {{ css.screen.contents }}
+    </style>
+    {% else %}
+    <link rel="stylesheet" media="print" href="{{ css.print.path_url }}">
+    <link rel="stylesheet" media="screen, projection" href="{{ css.screen.path_url }}">
+    {% endif %}
+    {% for css in user_css %}
+      {% if embed %}
+      <style type="text/css" media="screen, projection">
+        {{ css.contents }}
+      </style>
+      {% else %}
+      <link rel="stylesheet" href="{{ css.path_url }}">
+      {% endif %}
+    {% endfor %}
+    <!-- /Styles -->
+    <!-- Javascripts -->
+    {% if embed %}
+    <script>
+      {{ js.contents }}
+    </script>
+    {% else %}
+    <script type="text/javascript" src="{{ js.path_url }}"></script>
+    {% endif %}
+    {% for js in user_js %}
+      {% if embed %}
+      <script>
+        {{ js.contents }}
+      </script>
+      {% else %}
+      <script type="text/javascript" src="{{ js.path_url }}"></script>
+      {% endif %}
+    {% endfor %}
+    <!-- /Javascripts -->
+</head>
+<body>
+  <div id="blank"></div>
+  <div class="presentation">
+    <div id="current_presenter_notes">
+      <div id="presenter_note"></div>
+    </div>
+    <div class="slides">
+      {% for slide in slides %}
+      <!-- slide source: {% if slide.source %}{{ slide.source.rel_path }}{% endif %} -->
+      <div class="slide-wrapper">
+        <div class="slide{% if slide.classes %}{% for class in slide.classes %} {{ class }}{% endfor %}{% endif %}">
+          <div class="inner">
+            {% if slide.header %}
+            <header>{{ slide.header }}</header>
+            {% endif %}
+            {% if slide.content %}
+            <section>{{ slide.content }}</section>
+            {% endif %}
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            {% if slide.presenter_notes %}
+              {{ slide.presenter_notes }}
+            {% endif %}
+            </section>
+          </div>
+          <footer>
+            {% if slide.source %}
+            <aside class="source">
+              Source: <a href="{{ slide.source.rel_path }}">{{ slide.source.rel_path }}</a>
+            </aside>
+            {% endif %}
+            <aside class="page_number">
+              {{ slide.number }}/{{ num_slides }}
+            </aside>
+          </footer>
+        </div>
+      </div>
+      {% endfor %}
+    </div>
+  </div>
+  {% if toc %}
+  <div id="toc" class="sidebar hidden">
+    <h2>Table of Contents</h2>
+    <table>
+      <caption>Table of Contents</caption>
+      {% for section in toc %}
+      <tr id="toc-row-{{ section.number }}">
+        <th><a href="#slide{{ section.number }}">{{ section.title }}</a></th>
+        <td><a href="#slide{{ section.number }}">{{ section.number }}</a></td>
+      </tr>
+      {% if section.sub %}
+        {% for subsection in section.sub %}
+        <tr id="toc-row-{{ subsection.number }}" class="sub">
+          <th><a href="#slide{{ subsection.number }}">{{ subsection.title }}</a></th>
+          <td><a href="#slide{{ subsection.number }}">{{ subsection.number }}</a></td>
+        </tr>
+        {% endfor %}
+      {% endif %}
+      {% endfor %}
+    </table>
+  </div>
+  {% endif %}
+  <div id="help" class="sidebar hidden">
+    <h2>Help</h2>
+    <table>
+      <caption>Help</caption>
+      <tr>
+        <th>Table of Contents</th>
+        <td>t</td>
+      </tr>
+      <tr>
+        <th>Exposé</th>
+        <td>ESC</td>
+      </tr>
+      <tr>
+        <th>Full screen slides</th>
+        <td>e</td>
+      </tr>
+      <tr>
+        <th>Presenter View</th>
+        <td>p</td>
+      </tr>
+      <tr>
+        <th>Source Files</th>
+        <td>s</td>
+      </tr>
+      <tr>
+        <th>Slide Numbers</th>
+        <td>n</td>
+      </tr>
+      <tr>
+        <th>Toggle screen blanking</th>
+        <td>b</td>
+      </tr>
+      <tr>
+        <th>Show/hide slide context</th>
+        <td>c</td>
+      </tr>
+      <tr>
+        <th>Notes</th>
+        <td>2</td>
+      </tr>
+      <tr>
+        <th>Help</th>
+        <td>h</td>
+      </tr>
+    </table>
+  </div>
+  <script>main()</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/slides.html	Wed Nov 30 18:46:32 2011 -0600
@@ -0,0 +1,1599 @@
+<!DOCTYPE html>
+<!--
+  Copyright 2010 Google Inc.
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+  Original slides: Marcin Wichary (mwichary@google.com)
+  Modifications: Ernest Delgado (ernestd@google.com)
+                 Alex Russell (slightlyoff@chromium.org)
+
+  landslide modifications: Adam Zapletal (adamzap@gmail.com)
+                           Nicolas Perriault (nperriault@gmail.com)
+-->
+<html>
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <meta http-equiv="X-UA-Compatible" content="chrome=1">
+    <title>Introduction to Distributed Version Control with Mercurial</title>
+    <!-- Styles -->
+    
+    <link rel="stylesheet" media="print" href="./my_theme/css/print.css">
+    <link rel="stylesheet" media="screen, projection" href="./my_theme/css/screen.css">
+    
+    
+      
+      <link rel="stylesheet" href="slides.css">
+      
+    
+    <!-- /Styles -->
+    <!-- Javascripts -->
+    
+    <script type="text/javascript" src="./my_theme/js/slides.js"></script>
+    
+    
+    <!-- /Javascripts -->
+</head>
+<body>
+  <div id="blank"></div>
+  <div class="presentation">
+    <div id="current_presenter_notes">
+      <div id="presenter_note"></div>
+    </div>
+    <div class="slides">
+      
+      <!-- slide source: slides.rst -->
+      <div class="slide-wrapper">
+        <div class="slide">
+          <div class="inner">
+            
+            <header><h1>Introduction to Distributed Version Control with Mercurial</h1></header>
+            
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            <aside class="source">
+              Source: <a href="slides.rst">slides.rst</a>
+            </aside>
+            
+            <aside class="page_number">
+              1/33
+            </aside>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: slides.rst -->
+      <div class="slide-wrapper">
+        <div class="slide">
+          <div class="inner">
+            
+            <header><h1>(Subliminal Message)</h1></header>
+            
+            
+            <section><img alt="images/stop.jpg" src="images/stop.jpg" /></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            <aside class="source">
+              Source: <a href="slides.rst">slides.rst</a>
+            </aside>
+            
+            <aside class="page_number">
+              2/33
+            </aside>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: slides.rst -->
+      <div class="slide-wrapper">
+        <div class="slide">
+          <div class="inner">
+            
+            <header><h1># whoami</h1></header>
+            
+            
+            <section><p>Brian Neal &lt;<a class="reference external" href="mailto:bgneal1&#64;rockwellcollins.com">bgneal1&#64;rockwellcollins.com</a>&gt;</p>
+<p>Started at Rockwell Collins in July 1999</p>
+<p>You might remember me from the following programs:</p>
+<ul class="simple">
+<li>UMS (July 1999 - Spring 2000)</li>
+<li>Surgical Strike - (Spring - Fall 2000)</li>
+<li>JTRS 2B - (Fall 2000 - Summer 2001)</li>
+<li>SCAMP SEP - (Summer 2001 - October 2004)</li>
+<li>TTNT (January 2005 - Present)</li>
+</ul></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            <aside class="source">
+              Source: <a href="slides.rst">slides.rst</a>
+            </aside>
+            
+            <aside class="page_number">
+              3/33
+            </aside>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: slides.rst -->
+      <div class="slide-wrapper">
+        <div class="slide">
+          <div class="inner">
+            
+            <header><h1>Brief History of Version Control Tools</h1></header>
+            
+            
+            <section><h2>First Generation</h2>
+<ul class="simple">
+<li>No networking!</li>
+<li>Concurrency method: locks</li>
+<li>Examples:<ul>
+<li>SCCS - 1972</li>
+<li>RCS - 1982</li>
+</ul>
+</li>
+</ul></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            <aside class="source">
+              Source: <a href="slides.rst">slides.rst</a>
+            </aside>
+            
+            <aside class="page_number">
+              4/33
+            </aside>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: slides.rst -->
+      <div class="slide-wrapper">
+        <div class="slide">
+          <div class="inner">
+            
+            <header><h1>Brief History of Version Control Tools</h1></header>
+            
+            
+            <section><h2>Second Generation</h2>
+<ul class="simple">
+<li>Client/Server networking; CVCS (Centralized Version Control)</li>
+<li>Concurrency method: merge before commit</li>
+<li>Examples:<ul>
+<li>CVS - 1990</li>
+<li>IBM Rational ClearCase - 1992</li>
+<li>Visual SourceSafe - 1994</li>
+<li>Perforce - 1995</li>
+<li>SVN - 2000</li>
+</ul>
+</li>
+</ul></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            <aside class="source">
+              Source: <a href="slides.rst">slides.rst</a>
+            </aside>
+            
+            <aside class="page_number">
+              5/33
+            </aside>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: slides.rst -->
+      <div class="slide-wrapper">
+        <div class="slide">
+          <div class="inner">
+            
+            <header><h1>Brief History of Version Control Tools</h1></header>
+            
+            
+            <section><h2>Third Generation</h2>
+<ul class="simple">
+<li>Distributed networking; DVCS (Distributed Version Control)</li>
+<li>Concurrency method: commit then merge</li>
+<li>Examples:<ul>
+<li>Bitkeeper - 2000</li>
+<li>Darcs - 2003</li>
+<li>Monotone - 2003</li>
+<li>Git - 2005</li>
+<li><strong>Mercurial</strong> - 2005</li>
+<li>Fossil - 2006</li>
+<li>Bazaar - 2007</li>
+<li>Veracity - 2011</li>
+</ul>
+</li>
+</ul></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            <aside class="source">
+              Source: <a href="slides.rst">slides.rst</a>
+            </aside>
+            
+            <aside class="page_number">
+              6/33
+            </aside>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: slides.rst -->
+      <div class="slide-wrapper">
+        <div class="slide">
+          <div class="inner">
+            
+            <header><h1>What is a CVCS Again?</h1></header>
+            
+            
+            <section><img alt="images/cvcs.png" src="images/cvcs.png" /></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            <aside class="source">
+              Source: <a href="slides.rst">slides.rst</a>
+            </aside>
+            
+            <aside class="page_number">
+              7/33
+            </aside>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: slides.rst -->
+      <div class="slide-wrapper">
+        <div class="slide">
+          <div class="inner">
+            
+            <header><h1>So what's a DVCS look like?</h1></header>
+            
+            
+            <section><img alt="images/dvcs.png" src="images/dvcs.png" />
+<p>All repositories are peers. By convention only, one repository is designated the master.
+It is possible for all peers to exchange changes (via <em>push</em> and <em>pull</em> operations).</p></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            <aside class="source">
+              Source: <a href="slides.rst">slides.rst</a>
+            </aside>
+            
+            <aside class="page_number">
+              8/33
+            </aside>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: slides.rst -->
+      <div class="slide-wrapper">
+        <div class="slide">
+          <div class="inner">
+            
+            <header><h1>What does a DVCS buy you?</h1></header>
+            
+            
+            <section><ul class="simple">
+<li>Private workspaces</li>
+<li>Offline mode</li>
+<li>Speed</li>
+<li>Scalability</li>
+<li>Split Geography</li>
+<li>Flexible workflows</li>
+<li>Distributed backups</li>
+<li><strong>Easier merging</strong></li>
+<li><strong>Commit before merge</strong></li>
+</ul></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            <aside class="source">
+              Source: <a href="slides.rst">slides.rst</a>
+            </aside>
+            
+            <aside class="page_number">
+              9/33
+            </aside>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: slides.rst -->
+      <div class="slide-wrapper">
+        <div class="slide">
+          <div class="inner">
+            
+            <header><h1>Private Workspaces</h1></header>
+            
+            
+            <section><ul class="simple">
+<li>You can safely experiment in your local repository</li>
+<li>Commit as often as you like without affecting the team<ul>
+<li>Encourages &quot;micro-commits&quot;</li>
+<li>With SVN, people often hold back until an entire feature is complete</li>
+</ul>
+</li>
+<li>Encourages experimentation<ul>
+<li>Make cheap repository clones to try things out</li>
+<li>Not visible to coworkers</li>
+</ul>
+</li>
+</ul></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            <aside class="source">
+              Source: <a href="slides.rst">slides.rst</a>
+            </aside>
+            
+            <aside class="page_number">
+              10/33
+            </aside>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: slides.rst -->
+      <div class="slide-wrapper">
+        <div class="slide">
+          <div class="inner">
+            
+            <header><h1>Offline Mode</h1></header>
+            
+            
+            <section><ul class="simple">
+<li>Work when you have spotty or no network access</li>
+<li>Full access to the repo when offline</li>
+<li>Can work on multiple tasks offline</li>
+</ul>
+<blockquote>
+<ul class="simple">
+<li>Work on bug report #1</li>
+<li>Commit</li>
+<li>Work on bug report #2</li>
+<li>With a CVCS, you'd have both fixes in the same pending commit</li>
+</ul>
+</blockquote></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            <aside class="source">
+              Source: <a href="slides.rst">slides.rst</a>
+            </aside>
+            
+            <aside class="page_number">
+              11/33
+            </aside>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: slides.rst -->
+      <div class="slide-wrapper">
+        <div class="slide">
+          <div class="inner">
+            
+            <header><h1>Speed</h1></header>
+            
+            
+            <section><ul class="simple">
+<li>Local operations are <strong>fast</strong><ul>
+<li>No, really, <strong>you will</strong> notice a big difference</li>
+<li>Switching between branches will blow your mind</li>
+</ul>
+</li>
+<li>Initial pull down of an entire repository <em>might</em> be slower than a CVCS<ul>
+<li>Then again, you might be surprised</li>
+<li>Mercurial, for example, stores an entire repository in less space than
+a SVN working copy in many cases</li>
+</ul>
+</li>
+</ul></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            <aside class="source">
+              Source: <a href="slides.rst">slides.rst</a>
+            </aside>
+            
+            <aside class="page_number">
+              12/33
+            </aside>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: slides.rst -->
+      <div class="slide-wrapper">
+        <div class="slide">
+          <div class="inner">
+            
+            <header><h1>Scalability</h1></header>
+            
+            
+            <section><ul class="simple">
+<li>Some CVCS systems require heavy weight hardware to support the server<ul>
+<li>E.g. ClearCase with a thousand users</li>
+<li>With a DVCS, only pushes &amp; pulls contact a central server</li>
+<li>Most of the work is done locally</li>
+</ul>
+</li>
+</ul></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            <aside class="source">
+              Source: <a href="slides.rst">slides.rst</a>
+            </aside>
+            
+            <aside class="page_number">
+              13/33
+            </aside>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: slides.rst -->
+      <div class="slide-wrapper">
+        <div class="slide">
+          <div class="inner">
+            
+            <header><h1>Split Geography</h1></header>
+            
+            
+            <section><ul class="simple">
+<li>Imagine a team split between Cedar Rapids &amp; Richardson...</li>
+<li>With a CVCS, you have to pick where to put the server</li>
+<li>The remote location is stuck with network latency &amp; associated problems</li>
+<li>With a DVCS, each site can have a central repository<ul>
+<li>The two central repos can be synched when convenient or even scripted</li>
+</ul>
+</li>
+</ul>
+<img alt="images/split_geography.png" src="images/split_geography.png" /></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            <aside class="source">
+              Source: <a href="slides.rst">slides.rst</a>
+            </aside>
+            
+            <aside class="page_number">
+              14/33
+            </aside>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: slides.rst -->
+      <div class="slide-wrapper">
+        <div class="slide">
+          <div class="inner">
+            
+            <header><h1>Flexible Workflows</h1></header>
+            
+            
+            <section><ul class="simple">
+<li>There is no internal concept of a central repository</li>
+<li>A central repository exits only by convention</li>
+<li>More elaborate topologies and workflows can be created:<ul>
+<li>A SW team may push to a central SW repo</li>
+<li>Periodically changes from the SW repo are pushed to a QA repo</li>
+<li>Changes from the QA repo can be pushed into a release repo</li>
+</ul>
+</li>
+</ul>
+<img alt="images/flexible_workflows.png" src="images/flexible_workflows.png" /></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            <aside class="source">
+              Source: <a href="slides.rst">slides.rst</a>
+            </aside>
+            
+            <aside class="page_number">
+              15/33
+            </aside>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: slides.rst -->
+      <div class="slide-wrapper">
+        <div class="slide">
+          <div class="inner">
+            
+            <header><h1>Distributed Backups</h1></header>
+            
+            
+            <section><ul class="simple">
+<li>With a DVCS, multiple copies of the repository exist on multiple machines</li>
+<li><strong>Of course, this is no substitute for a real backup strategy!</strong></li>
+<li>But usually, and with short notice, you can easily designate a repository as
+the central repository in an emergency</li>
+</ul></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            <aside class="source">
+              Source: <a href="slides.rst">slides.rst</a>
+            </aside>
+            
+            <aside class="page_number">
+              16/33
+            </aside>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: slides.rst -->
+      <div class="slide-wrapper">
+        <div class="slide">
+          <div class="inner">
+            
+            <header><h1>Easier Merging</h1></header>
+            
+            
+            <section><ul class="simple">
+<li>Subversion has a bad reputation for merging<ul>
+<li>Some of this is not warranted...<ul>
+<li>Merge tracking was added in SVN v1.5</li>
+</ul>
+</li>
+<li>SVN does not handle file renames and tree conflicts very well</li>
+<li>A lot of teams simply avoid merging out of fear</li>
+</ul>
+</li>
+</ul></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            <aside class="source">
+              Source: <a href="slides.rst">slides.rst</a>
+            </aside>
+            
+            <aside class="page_number">
+              17/33
+            </aside>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: slides.rst -->
+      <div class="slide-wrapper">
+        <div class="slide">
+          <div class="inner">
+            
+            <header><h1>Easier Merging (cont.)</h1></header>
+            
+            
+            <section><ul class="simple">
+<li>Why is merging better in a DVCS?<ul>
+<li>Merging simply has to work correctly and be easy in a DVCS<ul>
+<li>More attention was paid to this aspect by DVCS's</li>
+</ul>
+</li>
+<li>DVCS's use directed acyclic graphs internally to represent change sets<ul>
+<li>More information is available to make merge decisions</li>
+<li>Easier to find common ancestors of code</li>
+</ul>
+</li>
+<li>Developer changes and merge changes are separate<ul>
+<li>&quot;Commit before merge&quot;</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            <aside class="source">
+              Source: <a href="slides.rst">slides.rst</a>
+            </aside>
+            
+            <aside class="page_number">
+              18/33
+            </aside>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: slides.rst -->
+      <div class="slide-wrapper">
+        <div class="slide">
+          <div class="inner">
+            
+            <header><h1>Commit Before Merge</h1></header>
+            
+            
+            <section><ul class="simple">
+<li>With a CVCS:<ul>
+<li>You make changes in your working copy</li>
+<li>Before you can commit, you often must peform an update<ul>
+<li>This may trigger a merge</li>
+<li>Your changes are now mixed up with your friendly coworkers' changes</li>
+<li>Sometimes this can be a problem...</li>
+</ul>
+</li>
+</ul>
+</li>
+<li>With a DVCS:<ul>
+<li>You make changes in your working copy</li>
+<li>You commit locally!</li>
+<li>You can then choose to pull changes from others and merge<ul>
+<li><strong>Your changes are already safely tucked away and can be retrieved later if things go wrong</strong></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            <aside class="source">
+              Source: <a href="slides.rst">slides.rst</a>
+            </aside>
+            
+            <aside class="page_number">
+              19/33
+            </aside>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: slides.rst -->
+      <div class="slide-wrapper">
+        <div class="slide">
+          <div class="inner">
+            
+            <header><h1>Okay, what's the catch?</h1></header>
+            
+            
+            <section><h2>Potential drawbacks to a DVCS</h2>
+<ul class="simple">
+<li>Practically no support for locks<ul>
+<li>This makes working with binary files difficult in a team environment</li>
+</ul>
+</li>
+<li>Huge repositories are not practical</li>
+<li>Hetrogenous repositories are not practical<ul>
+<li>Not a good idea to mix, say, software, systems, and firmware in the same repo</li>
+<li>Not a good idea to mix multiple products in the same repo</li>
+<li>Arguably, this applies to a CVCS as well</li>
+</ul>
+</li>
+<li>No support for path-based access control<ul>
+<li>With current tools, you either can access the full repo, or nothing</li>
+</ul>
+</li>
+</ul></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            <aside class="source">
+              Source: <a href="slides.rst">slides.rst</a>
+            </aside>
+            
+            <aside class="page_number">
+              20/33
+            </aside>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: slides.rst -->
+      <div class="slide-wrapper">
+        <div class="slide">
+          <div class="inner">
+            
+            <header><h1>Introduction to Mercurial</h1></header>
+            
+            
+            <section><ul class="simple">
+<li>Overview</li>
+<li>Repositories &amp; working directories</li>
+<li>Changesets</li>
+<li>Branches &amp; Tags</li>
+<li>Example workflow</li>
+<li>Command overview</li>
+</ul></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            <aside class="source">
+              Source: <a href="slides.rst">slides.rst</a>
+            </aside>
+            
+            <aside class="page_number">
+              21/33
+            </aside>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: slides.rst -->
+      <div class="slide-wrapper">
+        <div class="slide">
+          <div class="inner">
+            
+            <header><h1>Mercurial Overview</h1></header>
+            
+            
+            <section><ul class="simple">
+<li>Distributed Version Control System</li>
+<li>Free, open source software licensed under GPL Version 2</li>
+<li>Available for Microsoft Windows, GNU/Linux, Mac OS X, Solaris 11 Express</li>
+<li>Written in Python with a small amount of C</li>
+<li>Extensible with official and 3rd party extensions</li>
+<li>TortoiseHg is a popular GUI for Windows</li>
+<li>Reputation for being fast &amp; easy to get started with</li>
+<li>Can be served via Apache Web server</li>
+<li>Repository hooks</li>
+<li>Integrates with Trac</li>
+<li>Can import history from other tools, including Subversion</li>
+</ul></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            <aside class="source">
+              Source: <a href="slides.rst">slides.rst</a>
+            </aside>
+            
+            <aside class="page_number">
+              22/33
+            </aside>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: slides.rst -->
+      <div class="slide-wrapper">
+        <div class="slide">
+          <div class="inner">
+            
+            <header><h1>Repositories &amp; Working Directories</h1></header>
+            
+            
+            <section><p>A repository consists of two things:</p>
+<ul class="simple">
+<li>Your working directory (similar to a working copy in SVN)</li>
+<li>The repository itself (also known as &quot;the store&quot;)<ul>
+<li>A .hg directory at the top of your working copy</li>
+</ul>
+</li>
+</ul>
+<p>Example:</p>
+<pre class="literal-block">
+$ ls -A
+.hg  .hgignore  images/  slides.cfg  slides.css  slides.html  slides.rst
+</pre>
+<ul class="simple">
+<li>Repositories communicate via the <em>push</em> and <em>pull</em> commands<ul>
+<li>Push &amp; Pull do not affect your working directory<ul>
+<li>An <em>update</em> or <em>merge</em> must be performed to receive remote changes into your working directory</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            <aside class="source">
+              Source: <a href="slides.rst">slides.rst</a>
+            </aside>
+            
+            <aside class="page_number">
+              23/33
+            </aside>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: slides.rst -->
+      <div class="slide-wrapper">
+        <div class="slide">
+          <div class="inner">
+            
+            <header><h1>What's in a Repository?</h1></header>
+            
+            
+            <section><p>A repository consists of a directed, acyclic graph of <em>changesets</em></p>
+<img alt="images/repos.png" src="images/repos.png" />
+<ul class="simple">
+<li>Each changeset can have 0, 1, or 2 parents (and infinite children)</li>
+<li>A changeset with 0 parents is the root</li>
+<li>A changeset with 2 parents is the result of a merge</li>
+<li>The newest changeset is called the <em>tip</em>, a special tag name</li>
+</ul></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            <aside class="source">
+              Source: <a href="slides.rst">slides.rst</a>
+            </aside>
+            
+            <aside class="page_number">
+              24/33
+            </aside>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: slides.rst -->
+      <div class="slide-wrapper">
+        <div class="slide">
+          <div class="inner">
+            
+            <header><h1>What's a Changeset?</h1></header>
+            
+            
+            <section><p>A changeset is an atomic collection of changes and some meta information.
+The meta information includes:</p>
+<ul class="simple">
+<li>Who made the changes</li>
+<li>When the changes were made</li>
+<li>Why - the commit message</li>
+<li>The name of the branch the changes were made on (&quot;default&quot; is the default)</li>
+<li>A local revision number</li>
+<li>A changeset ID; a 40 digit hex number (SHA-1 hash of the changeset &amp; parents)</li>
+</ul>
+<p>A changeset can be named by:</p>
+<ul class="simple">
+<li>Revision number (within a repository)</li>
+<li>Changeset ID (globally)</li>
+<li>Tag name</li>
+</ul></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            <aside class="source">
+              Source: <a href="slides.rst">slides.rst</a>
+            </aside>
+            
+            <aside class="page_number">
+              25/33
+            </aside>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: slides.rst -->
+      <div class="slide-wrapper">
+        <div class="slide">
+          <div class="inner">
+            
+            <header><h1>Branches &amp; Tags</h1></header>
+            
+            
+            <section><ul class="simple">
+<li>In the simple case, each changeset appear in a line</li>
+<li>When a changeset develops 2 or more children, a branch occurs<ul>
+<li>The latest revision of a branch is called a <em>head</em></li>
+<li>A <em>merge</em> is when two branches join back together</li>
+<li>Branches can be given names; the default branch name is <em>&quot;default&quot;</em></li>
+</ul>
+</li>
+<li>Changesets can be given human readable names, or <em>tags</em><ul>
+<li><em>Local tags</em> are only visible within a repository</li>
+<li><em>Regular tags</em> are revision controlled and propagate to other repos</li>
+<li>The newest head in a repository is a tag called <em>tip</em></li>
+</ul>
+</li>
+</ul></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            <aside class="source">
+              Source: <a href="slides.rst">slides.rst</a>
+            </aside>
+            
+            <aside class="page_number">
+              26/33
+            </aside>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: slides.rst -->
+      <div class="slide-wrapper">
+        <div class="slide">
+          <div class="inner">
+            
+            <header><h1>Example Workflow</h1></header>
+            
+            
+            <section><img alt="images/workflow1.png" src="images/workflow1.png" /></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            <aside class="source">
+              Source: <a href="slides.rst">slides.rst</a>
+            </aside>
+            
+            <aside class="page_number">
+              27/33
+            </aside>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: slides.rst -->
+      <div class="slide-wrapper">
+        <div class="slide">
+          <div class="inner">
+            
+            <header><h1>Example Workflow (cont.)</h1></header>
+            
+            
+            <section><img alt="images/workflow2.png" src="images/workflow2.png" /></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            <aside class="source">
+              Source: <a href="slides.rst">slides.rst</a>
+            </aside>
+            
+            <aside class="page_number">
+              28/33
+            </aside>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: slides.rst -->
+      <div class="slide-wrapper">
+        <div class="slide">
+          <div class="inner">
+            
+            <header><h1>Example Workflow (cont.)</h1></header>
+            
+            
+            <section><img alt="images/workflow3.png" src="images/workflow3.png" />
+<ul class="simple">
+<li>Notice that after Alice's pull:<ul>
+<li>Her working directory is unaffected</li>
+<li>Her repository only has one head =&gt; no merging required</li>
+</ul>
+</li>
+</ul></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            <aside class="source">
+              Source: <a href="slides.rst">slides.rst</a>
+            </aside>
+            
+            <aside class="page_number">
+              29/33
+            </aside>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: slides.rst -->
+      <div class="slide-wrapper">
+        <div class="slide">
+          <div class="inner">
+            
+            <header><h1>SVN Commands for Review</h1></header>
+            
+            
+            <section><p>Basic SVN commands:</p>
+<ul class="simple">
+<li>add, remove, copy, move, mkdir</li>
+<li>checkout, commit, update, revert</li>
+<li>merge, resolved, diff</li>
+<li>status, log</li>
+<li>lock, unlock</li>
+</ul></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            <aside class="source">
+              Source: <a href="slides.rst">slides.rst</a>
+            </aside>
+            
+            <aside class="page_number">
+              30/33
+            </aside>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: slides.rst -->
+      <div class="slide-wrapper">
+        <div class="slide">
+          <div class="inner">
+            
+            <header><h1>Basic Mercurial Commands</h1></header>
+            
+            
+            <section><p>Mercurial (hg) vs SVN commands:</p>
+<ul class="simple">
+<li>add, remove, copy, move, <span class="strike">mkdir</span></li>
+<li><span class="strike">checkout</span>, commit, update, revert</li>
+<li>merge, resolve, diff, <strong>heads</strong></li>
+<li>status, log</li>
+<li><span class="strike">lock, unlock</span></li>
+</ul>
+<p>Additional &quot;distributed commands&quot;:</p>
+<ul class="simple">
+<li><strong>clone</strong>, <strong>push</strong>, <strong>pull</strong></li>
+<li><strong>incoming</strong>, <strong>outgoing</strong></li>
+</ul>
+<p><strong>Not a whole lot to learn above SVN</strong></p></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            <aside class="source">
+              Source: <a href="slides.rst">slides.rst</a>
+            </aside>
+            
+            <aside class="page_number">
+              31/33
+            </aside>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: slides.rst -->
+      <div class="slide-wrapper">
+        <div class="slide">
+          <div class="inner">
+            
+            <header><h1>References</h1></header>
+            
+            
+            <section><ul class="simple">
+<li>Mercurial <a class="reference external" href="http://mercurial.selenic.com/">http://mercurial.selenic.com/</a></li>
+<li>Mercurial Wiki <a class="reference external" href="http://mercurial.selenic.com/wiki/">http://mercurial.selenic.com/wiki/</a></li>
+<li>Mercurial Book (free!) <a class="reference external" href="http://hgbook.red-bean.com/">http://hgbook.red-bean.com/</a></li>
+<li>Hg Init: A Mercurial Tutorial <a class="reference external" href="http://hginit.com">http://hginit.com</a></li>
+<li>Version Control By Example (free!) <a class="reference external" href="http://www.ericsink.com/vcbe/">http://www.ericsink.com/vcbe/</a></li>
+</ul>
+<p>This presentation is available at:</p>
+<pre class="literal-block">
+$ hg clone https://bitbucket.org/bgneal/dvcs_intro_brownbag
+</pre></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            <aside class="source">
+              Source: <a href="slides.rst">slides.rst</a>
+            </aside>
+            
+            <aside class="page_number">
+              32/33
+            </aside>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: slides.rst -->
+      <div class="slide-wrapper">
+        <div class="slide">
+          <div class="inner">
+            
+            <header><h1>Questions?</h1></header>
+            
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            <aside class="source">
+              Source: <a href="slides.rst">slides.rst</a>
+            </aside>
+            
+            <aside class="page_number">
+              33/33
+            </aside>
+          </footer>
+        </div>
+      </div>
+      
+    </div>
+  </div>
+  
+  <div id="toc" class="sidebar hidden">
+    <h2>Table of Contents</h2>
+    <table>
+      <caption>Table of Contents</caption>
+      
+      <tr id="toc-row-1">
+        <th><a href="#slide1">Introduction to Distributed Version Control with Mercurial</a></th>
+        <td><a href="#slide1">1</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-2">
+        <th><a href="#slide2">(Subliminal Message)</a></th>
+        <td><a href="#slide2">2</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-3">
+        <th><a href="#slide3"># whoami</a></th>
+        <td><a href="#slide3">3</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-4">
+        <th><a href="#slide4">Brief History of Version Control Tools</a></th>
+        <td><a href="#slide4">4</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-5">
+        <th><a href="#slide5">Brief History of Version Control Tools</a></th>
+        <td><a href="#slide5">5</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-6">
+        <th><a href="#slide6">Brief History of Version Control Tools</a></th>
+        <td><a href="#slide6">6</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-7">
+        <th><a href="#slide7">What is a CVCS Again?</a></th>
+        <td><a href="#slide7">7</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-8">
+        <th><a href="#slide8">So what's a DVCS look like?</a></th>
+        <td><a href="#slide8">8</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-9">
+        <th><a href="#slide9">What does a DVCS buy you?</a></th>
+        <td><a href="#slide9">9</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-10">
+        <th><a href="#slide10">Private Workspaces</a></th>
+        <td><a href="#slide10">10</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-11">
+        <th><a href="#slide11">Offline Mode</a></th>
+        <td><a href="#slide11">11</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-12">
+        <th><a href="#slide12">Speed</a></th>
+        <td><a href="#slide12">12</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-13">
+        <th><a href="#slide13">Scalability</a></th>
+        <td><a href="#slide13">13</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-14">
+        <th><a href="#slide14">Split Geography</a></th>
+        <td><a href="#slide14">14</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-15">
+        <th><a href="#slide15">Flexible Workflows</a></th>
+        <td><a href="#slide15">15</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-16">
+        <th><a href="#slide16">Distributed Backups</a></th>
+        <td><a href="#slide16">16</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-17">
+        <th><a href="#slide17">Easier Merging</a></th>
+        <td><a href="#slide17">17</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-18">
+        <th><a href="#slide18">Easier Merging (cont.)</a></th>
+        <td><a href="#slide18">18</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-19">
+        <th><a href="#slide19">Commit Before Merge</a></th>
+        <td><a href="#slide19">19</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-20">
+        <th><a href="#slide20">Okay, what's the catch?</a></th>
+        <td><a href="#slide20">20</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-21">
+        <th><a href="#slide21">Introduction to Mercurial</a></th>
+        <td><a href="#slide21">21</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-22">
+        <th><a href="#slide22">Mercurial Overview</a></th>
+        <td><a href="#slide22">22</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-23">
+        <th><a href="#slide23">Repositories &amp; Working Directories</a></th>
+        <td><a href="#slide23">23</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-24">
+        <th><a href="#slide24">What's in a Repository?</a></th>
+        <td><a href="#slide24">24</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-25">
+        <th><a href="#slide25">What's a Changeset?</a></th>
+        <td><a href="#slide25">25</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-26">
+        <th><a href="#slide26">Branches &amp; Tags</a></th>
+        <td><a href="#slide26">26</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-27">
+        <th><a href="#slide27">Example Workflow</a></th>
+        <td><a href="#slide27">27</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-28">
+        <th><a href="#slide28">Example Workflow (cont.)</a></th>
+        <td><a href="#slide28">28</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-29">
+        <th><a href="#slide29">Example Workflow (cont.)</a></th>
+        <td><a href="#slide29">29</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-30">
+        <th><a href="#slide30">SVN Commands for Review</a></th>
+        <td><a href="#slide30">30</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-31">
+        <th><a href="#slide31">Basic Mercurial Commands</a></th>
+        <td><a href="#slide31">31</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-32">
+        <th><a href="#slide32">References</a></th>
+        <td><a href="#slide32">32</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-33">
+        <th><a href="#slide33">Questions?</a></th>
+        <td><a href="#slide33">33</a></td>
+      </tr>
+      
+      
+    </table>
+  </div>
+  
+  <div id="help" class="sidebar hidden">
+    <h2>Help</h2>
+    <table>
+      <caption>Help</caption>
+      <tr>
+        <th>Table of Contents</th>
+        <td>t</td>
+      </tr>
+      <tr>
+        <th>Exposé</th>
+        <td>ESC</td>
+      </tr>
+      <tr>
+        <th>Full screen slides</th>
+        <td>e</td>
+      </tr>
+      <tr>
+        <th>Presenter View</th>
+        <td>p</td>
+      </tr>
+      <tr>
+        <th>Source Files</th>
+        <td>s</td>
+      </tr>
+      <tr>
+        <th>Slide Numbers</th>
+        <td>n</td>
+      </tr>
+      <tr>
+        <th>Toggle screen blanking</th>
+        <td>b</td>
+      </tr>
+      <tr>
+        <th>Show/hide slide context</th>
+        <td>c</td>
+      </tr>
+      <tr>
+        <th>Notes</th>
+        <td>2</td>
+      </tr>
+      <tr>
+        <th>Help</th>
+        <td>h</td>
+      </tr>
+    </table>
+  </div>
+  <script>main()</script>
+</body>
+</html>
\ No newline at end of file