Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Site updated at 2013-04-03 08:39:58 UTC

  • Loading branch information...
commit 5d17bb45eb2bbc6dcf809d072a49498358b82775 1 parent 7b9746c
@benhamill authored
Showing with 13,993 additions and 7 deletions.
  1. +263 −0 2008/12/13/new-blog/index.html
  2. +265 −0 2008/12/16/a-hub-for-gits/index.html
  3. +259 −0 2008/12/16/sudo-on-windows-xp-sort-of/index.html
  4. +275 −0 2008/12/23/otherinbox-is-for-email-from-computers/index.html
  5. +271 −0 2009/01/09/save-versus-github/index.html
  6. +331 −0 2009/02/10/my-twitter-project-atreply/index.html
  7. +273 −0 2009/02/12/version-control-your-computer/index.html
  8. +371 −0 2009/03/18/git-tutorials-suck-a-sucky-git-tutorial/index.html
  9. +273 −0 2009/04/30/bad-getting-away-with-it/index.html
  10. +259 −0 2009/05/07/concern-over-separation-of-concerns/index.html
  11. +259 −0 2009/06/05/the-happy-hacker/index.html
  12. +261 −0 2009/06/09/the-new-breed-of-hacker/index.html
  13. +267 −0 2009/07/31/breaking-expectations/index.html
  14. +289 −0 2009/09/14/new-side-project-heygovote/index.html
  15. +262 −0 2009/10/01/feedback-wanted-blog-topic/index.html
  16. +279 −0 2009/10/07/fyi-my-tastes-in-role-playing-games/index.html
  17. +255 −0 2009/11/17/new-roleplaying-blog/index.html
  18. +259 −0 2009/11/25/vi-improved/index.html
  19. +313 −0 2009/12/07/my-git-talk-at-austin-on-rails/index.html
  20. +275 −0 2009/12/22/thoughts-on-google-wave/index.html
  21. +273 −0 2010/03/02/efficiency-in-algorithms-everywhere/index.html
  22. +259 −0 2010/04/16/open-source-fail/index.html
  23. +255 −0 2010/05/06/final-post/index.html
  24. +293 −0 2010/05/07/my-first-ruby-gem/index.html
  25. +259 −0 2010/06/10/how-do-you-make-a-gem/index.html
  26. +280 −0 2010/10/22/modeling-dominion/index.html
  27. +313 −0 2011/01/14/release-twitter_atm-1-0/index.html
  28. +341 −0 2011/06/01/falsiness-and-null-objects/index.html
  29. +381 −0 2011/08/25/a-smarter-has_many-through/index.html
  30. +263 −0 2012/01/04/the-parameter-object-pattern/index.html
  31. +261 −0 2012/01/19/changems/index.html
  32. +372 −0 2012/02/03/install-ruby-enterprise-edition-with-ruby-install-on-arch-linux/index.html
  33. +345 −0 2012/08/31/lol-civil-liberties/index.html
  34. +205 −0 about/index.html
  35. +946 −1 atom.xml
  36. +370 −1 blog/archives/index.html
  37. +962 −1 index.html
  38. +735 −0 page/2/index.html
  39. +856 −0 page/3/index.html
  40. +321 −0 page/4/index.html
  41. +143 −3 sitemap.xml
  42. +1 −1  stylesheets/screen.css
View
263 2008/12/13/new-blog/index.html
@@ -0,0 +1,263 @@
+
+<!DOCTYPE html>
+<!--[if IEMobile 7 ]><html class="no-js iem7"><![endif]-->
+<!--[if lt IE 9]><html class="no-js lte-ie8"><![endif]-->
+<!--[if (gt IE 8)|(gt IEMobile 7)|!(IEMobile)|!(IE)]><!--><html class="no-js" lang="en"><!--<![endif]-->
+<head>
+ <meta charset="utf-8">
+ <title>New Blog - Garbled</title>
+ <meta name="author" content="Ben Hamill">
+
+
+ <meta name="description" content="Well, I finally got this thing working. Don&#39;t book mark it yet, I plan on
+changing the URL over, but have to deal with registration transfer, etc &hellip;">
+
+
+ <!-- http://t.co/dKP3o1e -->
+ <meta name="HandheldFriendly" content="True">
+ <meta name="MobileOptimized" content="320">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+
+
+ <link rel="canonical" href="http://garbled.benhamill.com/2008/12/13/new-blog">
+ <link href="/favicon.png" rel="icon">
+ <link href="/stylesheets/screen.css" media="screen, projection" rel="stylesheet" type="text/css">
+ <link href="/atom.xml" rel="alternate" title="Garbled" type="application/atom+xml">
+ <script src="/javascripts/modernizr-2.0.js"></script>
+ <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
+ <script>!window.jQuery && document.write(unescape('%3Cscript src="./javascripts/lib/jquery.min.js"%3E%3C/script%3E'))</script>
+ <script src="/javascripts/octopress.js" type="text/javascript"></script>
+ <!--Fonts from Google"s Web font directory at http://google.com/webfonts -->
+<link href="http://fonts.googleapis.com/css?family=PT+Serif:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css">
+<link href="http://fonts.googleapis.com/css?family=PT+Sans:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css">
+
+
+
+</head>
+
+<body >
+ <header role="banner"><hgroup>
+ <h1><a href="/">Garbled</a></h1>
+
+ <h2>garbled = Blog.new(author: 'Ben Hamill')</h2>
+
+</hgroup>
+
+</header>
+ <nav role="navigation"><ul class="subscription" data-subscription="rss">
+ <li><a href="/atom.xml" rel="subscribe-rss" title="subscribe via RSS">RSS</a></li>
+
+</ul>
+
+<form action="http://google.com/search" method="get">
+ <fieldset role="search">
+ <input type="hidden" name="q" value="site:garbled.benhamill.com" />
+ <input class="search" type="text" name="q" results="0" placeholder="Search"/>
+ </fieldset>
+</form>
+
+<ul class="main-navigation">
+ <li><a href="/">Blog</a></li>
+ <li><a href="/blog/archives">Archives</a></li>
+ <li><a href="/about">About</a></li>
+</ul>
+
+</nav>
+ <div id="main">
+ <div id="content">
+ <div>
+<article class="hentry" role="article">
+
+ <header>
+
+ <h1 class="entry-title">New Blog</h1>
+
+
+ <p class="meta">
+
+
+
+
+
+
+
+
+
+
+
+
+<time datetime="2008-12-13T00:00:00-06:00" pubdate data-updated="true">Dec 13<span>th</span>, 2008</time>
+
+ </p>
+
+ </header>
+
+
+<div class="entry-content"><p>Well, I finally got this thing working. Don&#39;t book mark it yet, I plan on
+changing the URL over, but have to deal with registration transfer, etc. and
+don&#39;t feel like mucking with that yet. Please, if you like, comment on the
+aesthetics or if you notice anything doesn&#39;t work.</p>
+
+<p>I&#39;ve got the source code for this blog up on <a
+ href="http://github.com">GitHub</a>, which you can check out <a
+ href="http://github.com/BenHamill/garbled/tree/master">if you like</a>. I&#39;m
+sure people will say that I&#39;ve got some stuff in source control that I
+shouldn&#39;t. If you post something like that in the comments, I&#39;ll at least have
+a look at it and consider. Deploying&#39;s a pain if you leave important stuff out
+of version control, no?</p>
+</div>
+
+
+ <footer>
+ <p class="meta">
+
+
+
+<span class="byline author vcard">Posted by <span class="fn">Ben Hamill</span></span>
+
+
+
+
+
+
+
+
+
+
+
+
+
+<time datetime="2008-12-13T00:00:00-06:00" pubdate data-updated="true">Dec 13<span>th</span>, 2008</time>
+
+
+
+ </p>
+
+ <div class="sharing">
+
+ <a href="http://twitter.com/share" class="twitter-share-button" data-url="http://garbled.benhamill.com/2008/12/13/new-blog/" data-via="benhamill" data-counturl="http://garbled.benhamill.com/2008/12/13/new-blog/" >Tweet</a>
+
+
+
+</div>
+
+
+ <p class="meta">
+
+
+ <a class="basic-alignment right" href="/2008/12/16/a-hub-for-gits/" title="Next Post: A Hub for Gits">A Hub for Gits &raquo;</a>
+
+ </p>
+ </footer>
+</article>
+
+</div>
+
+<aside class="sidebar">
+
+
+<section>
+ <h1>About Me</h1>
+ <div id="twitter-profile">
+ <img src="http://www.gravatar.com/avatar/4938b4569f1366168b705ce9c774ea5e" alt="Gravatar of Ben Hamill " title="Gravatar of Ben Hamill" />
+ <p>
+ <strong>Ben Hamill</strong>
+ @<a href="http://twitter.com/benhamill">benhamill</a>
+ </p>
+ <p>Rubyist, hacker, gamer (video, board, role-playing), fanboy (Linux, git, vim, Firefly, Dr Pepper), language pedant. Nerd.</p>
+ </div>
+</section>
+
+<section>
+ <h1>Recent Posts</h1>
+ <ul id="recent_posts">
+
+ <li class="post">
+ <a href="/2012/08/31/lol-civil-liberties/">LOL Civil Liberties</a>
+ </li>
+
+ <li class="post">
+ <a href="/2012/02/03/install-ruby-enterprise-edition-with-ruby-install-on-arch-linux/">Install Ruby Enterprise Edition With ruby-build On Arch Linux</a>
+ </li>
+
+ <li class="post">
+ <a href="/2012/01/19/changems/">Changems</a>
+ </li>
+
+ <li class="post">
+ <a href="/2012/01/04/the-parameter-object-pattern/">The Parameter Object Pattern</a>
+ </li>
+
+ <li class="post">
+ <a href="/2011/08/25/a-smarter-has_many-through/">A Smarter has_many :through?</a>
+ </li>
+
+ </ul>
+</section>
+
+<section>
+ <h1>GitHub Repos</h1>
+ <ul id="gh_repos">
+ <li class="loading">Status updating...</li>
+ </ul>
+
+ <a href="https://github.com/benhamill">@benhamill</a> on GitHub
+
+ <script type="text/javascript">
+ $(document).ready(function(){
+ if (!window.jXHR){
+ var jxhr = document.createElement('script');
+ jxhr.type = 'text/javascript';
+ jxhr.src = '/javascripts/libs/jXHR.js';
+ var s = document.getElementsByTagName('script')[0];
+ s.parentNode.insertBefore(jxhr, s);
+ }
+
+ github.showRepos({
+ user: 'benhamill',
+ count: 5,
+ skip_forks: true,
+ target: '#gh_repos'
+ });
+ });
+ </script>
+ <script src="/javascripts/github.js" type="text/javascript"> </script>
+</section>
+
+
+
+</aside>
+
+
+ </div>
+ </div>
+ <footer role="contentinfo"><p>
+ Copyright &copy; 2013 - Ben Hamill -
+ <span class="credit">Powered by <a href="http://octopress.org">Octopress</a></span>
+</p>
+
+</footer>
+
+
+
+
+
+
+
+
+ <script type="text/javascript">
+ (function(){
+ var twitterWidgets = document.createElement('script');
+ twitterWidgets.type = 'text/javascript';
+ twitterWidgets.async = true;
+ twitterWidgets.src = 'http://platform.twitter.com/widgets.js';
+ document.getElementsByTagName('head')[0].appendChild(twitterWidgets);
+ })();
+ </script>
+
+
+
+
+
+</body>
+</html>
View
265 2008/12/16/a-hub-for-gits/index.html
@@ -0,0 +1,265 @@
+
+<!DOCTYPE html>
+<!--[if IEMobile 7 ]><html class="no-js iem7"><![endif]-->
+<!--[if lt IE 9]><html class="no-js lte-ie8"><![endif]-->
+<!--[if (gt IE 8)|(gt IEMobile 7)|!(IEMobile)|!(IE)]><!--><html class="no-js" lang="en"><!--<![endif]-->
+<head>
+ <meta charset="utf-8">
+ <title>A Hub for Gits - Garbled</title>
+ <meta name="author" content="Ben Hamill">
+
+
+ <meta name="description" content="I&#39;ve recently started using git to version control my personal projects. I&#39;ve also recently started using GitHub for hosting remote repos of &hellip;">
+
+
+ <!-- http://t.co/dKP3o1e -->
+ <meta name="HandheldFriendly" content="True">
+ <meta name="MobileOptimized" content="320">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+
+
+ <link rel="canonical" href="http://garbled.benhamill.com/2008/12/16/a-hub-for-gits">
+ <link href="/favicon.png" rel="icon">
+ <link href="/stylesheets/screen.css" media="screen, projection" rel="stylesheet" type="text/css">
+ <link href="/atom.xml" rel="alternate" title="Garbled" type="application/atom+xml">
+ <script src="/javascripts/modernizr-2.0.js"></script>
+ <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
+ <script>!window.jQuery && document.write(unescape('%3Cscript src="./javascripts/lib/jquery.min.js"%3E%3C/script%3E'))</script>
+ <script src="/javascripts/octopress.js" type="text/javascript"></script>
+ <!--Fonts from Google"s Web font directory at http://google.com/webfonts -->
+<link href="http://fonts.googleapis.com/css?family=PT+Serif:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css">
+<link href="http://fonts.googleapis.com/css?family=PT+Sans:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css">
+
+
+
+</head>
+
+<body >
+ <header role="banner"><hgroup>
+ <h1><a href="/">Garbled</a></h1>
+
+ <h2>garbled = Blog.new(author: 'Ben Hamill')</h2>
+
+</hgroup>
+
+</header>
+ <nav role="navigation"><ul class="subscription" data-subscription="rss">
+ <li><a href="/atom.xml" rel="subscribe-rss" title="subscribe via RSS">RSS</a></li>
+
+</ul>
+
+<form action="http://google.com/search" method="get">
+ <fieldset role="search">
+ <input type="hidden" name="q" value="site:garbled.benhamill.com" />
+ <input class="search" type="text" name="q" results="0" placeholder="Search"/>
+ </fieldset>
+</form>
+
+<ul class="main-navigation">
+ <li><a href="/">Blog</a></li>
+ <li><a href="/blog/archives">Archives</a></li>
+ <li><a href="/about">About</a></li>
+</ul>
+
+</nav>
+ <div id="main">
+ <div id="content">
+ <div>
+<article class="hentry" role="article">
+
+ <header>
+
+ <h1 class="entry-title">A Hub for Gits</h1>
+
+
+ <p class="meta">
+
+
+
+
+
+
+
+
+
+
+
+
+<time datetime="2008-12-16T00:00:00-06:00" pubdate data-updated="true">Dec 16<span>th</span>, 2008</time>
+
+ </p>
+
+ </header>
+
+
+<div class="entry-content"><p>I&#39;ve recently started using git to version control my personal projects. I&#39;ve also recently started using GitHub for hosting remote repos of that stuff. So I&#39;m new to it all and I might be wrong, here. But, having read a few articles here and there and talked to some other people (most notably, another git newbie @<a href="http://twitter.com/carl_youngblood">carl_youngblood</a>), aren&#39;t cherry picking and rebasing really, really horrible things to do to a repo? Even if it&#39;s just your local one? They destroy history, which is sort of the point of version control, no?</p>
+
+<p>I&#39;ve seen, in the last few days, <a href="http://github.com/blog/270-the-fork-queue">two</a> <a href="http://schacon.github.com/history.html">articles</a> on GitHub that make me wonder which of us (me or GitHub) doesn&#39;t get it. My inclination is to assume it&#39;s me who&#39;s missing something. If so, I&#39;d love for someone to tell me exactly where I&#39;ve missed a step.</p>
+
+<p>The first article I want to talk about is the <a href="http://github.com/blog/270-the-fork-queue ">Fork Queue</a> announcement. It&#39;s basically a tool that makes it really easy to see which of the people that&#39;ve forked your project have pushed commits you don&#39;t have in your repo and then to cherry pick them in. You can pick your branch, etc. This is to keep you from having to create a lot of remotes, I guess. It&#39;s supposed to &quot;[allow] you to do a email patch style workflow without actually having to deal with patches over email&quot;. I thought that part of the point was that that work-flow was a pain? I also feel like it&#39;s missing the part where the person making the patch tells you about it, rather than you going and getting it from them. A pull-request is much more like that.</p>
+
+<p>I don&#39;t know&#8230; I sort of feel like we should be putting roadblocks in the way of cherry picking; make it harder for people to adopt work-flows where cherry-picking is common. My understanding (and again let me stress that this may be incorrect) is that the <strong>best</strong> work-flow is for the patcher to fetch your code (because it represents some kind of &quot;core&quot; or &quot;official&quot; release, yes?), merge it into a new branch, make his(her, etc.) changes, test them, fetch your code again to make sure he has the latest, perhaps retest, then issue a pull request. When you&#39;re acting on the pull request, you fetch his stuff down to a new branch, test, possibly merge in any changes you&#39;ve made to master since he issued the pull request, then <em>merge</em> into master. This preserves all the history. It&#39;s all fetches and merges.</p>
+
+<p>So the other article is the <a href="http://schacon.github.com/history.html">Changing Git History</a> article. This one is about going and messing with old commits. I&#39;ll try not to rant as much on this one. I&#39;m not as adamant, but I do find it kind of silly, this idea of making a commit a perfect little gem. I can see fixing a typo in the commit you just made, so <code>git commit --amend</code> doesn&#39;t seem so bad. However, the <code>git rebase -i</code> portion after that&#8230; bleh. I realize this isn&#39;t a GitHub feature like the above; it&#39;s a part of Git, but I wonder why. If the commits were that horrible, revert them all and do it over. If they weren&#39;t that bad, just live with the typo. No? Even if you haven&#39;t pushed it, rebasing just seem icky and to be avoided, especially if it&#39;s just to fix commit messages.</p>
+
+<p>Okay&#8230; So, maybe I&#39;m out of line or off base or insane. It&#39;s entirely possible. Some would say probable. It wouldn&#39;t surprise me if I&#39;ve failed in some very basic way to understand the Git philosophy. It also might be that I&#39;ve misunderstood what GitHub&#39;s written and that the clash between these articles and Git philosophy is all imagined by me. I&#39;m open to these possible realities. Correct me or soliloquize or slam me in the comments, if you like. I am all ears&#8230; or eyes. Whatever.</p>
+
+<p><strong>Update:</strong> Before anyone gets the wrong idea, here&#8230; I&#39;ve been loving using git and GitHub. They&#39;re both spectacular. Without them, I wouldn&#39;t have found enki for use in powering this blog. This post is about trying to understand something confusing in something great; I&#39;m not trying to imply that either should be done away with or that I could do better. I just wanted to head off the most major take-it-the-wrong-way that occurred to me on the way in this morning.</p>
+</div>
+
+
+ <footer>
+ <p class="meta">
+
+
+
+<span class="byline author vcard">Posted by <span class="fn">Ben Hamill</span></span>
+
+
+
+
+
+
+
+
+
+
+
+
+
+<time datetime="2008-12-16T00:00:00-06:00" pubdate data-updated="true">Dec 16<span>th</span>, 2008</time>
+
+
+
+ </p>
+
+ <div class="sharing">
+
+ <a href="http://twitter.com/share" class="twitter-share-button" data-url="http://garbled.benhamill.com/2008/12/16/a-hub-for-gits/" data-via="benhamill" data-counturl="http://garbled.benhamill.com/2008/12/16/a-hub-for-gits/" >Tweet</a>
+
+
+
+</div>
+
+
+ <p class="meta">
+
+ <a class="basic-alignment left" href="/2008/12/13/new-blog/" title="Previous Post: New Blog">&laquo; New Blog</a>
+
+
+ <a class="basic-alignment right" href="/2008/12/16/sudo-on-windows-xp-sort-of/" title="Next Post: Sudo on Windows XP... Sort of">Sudo on Windows XP... Sort of &raquo;</a>
+
+ </p>
+ </footer>
+</article>
+
+</div>
+
+<aside class="sidebar">
+
+
+<section>
+ <h1>About Me</h1>
+ <div id="twitter-profile">
+ <img src="http://www.gravatar.com/avatar/4938b4569f1366168b705ce9c774ea5e" alt="Gravatar of Ben Hamill " title="Gravatar of Ben Hamill" />
+ <p>
+ <strong>Ben Hamill</strong>
+ @<a href="http://twitter.com/benhamill">benhamill</a>
+ </p>
+ <p>Rubyist, hacker, gamer (video, board, role-playing), fanboy (Linux, git, vim, Firefly, Dr Pepper), language pedant. Nerd.</p>
+ </div>
+</section>
+
+<section>
+ <h1>Recent Posts</h1>
+ <ul id="recent_posts">
+
+ <li class="post">
+ <a href="/2012/08/31/lol-civil-liberties/">LOL Civil Liberties</a>
+ </li>
+
+ <li class="post">
+ <a href="/2012/02/03/install-ruby-enterprise-edition-with-ruby-install-on-arch-linux/">Install Ruby Enterprise Edition With ruby-build On Arch Linux</a>
+ </li>
+
+ <li class="post">
+ <a href="/2012/01/19/changems/">Changems</a>
+ </li>
+
+ <li class="post">
+ <a href="/2012/01/04/the-parameter-object-pattern/">The Parameter Object Pattern</a>
+ </li>
+
+ <li class="post">
+ <a href="/2011/08/25/a-smarter-has_many-through/">A Smarter has_many :through?</a>
+ </li>
+
+ </ul>
+</section>
+
+<section>
+ <h1>GitHub Repos</h1>
+ <ul id="gh_repos">
+ <li class="loading">Status updating...</li>
+ </ul>
+
+ <a href="https://github.com/benhamill">@benhamill</a> on GitHub
+
+ <script type="text/javascript">
+ $(document).ready(function(){
+ if (!window.jXHR){
+ var jxhr = document.createElement('script');
+ jxhr.type = 'text/javascript';
+ jxhr.src = '/javascripts/libs/jXHR.js';
+ var s = document.getElementsByTagName('script')[0];
+ s.parentNode.insertBefore(jxhr, s);
+ }
+
+ github.showRepos({
+ user: 'benhamill',
+ count: 5,
+ skip_forks: true,
+ target: '#gh_repos'
+ });
+ });
+ </script>
+ <script src="/javascripts/github.js" type="text/javascript"> </script>
+</section>
+
+
+
+</aside>
+
+
+ </div>
+ </div>
+ <footer role="contentinfo"><p>
+ Copyright &copy; 2013 - Ben Hamill -
+ <span class="credit">Powered by <a href="http://octopress.org">Octopress</a></span>
+</p>
+
+</footer>
+
+
+
+
+
+
+
+
+ <script type="text/javascript">
+ (function(){
+ var twitterWidgets = document.createElement('script');
+ twitterWidgets.type = 'text/javascript';
+ twitterWidgets.async = true;
+ twitterWidgets.src = 'http://platform.twitter.com/widgets.js';
+ document.getElementsByTagName('head')[0].appendChild(twitterWidgets);
+ })();
+ </script>
+
+
+
+
+
+</body>
+</html>
View
259 2008/12/16/sudo-on-windows-xp-sort-of/index.html
@@ -0,0 +1,259 @@
+
+<!DOCTYPE html>
+<!--[if IEMobile 7 ]><html class="no-js iem7"><![endif]-->
+<!--[if lt IE 9]><html class="no-js lte-ie8"><![endif]-->
+<!--[if (gt IE 8)|(gt IEMobile 7)|!(IEMobile)|!(IE)]><!--><html class="no-js" lang="en"><!--<![endif]-->
+<head>
+ <meta charset="utf-8">
+ <title>Sudo on Windows XP... Sort of - Garbled</title>
+ <meta name="author" content="Ben Hamill">
+
+
+ <meta name="description" content="I&#39;m mostly posting this to document it to myself, since I always forget, but it might be helpful to any readers, as well. You generally don&#39;t &hellip;">
+
+
+ <!-- http://t.co/dKP3o1e -->
+ <meta name="HandheldFriendly" content="True">
+ <meta name="MobileOptimized" content="320">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+
+
+ <link rel="canonical" href="http://garbled.benhamill.com/2008/12/16/sudo-on-windows-xp-sort-of">
+ <link href="/favicon.png" rel="icon">
+ <link href="/stylesheets/screen.css" media="screen, projection" rel="stylesheet" type="text/css">
+ <link href="/atom.xml" rel="alternate" title="Garbled" type="application/atom+xml">
+ <script src="/javascripts/modernizr-2.0.js"></script>
+ <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
+ <script>!window.jQuery && document.write(unescape('%3Cscript src="./javascripts/lib/jquery.min.js"%3E%3C/script%3E'))</script>
+ <script src="/javascripts/octopress.js" type="text/javascript"></script>
+ <!--Fonts from Google"s Web font directory at http://google.com/webfonts -->
+<link href="http://fonts.googleapis.com/css?family=PT+Serif:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css">
+<link href="http://fonts.googleapis.com/css?family=PT+Sans:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css">
+
+
+
+</head>
+
+<body >
+ <header role="banner"><hgroup>
+ <h1><a href="/">Garbled</a></h1>
+
+ <h2>garbled = Blog.new(author: 'Ben Hamill')</h2>
+
+</hgroup>
+
+</header>
+ <nav role="navigation"><ul class="subscription" data-subscription="rss">
+ <li><a href="/atom.xml" rel="subscribe-rss" title="subscribe via RSS">RSS</a></li>
+
+</ul>
+
+<form action="http://google.com/search" method="get">
+ <fieldset role="search">
+ <input type="hidden" name="q" value="site:garbled.benhamill.com" />
+ <input class="search" type="text" name="q" results="0" placeholder="Search"/>
+ </fieldset>
+</form>
+
+<ul class="main-navigation">
+ <li><a href="/">Blog</a></li>
+ <li><a href="/blog/archives">Archives</a></li>
+ <li><a href="/about">About</a></li>
+</ul>
+
+</nav>
+ <div id="main">
+ <div id="content">
+ <div>
+<article class="hentry" role="article">
+
+ <header>
+
+ <h1 class="entry-title">Sudo on Windows XP... Sort Of</h1>
+
+
+ <p class="meta">
+
+
+
+
+
+
+
+
+
+
+
+
+<time datetime="2008-12-16T00:00:00-06:00" pubdate data-updated="true">Dec 16<span>th</span>, 2008</time>
+
+ </p>
+
+ </header>
+
+
+<div class="entry-content"><p>I&#39;m mostly posting this to document it to myself, since I always forget, but it might be helpful to any readers, as well. You generally don&#39;t want to be logging in to your computer as a user with admin privileges and a sane OS (like Mac OS or Linux), makes it a fairly painless experience. Windows, on the other hand, can be a real bear on the point. Specifically, Windows Explorer doesn&#39;t like to do the whole &quot;Run as&#8230;&quot; thing. I&#39;ve discovered a wonderful little run line that will solve this problem.</p>
+
+<p>In the run line (Windows key, then R or click Start menu then Run&#8230;) put in <code>runas /u:administrator &quot;explorer.exe /separate&quot;</code>. You&#39;ll want to replace <code>administrator</code> with an appropriate user name if that&#39;s not a valid one. A DOS prompt will appear asking for the password and away you go. This tip thanks to <a href="http://stackoverflow.com/questions/13805/opening-explorer-shell-with-admin-priveleges-on-xp-with-ie7-installed">Stack Overflow</a>.</p>
+
+<p>I also found something else handy <a href="http://pcwizkid.blogspot.com/2008/03/create-shorcuts-of-hidden-commands-in.html">here</a>: You can input run-line commands into the &quot;location&quot; prompt when creating a shortcut from scratch in Windows. So if you don&#39;t want to type out all that /u:administrator stuff all day (or, well, probably not that frequently and you&#39;d forget it), then you can right-click &gt; New &gt; shortcut and paste your command into the location. Call it whatever you want and then you&#39;ve got a shortcut to an admin Windows Explorer right on your desktop.</p>
+
+<p>I find this so much easier to deal with than any other solution when I need to muck with file permissions or any number of things in Windows. Helpful? Didn&#39;t work for you? Thoughts on the site design? Let me know in the comments.</p>
+</div>
+
+
+ <footer>
+ <p class="meta">
+
+
+
+<span class="byline author vcard">Posted by <span class="fn">Ben Hamill</span></span>
+
+
+
+
+
+
+
+
+
+
+
+
+
+<time datetime="2008-12-16T00:00:00-06:00" pubdate data-updated="true">Dec 16<span>th</span>, 2008</time>
+
+
+
+ </p>
+
+ <div class="sharing">
+
+ <a href="http://twitter.com/share" class="twitter-share-button" data-url="http://garbled.benhamill.com/2008/12/16/sudo-on-windows-xp-sort-of/" data-via="benhamill" data-counturl="http://garbled.benhamill.com/2008/12/16/sudo-on-windows-xp-sort-of/" >Tweet</a>
+
+
+
+</div>
+
+
+ <p class="meta">
+
+ <a class="basic-alignment left" href="/2008/12/16/a-hub-for-gits/" title="Previous Post: A Hub for Gits">&laquo; A Hub for Gits</a>
+
+
+ <a class="basic-alignment right" href="/2008/12/23/otherinbox-is-for-email-from-computers/" title="Next Post: OtherInbox Is For Email From Computers">OtherInbox Is For Email From Computers &raquo;</a>
+
+ </p>
+ </footer>
+</article>
+
+</div>
+
+<aside class="sidebar">
+
+
+<section>
+ <h1>About Me</h1>
+ <div id="twitter-profile">
+ <img src="http://www.gravatar.com/avatar/4938b4569f1366168b705ce9c774ea5e" alt="Gravatar of Ben Hamill " title="Gravatar of Ben Hamill" />
+ <p>
+ <strong>Ben Hamill</strong>
+ @<a href="http://twitter.com/benhamill">benhamill</a>
+ </p>
+ <p>Rubyist, hacker, gamer (video, board, role-playing), fanboy (Linux, git, vim, Firefly, Dr Pepper), language pedant. Nerd.</p>
+ </div>
+</section>
+
+<section>
+ <h1>Recent Posts</h1>
+ <ul id="recent_posts">
+
+ <li class="post">
+ <a href="/2012/08/31/lol-civil-liberties/">LOL Civil Liberties</a>
+ </li>
+
+ <li class="post">
+ <a href="/2012/02/03/install-ruby-enterprise-edition-with-ruby-install-on-arch-linux/">Install Ruby Enterprise Edition With ruby-build On Arch Linux</a>
+ </li>
+
+ <li class="post">
+ <a href="/2012/01/19/changems/">Changems</a>
+ </li>
+
+ <li class="post">
+ <a href="/2012/01/04/the-parameter-object-pattern/">The Parameter Object Pattern</a>
+ </li>
+
+ <li class="post">
+ <a href="/2011/08/25/a-smarter-has_many-through/">A Smarter has_many :through?</a>
+ </li>
+
+ </ul>
+</section>
+
+<section>
+ <h1>GitHub Repos</h1>
+ <ul id="gh_repos">
+ <li class="loading">Status updating...</li>
+ </ul>
+
+ <a href="https://github.com/benhamill">@benhamill</a> on GitHub
+
+ <script type="text/javascript">
+ $(document).ready(function(){
+ if (!window.jXHR){
+ var jxhr = document.createElement('script');
+ jxhr.type = 'text/javascript';
+ jxhr.src = '/javascripts/libs/jXHR.js';
+ var s = document.getElementsByTagName('script')[0];
+ s.parentNode.insertBefore(jxhr, s);
+ }
+
+ github.showRepos({
+ user: 'benhamill',
+ count: 5,
+ skip_forks: true,
+ target: '#gh_repos'
+ });
+ });
+ </script>
+ <script src="/javascripts/github.js" type="text/javascript"> </script>
+</section>
+
+
+
+</aside>
+
+
+ </div>
+ </div>
+ <footer role="contentinfo"><p>
+ Copyright &copy; 2013 - Ben Hamill -
+ <span class="credit">Powered by <a href="http://octopress.org">Octopress</a></span>
+</p>
+
+</footer>
+
+
+
+
+
+
+
+
+ <script type="text/javascript">
+ (function(){
+ var twitterWidgets = document.createElement('script');
+ twitterWidgets.type = 'text/javascript';
+ twitterWidgets.async = true;
+ twitterWidgets.src = 'http://platform.twitter.com/widgets.js';
+ document.getElementsByTagName('head')[0].appendChild(twitterWidgets);
+ })();
+ </script>
+
+
+
+
+
+</body>
+</html>
View
275 2008/12/23/otherinbox-is-for-email-from-computers/index.html
@@ -0,0 +1,275 @@
+
+<!DOCTYPE html>
+<!--[if IEMobile 7 ]><html class="no-js iem7"><![endif]-->
+<!--[if lt IE 9]><html class="no-js lte-ie8"><![endif]-->
+<!--[if (gt IE 8)|(gt IEMobile 7)|!(IEMobile)|!(IE)]><!--><html class="no-js" lang="en"><!--<![endif]-->
+<head>
+ <meta charset="utf-8">
+ <title>OtherInbox Is For Email From Computers - Garbled</title>
+ <meta name="author" content="Ben Hamill">
+
+
+ <meta name="description" content="So I use this great thing called OtherInbox. They&#39;re in closed beta just now, but if you follow them on Twitter you&#39;re likely to see when &hellip;">
+
+
+ <!-- http://t.co/dKP3o1e -->
+ <meta name="HandheldFriendly" content="True">
+ <meta name="MobileOptimized" content="320">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+
+
+ <link rel="canonical" href="http://garbled.benhamill.com/2008/12/23/otherinbox-is-for-email-from-computers">
+ <link href="/favicon.png" rel="icon">
+ <link href="/stylesheets/screen.css" media="screen, projection" rel="stylesheet" type="text/css">
+ <link href="/atom.xml" rel="alternate" title="Garbled" type="application/atom+xml">
+ <script src="/javascripts/modernizr-2.0.js"></script>
+ <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
+ <script>!window.jQuery && document.write(unescape('%3Cscript src="./javascripts/lib/jquery.min.js"%3E%3C/script%3E'))</script>
+ <script src="/javascripts/octopress.js" type="text/javascript"></script>
+ <!--Fonts from Google"s Web font directory at http://google.com/webfonts -->
+<link href="http://fonts.googleapis.com/css?family=PT+Serif:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css">
+<link href="http://fonts.googleapis.com/css?family=PT+Sans:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css">
+
+
+
+</head>
+
+<body >
+ <header role="banner"><hgroup>
+ <h1><a href="/">Garbled</a></h1>
+
+ <h2>garbled = Blog.new(author: 'Ben Hamill')</h2>
+
+</hgroup>
+
+</header>
+ <nav role="navigation"><ul class="subscription" data-subscription="rss">
+ <li><a href="/atom.xml" rel="subscribe-rss" title="subscribe via RSS">RSS</a></li>
+
+</ul>
+
+<form action="http://google.com/search" method="get">
+ <fieldset role="search">
+ <input type="hidden" name="q" value="site:garbled.benhamill.com" />
+ <input class="search" type="text" name="q" results="0" placeholder="Search"/>
+ </fieldset>
+</form>
+
+<ul class="main-navigation">
+ <li><a href="/">Blog</a></li>
+ <li><a href="/blog/archives">Archives</a></li>
+ <li><a href="/about">About</a></li>
+</ul>
+
+</nav>
+ <div id="main">
+ <div id="content">
+ <div>
+<article class="hentry" role="article">
+
+ <header>
+
+ <h1 class="entry-title">OtherInbox Is for Email From Computers</h1>
+
+
+ <p class="meta">
+
+
+
+
+
+
+
+
+
+
+
+
+<time datetime="2008-12-23T00:00:00-06:00" pubdate data-updated="true">Dec 23<span>rd</span>, 2008</time>
+
+ </p>
+
+ </header>
+
+
+<div class="entry-content"><p>So I use this great thing called <a href="http://otherinbox.com">OtherInbox</a>. They&#39;re in closed beta just now, but if you <a href="http://twitter.com/otherinbox">follow them on Twitter</a> you&#39;re likely to see when they hand out another round of invites (which they recently tweeted would be coming early in January, if I remember right). Let me tell you a bit about OI before I go into my rant. Hopefully it will segue nicely.</p>
+
+<p>OtherInbox is an email, uh&#8230; application. Like Gmail or Hotmail, sort of. When you sign up for OI, though, you don&#39;t get <em>username</em>@otherinbox.com, you get a whole subdomain and infinite email addresses at it. So, <em>whateveryouwant</em>@<em>username</em>.otherinbox.com. Then, when you login to your account, you&#39;re presented with folders based on the email address that the email came to. It&#39;s sort of like filters in other email clients, except you don&#39;t have to set them up, you just hand out a new email address. So if I sign up for a new site, I hand it <em>sitename</em>@<em>username</em>.otherinbox.com and when they send me email, it automatically goes to a folder in my OI named after that site. So I have an Amazon folder and a Twitter folder, etc. etc.</p>
+
+<p>You can also have a vanity URL and edit your MX records on the host so that email gets routed to OI&#39;s servers, so that you don&#39;t have to use the long <em>username</em>.otherinbox.com in your emails. So I have benhamill.com set up that way. Very, very nice feature, that.</p>
+
+<p>Okay, so why might you want this service? Well, spam, firstly. If I&#39;ve only ever given a certain email address away to amazon.com and I start getting spam to that address, I know who the culprit is. Also, if I want to sign up for something that I expect to get spam from, I can do so without fear. After getting that confirmation email, I can just hit the &quot;Block All&quot; button and OI will just not show me those messages. I don&#39;t have to worry about it ever again.</p>
+
+<p>Another use case which I&#39;m loving is when you sign up for what&#39;s called bacn; stuff you want, but not, you know, right now. I use OI to sign up for email lists and such that I don&#39;t want cluttering up my inbox. Stuff I might want to read, but over the weekend or whatever; stuff that&#39;s not time-sensitive.</p>
+
+<p>Which leads me to my rant. If you&#39;re not an OtherInbox user, the following might not make a lot of sense, so you might want to skip it until you are. And I highly recommend you become one. I found that the more I used it, the more I liked it. So, rant on&#8230;</p>
+
+<p>OtherInbox is <strong>not your primary inbox</strong>. It&#39;s right there in the name. I was confused about this at first, too, but it should be obvious. You don&#39;t ditch gmail for OI. You use them both. How you divide it up is something people do differently, but here&#39;s my rule of thumb: If it is sent by a computer (as opposed to a human), it goes to OI. What this does (ideally, since I haven&#39;t finished converting all my accounts over to OI addresses) is makes it such that the only emails that show up in my gmail account are ones that are actually to me.</p>
+
+<p>I mean&#8211;how many emails do you get from computers? If you&#39;re like me then a lot. I get email every time someone follows me on Twitter and every time someone sends me a message in my online Diplomacy game and every month when Rock Band sends out their &quot;zine&quot;. Why not have a computer help me deal with it all? It&#39;s not going to read it for me, of course, but it <em>will</em> help me process them. If I know I ordered something from Amazon, then I will look at new emails to my amazon address when they show up. Otherwise, I&#39;ll probably ignore it.</p>
+
+<p>However, OI is pretty bad at displaying conversations. I mean&#8211;that&#39;s not a fault, that&#39;s not part of their core mission. They&#39;ve been talking about adding a feature like that since it makes sense for mailing lists, but for personal email, gmail is still king. Tags and search and conversation view, etc. That&#39;s what gmail is good at. OI is good at sorting spam and bacn.</p>
+
+<p>People who talk about having their friends each email an OI address based on their name just confuse me. Your friends aren&#39;t going to sell your email address to spammers or send you stuff you don&#39;t want to read (or, if they are, get new friends&#8230; elderly relatives, on the other hand, who will send you random jokes might warrant an OI address), so there&#39;s no need to hide you <em>real</em> email address. If you want, you can set up auto-forwarding for an OI address, but just hand that out to real people like you would your real address.</p>
+
+<p>It can get sort of heady, making up any old address to give to people, but if you&#39;re handing out OI addresses to real people, you&#39;re sort of defeating the purpose of OtherInbox. Either you&#39;re using OI&#39;s interface, which is optimized for dealing with emails en mass, or you&#39;re having to set up a bunch of auto-forwards to your primary inbox (with the nice interface for dealing with individual emails). OI is supposed to make it so you <em>don&#39;t</em> have to set up filters or auto-forwards all the time.</p>
+
+<p>I really love OtherInbox. If you&#39;re not a user (and you didn&#39;t skip the rant), really go follow them on Twitter and get an invite code. Or find someone who&#39;s in the beta now and see if they have any invites left (I have a single one as of this writing). I didn&#39;t think I was really an awesome candidate for an OI user, but that&#39;s only because I didn&#39;t realize how much email I get from computers. It&#39;s really freeing to be able to click &quot;Yes, send me updates&quot; on everything. If you never get anything from them that&#39;s worth your time, you never waste any time on it. Throwing away that email address it completely trivial. The real trick to having OtherInbox improve your life is not swimming against the stream, though. So remember my rant when you sign up.</p>
+</div>
+
+
+ <footer>
+ <p class="meta">
+
+
+
+<span class="byline author vcard">Posted by <span class="fn">Ben Hamill</span></span>
+
+
+
+
+
+
+
+
+
+
+
+
+
+<time datetime="2008-12-23T00:00:00-06:00" pubdate data-updated="true">Dec 23<span>rd</span>, 2008</time>
+
+
+
+ </p>
+
+ <div class="sharing">
+
+ <a href="http://twitter.com/share" class="twitter-share-button" data-url="http://garbled.benhamill.com/2008/12/23/otherinbox-is-for-email-from-computers/" data-via="benhamill" data-counturl="http://garbled.benhamill.com/2008/12/23/otherinbox-is-for-email-from-computers/" >Tweet</a>
+
+
+
+</div>
+
+
+ <p class="meta">
+
+ <a class="basic-alignment left" href="/2008/12/16/sudo-on-windows-xp-sort-of/" title="Previous Post: Sudo on Windows XP... Sort of">&laquo; Sudo on Windows XP... Sort of</a>
+
+
+ <a class="basic-alignment right" href="/2009/01/09/save-versus-github/" title="Next Post: Save Versus GitHub!">Save Versus GitHub! &raquo;</a>
+
+ </p>
+ </footer>
+</article>
+
+</div>
+
+<aside class="sidebar">
+
+
+<section>
+ <h1>About Me</h1>
+ <div id="twitter-profile">
+ <img src="http://www.gravatar.com/avatar/4938b4569f1366168b705ce9c774ea5e" alt="Gravatar of Ben Hamill " title="Gravatar of Ben Hamill" />
+ <p>
+ <strong>Ben Hamill</strong>
+ @<a href="http://twitter.com/benhamill">benhamill</a>
+ </p>
+ <p>Rubyist, hacker, gamer (video, board, role-playing), fanboy (Linux, git, vim, Firefly, Dr Pepper), language pedant. Nerd.</p>
+ </div>
+</section>
+
+<section>
+ <h1>Recent Posts</h1>
+ <ul id="recent_posts">
+
+ <li class="post">
+ <a href="/2012/08/31/lol-civil-liberties/">LOL Civil Liberties</a>
+ </li>
+
+ <li class="post">
+ <a href="/2012/02/03/install-ruby-enterprise-edition-with-ruby-install-on-arch-linux/">Install Ruby Enterprise Edition With ruby-build On Arch Linux</a>
+ </li>
+
+ <li class="post">
+ <a href="/2012/01/19/changems/">Changems</a>
+ </li>
+
+ <li class="post">
+ <a href="/2012/01/04/the-parameter-object-pattern/">The Parameter Object Pattern</a>
+ </li>
+
+ <li class="post">
+ <a href="/2011/08/25/a-smarter-has_many-through/">A Smarter has_many :through?</a>
+ </li>
+
+ </ul>
+</section>
+
+<section>
+ <h1>GitHub Repos</h1>
+ <ul id="gh_repos">
+ <li class="loading">Status updating...</li>
+ </ul>
+
+ <a href="https://github.com/benhamill">@benhamill</a> on GitHub
+
+ <script type="text/javascript">
+ $(document).ready(function(){
+ if (!window.jXHR){
+ var jxhr = document.createElement('script');
+ jxhr.type = 'text/javascript';
+ jxhr.src = '/javascripts/libs/jXHR.js';
+ var s = document.getElementsByTagName('script')[0];
+ s.parentNode.insertBefore(jxhr, s);
+ }
+
+ github.showRepos({
+ user: 'benhamill',
+ count: 5,
+ skip_forks: true,
+ target: '#gh_repos'
+ });
+ });
+ </script>
+ <script src="/javascripts/github.js" type="text/javascript"> </script>
+</section>
+
+
+
+</aside>
+
+
+ </div>
+ </div>
+ <footer role="contentinfo"><p>
+ Copyright &copy; 2013 - Ben Hamill -
+ <span class="credit">Powered by <a href="http://octopress.org">Octopress</a></span>
+</p>
+
+</footer>
+
+
+
+
+
+
+
+
+ <script type="text/javascript">
+ (function(){
+ var twitterWidgets = document.createElement('script');
+ twitterWidgets.type = 'text/javascript';
+ twitterWidgets.async = true;
+ twitterWidgets.src = 'http://platform.twitter.com/widgets.js';
+ document.getElementsByTagName('head')[0].appendChild(twitterWidgets);
+ })();
+ </script>
+
+
+
+
+
+</body>
+</html>
View
271 2009/01/09/save-versus-github/index.html
@@ -0,0 +1,271 @@
+
+<!DOCTYPE html>
+<!--[if IEMobile 7 ]><html class="no-js iem7"><![endif]-->
+<!--[if lt IE 9]><html class="no-js lte-ie8"><![endif]-->
+<!--[if (gt IE 8)|(gt IEMobile 7)|!(IEMobile)|!(IE)]><!--><html class="no-js" lang="en"><!--<![endif]-->
+<head>
+ <meta charset="utf-8">
+ <title>Save Versus GitHub! - Garbled</title>
+ <meta name="author" content="Ben Hamill">
+
+
+ <meta name="description" content="I&#39;m reaching a point where I want everything in my life to be version controlled. I made a desktop making fun of my friend in the GIMP the other &hellip;">
+
+
+ <!-- http://t.co/dKP3o1e -->
+ <meta name="HandheldFriendly" content="True">
+ <meta name="MobileOptimized" content="320">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+
+
+ <link rel="canonical" href="http://garbled.benhamill.com/2009/01/09/save-versus-github">
+ <link href="/favicon.png" rel="icon">
+ <link href="/stylesheets/screen.css" media="screen, projection" rel="stylesheet" type="text/css">
+ <link href="/atom.xml" rel="alternate" title="Garbled" type="application/atom+xml">
+ <script src="/javascripts/modernizr-2.0.js"></script>
+ <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
+ <script>!window.jQuery && document.write(unescape('%3Cscript src="./javascripts/lib/jquery.min.js"%3E%3C/script%3E'))</script>
+ <script src="/javascripts/octopress.js" type="text/javascript"></script>
+ <!--Fonts from Google"s Web font directory at http://google.com/webfonts -->
+<link href="http://fonts.googleapis.com/css?family=PT+Serif:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css">
+<link href="http://fonts.googleapis.com/css?family=PT+Sans:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css">
+
+
+
+</head>
+
+<body >
+ <header role="banner"><hgroup>
+ <h1><a href="/">Garbled</a></h1>
+
+ <h2>garbled = Blog.new(author: 'Ben Hamill')</h2>
+
+</hgroup>
+
+</header>
+ <nav role="navigation"><ul class="subscription" data-subscription="rss">
+ <li><a href="/atom.xml" rel="subscribe-rss" title="subscribe via RSS">RSS</a></li>
+
+</ul>
+
+<form action="http://google.com/search" method="get">
+ <fieldset role="search">
+ <input type="hidden" name="q" value="site:garbled.benhamill.com" />
+ <input class="search" type="text" name="q" results="0" placeholder="Search"/>
+ </fieldset>
+</form>
+
+<ul class="main-navigation">
+ <li><a href="/">Blog</a></li>
+ <li><a href="/blog/archives">Archives</a></li>
+ <li><a href="/about">About</a></li>
+</ul>
+
+</nav>
+ <div id="main">
+ <div id="content">
+ <div>
+<article class="hentry" role="article">
+
+ <header>
+
+ <h1 class="entry-title">Save Versus GitHub!</h1>
+
+
+ <p class="meta">
+
+
+
+
+
+
+
+
+
+
+
+
+<time datetime="2009-01-09T00:00:00-06:00" pubdate data-updated="true">Jan 9<span>th</span>, 2009</time>
+
+ </p>
+
+ </header>
+
+
+<div class="entry-content"><p>I&#39;m reaching a point where I want everything in my life to be version controlled. I made a desktop making fun of my friend in the GIMP the other day and realized that I wanted it version controlled. I don&#39;t think Git will handle .xcf&#39;s. Pity, though.</p>
+
+<p>My most recent action on this front doesn&#39;t actually have to do with Dungeons &amp; Dragons, but that&#39;s only because my system of choice is GURPS. I game master role playing games as a hobby and keeping track of campaign ideas has, in the past, been very disorganized and messy. I had scraps of paper all over and various emails to myself. If I have some brilliant idea at work, I can&#39;t just incorporate it into my notes or whatever, I&#39;d have to email it to myself and then hope it was clear enough to remember what the actual idea was later, etc. If I was on the bus, I had my laptop (which I use to assist in GMing) and I could put it right into the notes, but recently I had some major stability issues with that machine and so became concerned about backups, etc.</p>
+
+<p>Thus, I <a href="http://twitter.com/benhamill/status/1090481503">had an idea</a>. I&#39;ve converted the essentials from my current campaign and put them in a repo and I&#39;m working on notes for my next campaign there. There are several benefits, here:</p>
+
+<p>The first is that before, I was using OpenOffice documents for my notes. This allowed for some pretty formatting, but when I had my timeline open, my NPC list, my session notes and my location notes all open, well&#8230; Open Office isn&#39;t a lean program and my lappy isn&#39;t the beefiest of machines. So now everything is a .txt and that&#39;s super lean. Yay. I&#39;m aware, by the way, that this is very tangentially related to version controlling my notes, but still.</p>
+
+<p>Secondly, I can check out a copy on any machine I&#39;m sitting at when I have an idea. Or, if I really want to, I can edit them right on GitHub. Neat. As a sort of corollary to this is the fact that if my lappy were to get dropped, say, off a mountain, I could borrow anyone else&#39;s laptop and be ready to roll in about 20 minutes as long as I had internet access.</p>
+
+<p>Thirdly, since I&#39;m using git as opposed to, say, SVN, I don&#39;t <strong>have</strong> to have internet access. Local repos means I can make a commit on my laptop while on the bus and then push when I get home. Very handy since I do a lot of my thinking about campaigns on the bus.</p>
+
+<p>Fourthly (this list is getting longer than I thought it would), is character data. So there is a piece of software that you can buy to help you create and track GURPS characters (whether non-player character or player character). Handily, it saves them in plaintext (I think it&#39;s actually .Net code or something unhelpful, not YAML or XML or similar, but nothing&#39;s perfect), so I can version control the characters, too, not just notes.</p>
+
+<p>Fifthly (good grief), a friend of mine and sort of my GM mentor moved away and doesn&#39;t have a gaming group. In order to get his fix, he&#39;s convinced me (for the good and the bad of it) to let him help me plan and brainstorm my next campaign. He can check out a copy, branch it, issue a pull request (or I&#39;ll give him push access, not sure). Collaborative GMing is something that often can go wrong, but this tool, teamed up with some other guidelines we&#39;ve adopted will help ensure that we get only the benefits out of this.</p>
+
+<p>About the only things that I&#39;d use for a campaign that it won&#39;t version control are pictures and sound files, but I don&#39;t expect to do a lot of changing of those over the course of things and, any way, it <strong>will</strong> save them, so it at least acts as a backup. While we&#39;re talking about negatives&#8230; My players could snoop the notes. Oh noes! In reality, I&#39;ll have to just trust them to stay out. They&#39;d only be ruining their own fun, anyway.</p>
+
+<p>So, a sixth, I guess, benefit is that I can share my notes with the world and if someone else sees something cool they want to steal or sees something sucky that they can do better then I&#39;ve inspired them or at least helped them out a bit. If you like (and aren&#39;t one of my players), feel free to <a href="https://github.com/BenHamill/rpg-notes/tree">check it out</a>. If you have questions about anything in there, feel free to shoot me an email. I make no promises that anything in there will be better than total suck.</p>
+</div>
+
+
+ <footer>
+ <p class="meta">
+
+
+
+<span class="byline author vcard">Posted by <span class="fn">Ben Hamill</span></span>
+
+
+
+
+
+
+
+
+
+
+
+
+
+<time datetime="2009-01-09T00:00:00-06:00" pubdate data-updated="true">Jan 9<span>th</span>, 2009</time>
+
+
+
+ </p>
+
+ <div class="sharing">
+
+ <a href="http://twitter.com/share" class="twitter-share-button" data-url="http://garbled.benhamill.com/2009/01/09/save-versus-github/" data-via="benhamill" data-counturl="http://garbled.benhamill.com/2009/01/09/save-versus-github/" >Tweet</a>
+
+
+
+</div>
+
+
+ <p class="meta">
+
+ <a class="basic-alignment left" href="/2008/12/23/otherinbox-is-for-email-from-computers/" title="Previous Post: OtherInbox Is For Email From Computers">&laquo; OtherInbox Is For Email From Computers</a>
+
+
+ <a class="basic-alignment right" href="/2009/02/10/my-twitter-project-atreply/" title="Next Post: My Twitter Project: atreply">My Twitter Project: atreply &raquo;</a>
+
+ </p>
+ </footer>
+</article>
+
+</div>
+
+<aside class="sidebar">
+
+
+<section>
+ <h1>About Me</h1>
+ <div id="twitter-profile">
+ <img src="http://www.gravatar.com/avatar/4938b4569f1366168b705ce9c774ea5e" alt="Gravatar of Ben Hamill " title="Gravatar of Ben Hamill" />
+ <p>
+ <strong>Ben Hamill</strong>
+ @<a href="http://twitter.com/benhamill">benhamill</a>
+ </p>
+ <p>Rubyist, hacker, gamer (video, board, role-playing), fanboy (Linux, git, vim, Firefly, Dr Pepper), language pedant. Nerd.</p>
+ </div>
+</section>
+
+<section>
+ <h1>Recent Posts</h1>
+ <ul id="recent_posts">
+
+ <li class="post">
+ <a href="/2012/08/31/lol-civil-liberties/">LOL Civil Liberties</a>
+ </li>
+
+ <li class="post">
+ <a href="/2012/02/03/install-ruby-enterprise-edition-with-ruby-install-on-arch-linux/">Install Ruby Enterprise Edition With ruby-build On Arch Linux</a>
+ </li>
+
+ <li class="post">
+ <a href="/2012/01/19/changems/">Changems</a>
+ </li>
+
+ <li class="post">
+ <a href="/2012/01/04/the-parameter-object-pattern/">The Parameter Object Pattern</a>
+ </li>
+
+ <li class="post">
+ <a href="/2011/08/25/a-smarter-has_many-through/">A Smarter has_many :through?</a>
+ </li>
+
+ </ul>
+</section>
+
+<section>
+ <h1>GitHub Repos</h1>
+ <ul id="gh_repos">
+ <li class="loading">Status updating...</li>
+ </ul>
+
+ <a href="https://github.com/benhamill">@benhamill</a> on GitHub
+
+ <script type="text/javascript">
+ $(document).ready(function(){
+ if (!window.jXHR){
+ var jxhr = document.createElement('script');
+ jxhr.type = 'text/javascript';
+ jxhr.src = '/javascripts/libs/jXHR.js';
+ var s = document.getElementsByTagName('script')[0];
+ s.parentNode.insertBefore(jxhr, s);
+ }
+
+ github.showRepos({
+ user: 'benhamill',
+ count: 5,
+ skip_forks: true,
+ target: '#gh_repos'
+ });
+ });
+ </script>
+ <script src="/javascripts/github.js" type="text/javascript"> </script>
+</section>
+
+
+
+</aside>
+
+
+ </div>
+ </div>
+ <footer role="contentinfo"><p>
+ Copyright &copy; 2013 - Ben Hamill -
+ <span class="credit">Powered by <a href="http://octopress.org">Octopress</a></span>
+</p>
+
+</footer>
+
+
+
+
+
+
+
+
+ <script type="text/javascript">
+ (function(){
+ var twitterWidgets = document.createElement('script');
+ twitterWidgets.type = 'text/javascript';
+ twitterWidgets.async = true;
+ twitterWidgets.src = 'http://platform.twitter.com/widgets.js';
+ document.getElementsByTagName('head')[0].appendChild(twitterWidgets);
+ })();
+ </script>
+
+
+
+
+
+</body>
+</html>
View
331 2009/02/10/my-twitter-project-atreply/index.html
@@ -0,0 +1,331 @@
+
+<!DOCTYPE html>
+<!--[if IEMobile 7 ]><html class="no-js iem7"><![endif]-->
+<!--[if lt IE 9]><html class="no-js lte-ie8"><![endif]-->
+<!--[if (gt IE 8)|(gt IEMobile 7)|!(IEMobile)|!(IE)]><!--><html class="no-js" lang="en"><!--<![endif]-->
+<head>
+ <meta charset="utf-8">
+ <title>My Twitter Project: atreply - Garbled</title>
+ <meta name="author" content="Ben Hamill">
+
+
+ <meta name="description" content="I use Twitterfox to read and create tweets most of the time. I follow enough people that, when I open my browser for the first time for the day, more &hellip;">
+
+
+ <!-- http://t.co/dKP3o1e -->
+ <meta name="HandheldFriendly" content="True">
+ <meta name="MobileOptimized" content="320">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+
+
+ <link rel="canonical" href="http://garbled.benhamill.com/2009/02/10/my-twitter-project-atreply">
+ <link href="/favicon.png" rel="icon">
+ <link href="/stylesheets/screen.css" media="screen, projection" rel="stylesheet" type="text/css">
+ <link href="/atom.xml" rel="alternate" title="Garbled" type="application/atom+xml">
+ <script src="/javascripts/modernizr-2.0.js"></script>
+ <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
+ <script>!window.jQuery && document.write(unescape('%3Cscript src="./javascripts/lib/jquery.min.js"%3E%3C/script%3E'))</script>
+ <script src="/javascripts/octopress.js" type="text/javascript"></script>
+ <!--Fonts from Google"s Web font directory at http://google.com/webfonts -->
+<link href="http://fonts.googleapis.com/css?family=PT+Serif:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css">
+<link href="http://fonts.googleapis.com/css?family=PT+Sans:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css">
+
+
+
+</head>
+
+<body >
+ <header role="banner"><hgroup>
+ <h1><a href="/">Garbled</a></h1>
+
+ <h2>garbled = Blog.new(author: 'Ben Hamill')</h2>
+
+</hgroup>
+
+</header>
+ <nav role="navigation"><ul class="subscription" data-subscription="rss">
+ <li><a href="/atom.xml" rel="subscribe-rss" title="subscribe via RSS">RSS</a></li>
+
+</ul>
+
+<form action="http://google.com/search" method="get">
+ <fieldset role="search">
+ <input type="hidden" name="q" value="site:garbled.benhamill.com" />
+ <input class="search" type="text" name="q" results="0" placeholder="Search"/>
+ </fieldset>
+</form>
+
+<ul class="main-navigation">
+ <li><a href="/">Blog</a></li>
+ <li><a href="/blog/archives">Archives</a></li>
+ <li><a href="/about">About</a></li>
+</ul>
+
+</nav>
+ <div id="main">
+ <div id="content">
+ <div>
+<article class="hentry" role="article">
+
+ <header>
+
+ <h1 class="entry-title">My Twitter Project: Atreply</h1>
+
+
+ <p class="meta">
+
+
+
+
+
+
+
+
+
+
+
+
+<time datetime="2009-02-10T00:00:00-06:00" pubdate data-updated="true">Feb 10<span>th</span>, 2009</time>
+
+ </p>
+
+ </header>
+
+
+<div class="entry-content"><p>I use <a href="http://twitterfox.net/">Twitterfox</a> to read and create tweets most of the time. I follow enough people that, when I open my browser for the first time for the day, more than 20 tweets have accumulated and, really, I don&#39;t want to go back and read all 60-odd or whatever that have accumulated overnight. Twenty, I should note, is just what Twitterfox picks up when it first turns on.</p>
+
+<p>Occasionally, I&#39;ll come in and see the last few tweets in a conversation between two people I&#39;m following (I only see @replies by others who are to people I&#39;m also following). If it seems interesting enough, I&#39;ll go back and page through to see what they were talking about, reading in reverse order. Sort of like reading a chat log written by the guys that made <a href="http://www.imdb.com/title/tt0209144/">Memento</a>. It&#39;s not horrible, but neither is it ideal.</p>
+
+<p>So I had an idea about it and I&#39;ve started work. Twitter tracks what tweet (technically called a &quot;Twitter status&quot;, apparently) any given tweet was a reply to. And, I figured, it would be relatively simple to, given a Twitter status ID, recursively follow the reply chain back and get the whole conversation. Turns out, I was right.</p>
+
+<p>A proof of concept:</p>
+
+<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
+<span class='line-number'>2</span>
+<span class='line-number'>3</span>
+<span class='line-number'>4</span>
+<span class='line-number'>5</span>
+<span class='line-number'>6</span>
+<span class='line-number'>7</span>
+<span class='line-number'>8</span>
+<span class='line-number'>9</span>
+<span class='line-number'>10</span>
+<span class='line-number'>11</span>
+<span class='line-number'>12</span>
+<span class='line-number'>13</span>
+<span class='line-number'>14</span>
+<span class='line-number'>15</span>
+<span class='line-number'>16</span>
+<span class='line-number'>17</span>
+<span class='line-number'>18</span>
+<span class='line-number'>19</span>
+<span class='line-number'>20</span>
+<span class='line-number'>21</span>
+<span class='line-number'>22</span>
+<span class='line-number'>23</span>
+<span class='line-number'>24</span>
+<span class='line-number'>25</span>
+<span class='line-number'>26</span>
+<span class='line-number'>27</span>
+<span class='line-number'>28</span>
+<span class='line-number'>29</span>
+<span class='line-number'>30</span>
+<span class='line-number'>31</span>
+<span class='line-number'>32</span>
+<span class='line-number'>33</span>
+<span class='line-number'>34</span>
+</pre></td><td class='code'><pre><code class='ruby'><span class='line'><span class="nb">require</span> <span class="s1">&#39;rubygems&#39;</span>
+</span><span class='line'><span class="nb">require</span> <span class="s1">&#39;twitter&#39;</span>
+</span><span class='line'>
+</span><span class='line'><span class="k">class</span> <span class="nc">Reply</span>
+</span><span class='line'> <span class="kp">attr_accessor</span> <span class="ss">:text</span><span class="p">,</span> <span class="ss">:author</span><span class="p">,</span> <span class="ss">:in_reply_to</span><span class="p">,</span> <span class="ss">:time</span><span class="p">,</span> <span class="ss">:atreply</span>
+</span><span class='line'>
+</span><span class='line'> <span class="k">def</span> <span class="nf">initialize</span> <span class="n">status_id</span>
+</span><span class='line'> <span class="n">status</span> <span class="o">=</span> <span class="ss">Twitter</span><span class="p">:</span><span class="ss">:Client</span><span class="o">.</span><span class="n">new</span><span class="o">.</span><span class="n">status</span> <span class="ss">:get</span><span class="p">,</span> <span class="n">status_id</span>
+</span><span class='line'>
+</span><span class='line'> <span class="nb">self</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="n">status</span><span class="o">.</span><span class="n">text</span>
+</span><span class='line'> <span class="nb">self</span><span class="o">.</span><span class="n">author</span> <span class="o">=</span> <span class="k">if</span> <span class="n">status</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">name</span> <span class="k">then</span> <span class="n">status</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">name</span> <span class="k">else</span> <span class="n">status</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">screen_name</span> <span class="k">end</span>
+</span><span class='line'> <span class="nb">self</span><span class="o">.</span><span class="n">time</span> <span class="o">=</span> <span class="n">status</span><span class="o">.</span><span class="n">created_at</span>
+</span><span class='line'> <span class="nb">self</span><span class="o">.</span><span class="n">in_reply_to</span> <span class="o">=</span> <span class="n">status</span><span class="o">.</span><span class="n">in_reply_to_status_id</span>
+</span><span class='line'> <span class="nb">self</span><span class="o">.</span><span class="n">atreply</span> <span class="o">=</span> <span class="no">Reply</span><span class="o">.</span><span class="n">new</span> <span class="nb">self</span><span class="o">.</span><span class="n">in_reply_to</span> <span class="k">unless</span> <span class="nb">self</span><span class="o">.</span><span class="n">in_reply_to</span><span class="o">.</span><span class="n">nil?</span>
+</span><span class='line'> <span class="k">end</span>
+</span><span class='line'>
+</span><span class='line'> <span class="k">def</span> <span class="nf">each_reply</span> <span class="o">&amp;</span><span class="n">amp</span><span class="p">;</span><span class="n">block</span>
+</span><span class='line'> <span class="n">reply_chain</span><span class="o">.</span><span class="n">each</span> <span class="k">do</span> <span class="o">|</span><span class="n">reply</span><span class="o">|</span>
+</span><span class='line'> <span class="k">yield</span> <span class="n">reply</span>
+</span><span class='line'> <span class="k">end</span>
+</span><span class='line'> <span class="k">end</span>
+</span><span class='line'>
+</span><span class='line'> <span class="k">def</span> <span class="nf">to_s</span>
+</span><span class='line'> <span class="nb">self</span><span class="o">.</span><span class="n">author</span> <span class="o">+</span> <span class="s1">&#39; - &#39;</span> <span class="o">+</span> <span class="nb">self</span><span class="o">.</span><span class="n">time</span><span class="o">.</span><span class="n">to_s</span> <span class="o">+</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">+</span> <span class="nb">self</span><span class="o">.</span><span class="n">text</span>
+</span><span class='line'> <span class="k">end</span>
+</span><span class='line'>
+</span><span class='line'> <span class="kp">protected</span>
+</span><span class='line'>
+</span><span class='line'> <span class="k">def</span> <span class="nf">reply_chain</span>
+</span><span class='line'> <span class="k">return</span> <span class="o">[</span><span class="nb">self</span><span class="o">]</span> <span class="k">unless</span> <span class="nb">self</span><span class="o">.</span><span class="n">atreply</span>
+</span><span class='line'>
+</span><span class='line'> <span class="nb">self</span><span class="o">.</span><span class="n">atreply</span><span class="o">.</span><span class="n">reply_chain</span> <span class="o">&amp;</span><span class="n">lt</span><span class="p">;</span><span class="o">&amp;</span><span class="n">lt</span><span class="p">;</span> <span class="nb">self</span>
+</span><span class='line'> <span class="k">end</span>
+</span><span class='line'><span class="k">end</span>
+</span></code></pre></td></tr></table></div></figure>
+
+<p>This has a dependency on <a href="http://github.com/joshuamiller/twitter4r/tree/master">Joshuamiller&#39;s version of twitter4r</a>. My medium-term plan is to make a one-trick-website that will take an ID or twitter URL and give you the replies all pretty-like. Maybe make a bookmarklet for convenience&#39;s sake. I plan on using Rails, even though that&#39;s overkill because I figure it&#39;ll be a good learning experience on that front. Find it on <a href="http://github.com/BenHamill/atreply/tree/master">Github</a>.</p>
+</div>
+
+
+ <footer>
+ <p class="meta">
+
+
+
+<span class="byline author vcard">Posted by <span class="fn">Ben Hamill</span></span>
+
+
+
+
+
+
+
+
+
+
+
+
+
+<time datetime="2009-02-10T00:00:00-06:00" pubdate data-updated="true">Feb 10<span>th</span>, 2009</time>
+
+
+
+ </p>
+
+ <div class="sharing">
+
+ <a href="http://twitter.com/share" class="twitter-share-button" data-url="http://garbled.benhamill.com/2009/02/10/my-twitter-project-atreply/" data-via="benhamill" data-counturl="http://garbled.benhamill.com/2009/02/10/my-twitter-project-atreply/" >Tweet</a>
+
+
+
+</div>
+
+
+ <p class="meta">
+
+ <a class="basic-alignment left" href="/2009/01/09/save-versus-github/" title="Previous Post: Save Versus GitHub!">&laquo; Save Versus GitHub!</a>
+
+
+ <a class="basic-alignment right" href="/2009/02/12/version-control-your-computer/" title="Next Post: Version Control Your Computer">Version Control Your Computer &raquo;</a>
+
+ </p>
+ </footer>
+</article>
+
+</div>
+
+<aside class="sidebar">
+
+
+<section>
+ <h1>About Me</h1>
+ <div id="twitter-profile">
+ <img src="http://www.gravatar.com/avatar/4938b4569f1366168b705ce9c774ea5e" alt="Gravatar of Ben Hamill " title="Gravatar of Ben Hamill" />
+ <p>
+ <strong>Ben Hamill</strong>
+ @<a href="http://twitter.com/benhamill">benhamill</a>
+ </p>
+ <p>Rubyist, hacker, gamer (video, board, role-playing), fanboy (Linux, git, vim, Firefly, Dr Pepper), language pedant. Nerd.</p>
+ </div>
+</section>
+
+<section>
+ <h1>Recent Posts</h1>
+ <ul id="recent_posts">
+
+ <li class="post">
+ <a href="/2012/08/31/lol-civil-liberties/">LOL Civil Liberties</a>
+ </li>
+
+ <li class="post">
+ <a href="/2012/02/03/install-ruby-enterprise-edition-with-ruby-install-on-arch-linux/">Install Ruby Enterprise Edition With ruby-build On Arch Linux</a>
+ </li>
+
+ <li class="post">
+ <a href="/2012/01/19/changems/">Changems</a>
+ </li>
+
+ <li class="post">
+ <a href="/2012/01/04/the-parameter-object-pattern/">The Parameter Object Pattern</a>
+ </li>
+
+ <li class="post">
+ <a href="/2011/08/25/a-smarter-has_many-through/">A Smarter has_many :through?</a>
+ </li>
+
+ </ul>
+</section>
+
+<section>
+ <h1>GitHub Repos</h1>
+ <ul id="gh_repos">
+ <li class="loading">Status updating...</li>
+ </ul>
+
+ <a href="https://github.com/benhamill">@benhamill</a> on GitHub
+
+ <script type="text/javascript">
+ $(document).ready(function(){
+ if (!window.jXHR){
+ var jxhr = document.createElement('script');
+ jxhr.type = 'text/javascript';
+ jxhr.src = '/javascripts/libs/jXHR.js';
+ var s = document.getElementsByTagName('script')[0];
+ s.parentNode.insertBefore(jxhr, s);
+ }
+
+ github.showRepos({
+ user: 'benhamill',
+ count: 5,
+ skip_forks: true,
+ target: '#gh_repos'
+ });
+ });
+ </script>
+ <script src="/javascripts/github.js" type="text/javascript"> </script>
+</section>
+
+
+
+</aside>
+
+
+ </div>
+ </div>
+ <footer role="contentinfo"><p>
+ Copyright &copy; 2013 - Ben Hamill -
+ <span class="credit">Powered by <a href="http://octopress.org">Octopress</a></span>
+</p>
+
+</footer>
+
+
+
+
+
+
+
+
+ <script type="text/javascript">
+ (function(){
+ var twitterWidgets = document.createElement('script');
+ twitterWidgets.type = 'text/javascript';
+ twitterWidgets.async = true;
+ twitterWidgets.src = 'http://platform.twitter.com/widgets.js';
+ document.getElementsByTagName('head')[0].appendChild(twitterWidgets);
+ })();
+ </script>
+
+
+
+
+
+</body>
+</html>
View
273 2009/02/12/version-control-your-computer/index.html
@@ -0,0 +1,273 @@
+
+<!DOCTYPE html>
+<!--[if IEMobile 7 ]><html class="no-js iem7"><![endif]-->
+<!--[if lt IE 9]><html class="no-js lte-ie8"><![endif]-->
+<!--[if (gt IE 8)|(gt IEMobile 7)|!(IEMobile)|!(IE)]><!--><html class="no-js" lang="en"><!--<![endif]-->
+<head>
+ <meta charset="utf-8">
+ <title>Version Control Your Computer - Garbled</title>
+ <meta name="author" content="Ben Hamill">
+
+
+ <meta name="description" content="I&#39;ve mentioned @carl_youngblood here before. Someone once was trying to buy him something with his name on it. I think it was a key chain. You &hellip;">
+
+
+ <!-- http://t.co/dKP3o1e -->
+ <meta name="HandheldFriendly" content="True">
+ <meta name="MobileOptimized" content="320">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+
+
+ <link rel="canonical" href="http://garbled.benhamill.com/2009/02/12/version-control-your-computer">
+ <link href="/favicon.png" rel="icon">
+ <link href="/stylesheets/screen.css" media="screen, projection" rel="stylesheet" type="text/css">
+ <link href="/atom.xml" rel="alternate" title="Garbled" type="application/atom+xml">
+ <script src="/javascripts/modernizr-2.0.js"></script>
+ <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
+ <script>!window.jQuery && document.write(unescape('%3Cscript src="./javascripts/lib/jquery.min.js"%3E%3C/script%3E'))</script>
+ <script src="/javascripts/octopress.js" type="text/javascript"></script>
+ <!--Fonts from Google"s Web font directory at http://google.com/webfonts -->
+<link href="http://fonts.googleapis.com/css?family=PT+Serif:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css">
+<link href="http://fonts.googleapis.com/css?family=PT+Sans:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css">
+
+
+
+</head>
+
+<body >
+ <header role="banner"><hgroup>
+ <h1><a href="/">Garbled</a></h1>
+
+ <h2>garbled = Blog.new(author: 'Ben Hamill')</h2>
+
+</hgroup>
+
+</header>
+ <nav role="navigation"><ul class="subscription" data-subscription="rss">
+ <li><a href="/atom.xml" rel="subscribe-rss" title="subscribe via RSS">RSS</a></li>
+
+</ul>
+
+<form action="http://google.com/search" method="get">
+ <fieldset role="search">
+ <input type="hidden" name="q" value="site:garbled.benhamill.com" />
+ <input class="search" type="text" name="q" results="0" placeholder="Search"/>
+ </fieldset>
+</form>
+
+<ul class="main-navigation">
+ <li><a href="/">Blog</a></li>
+ <li><a href="/blog/archives">Archives</a></li>
+ <li><a href="/about">About</a></li>
+</ul>
+
+</nav>
+ <div id="main">
+ <div id="content">
+ <div>
+<article class="hentry" role="article">
+
+ <header>
+
+ <h1 class="entry-title">Version Control Your Computer</h1>
+
+
+ <p class="meta">
+
+
+
+
+
+
+
+
+
+
+
+
+<time datetime="2009-02-12T00:00:00-06:00" pubdate data-updated="true">Feb 12<span>th</span>, 2009</time>
+
+ </p>
+
+ </header>
+
+
+<div class="entry-content"><p>I&#39;ve mentioned @<a href="http://twitter.com/carl_youngblood">carl_youngblood</a> here before. Someone once was trying to buy him something with his name on it. I think it was a key chain. You know the kind, right? However, then didn&#39;t have &quot;Carl&quot; only &quot;Carlos&quot;. So we joked that, one day, he needs to write an operating system and name it CarlOS. Aren&#39;t we funny? I know. I&#39;m sorry. Anyway, the other day, we actually got into some OS discussion that I thought had some interesting enough ideas to post here.</p>
+
+<p>So how many computers do you own and use? I&#39;ve got a desktop at home, a laptop and a machine at work. It&#39;s sort of a bummer to have different stuff or different versions of stuff, or stuff with different preferences on different computers. At least, for me it can really jack up my work flow. Especially if there is some application I use a lot with non-default preferences. Man, that bugs me! Remembering it all, bleh.</p>
+
+<p>One thing Carl&#39;s fantasized about is having a computing environment the same everywhere you go. That&#39;s sort of a mainframe or dumb-workstation idea, which is not new at all. However, what if your whole computer were version controlled? You could branch it (so you don&#39;t have your work apps at home, etc.) and merge changes from one branch to another, if you wanted. You could check out a different branch on one machine and it would feel like you were on another.</p>
+
+<p>Clearly an OS would have to be built from the ground up for this idea. You&#39;d also have to have some kind of provision about storing the non-checked out branches locally. Also cloning the repo would be a hassle at current average (even high speed) connection speeds. But how cool would it be to install, say, Textmate at work and get all your settings right, etc. and then go home and merge that change in (You could merge it from work, I guess and then just pull from home. Whatever.)? You could get diff data (hard to implement, but with metadat not impossible):</p>
+
+<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
+<span class='line-number'>2</span>
+<span class='line-number'>3</span>
+<span class='line-number'>4</span>
+<span class='line-number'>5</span>
+</pre></td><td class='code'><pre><code class='diff'><span class='line'>$ os diff gaming HEAD
+</span><span class='line'><span class="gi">+ Steam</span>
+</span><span class='line'><span class="gi">+ Half-Life 2</span>
+</span><span class='line'><span class="gi">+ X-Fire</span>
+</span><span class='line'><span class="gd">- Textmate</span>
+</span></code></pre></td></tr></table></div></figure>
+
+<p>Or whatever. You get the idea. Reverting would making backing up and creating, uh&#8230; what does Windows call them? Recovery Points? It would make all that easy and moot. Clearly Linus Torvalds needs to be in on this &quot;project&quot;; he has the experience in both OS design and version controlling that would be invaluable. Not that, you know, Carl or I are actually considering doing anything with this idea. It&#39;s an interesting thought experiment, though.</p>
+</div>
+
+
+ <footer>
+ <p class="meta">
+
+
+
+<span class="byline author vcard">Posted by <span class="fn">Ben Hamill</span></span>
+
+
+
+
+
+
+
+
+
+
+
+
+
+<time datetime="2009-02-12T00:00:00-06:00" pubdate data-updated="true">Feb 12<span>th</span>, 2009</time>
+
+
+
+ </p>
+
+ <div class="sharing">
+
+ <a href="http://twitter.com/share" class="twitter-share-button" data-url="http://garbled.benhamill.com/2009/02/12/version-control-your-computer/" data-via="benhamill" data-counturl="http://garbled.benhamill.com/2009/02/12/version-control-your-computer/" >Tweet</a>
+
+
+
+</div>
+
+
+ <p class="meta">
+
+ <a class="basic-alignment left" href="/2009/02/10/my-twitter-project-atreply/" title="Previous Post: My Twitter Project: atreply">&laquo; My Twitter Project: atreply</a>
+
+
+ <a class="basic-alignment right" href="/2009/03/18/git-tutorials-suck-a-sucky-git-tutorial/" title="Next Post: Git Tutorials Suck, A Sucky Git Tutorial">Git Tutorials Suck, A Sucky Git Tutorial &raquo;</a>
+
+ </p>
+ </footer>
+</article>
+
+</div>
+
+<aside class="sidebar">
+
+
+<section>
+ <h1>About Me</h1>
+ <div id="twitter-profile">
+ <img src="http://www.gravatar.com/avatar/4938b4569f1366168b705ce9c774ea5e" alt="Gravatar of Ben Hamill " title="Gravatar of Ben Hamill" />
+ <p>
+ <strong>Ben Hamill</strong>
+ @<a href="http://twitter.com/benhamill">benhamill</a>
+ </p>
+ <p>Rubyist, hacker, gamer (video, board, role-playing), fanboy (Linux, git, vim, Firefly, Dr Pepper), language pedant. Nerd.</p>
+ </div>
+</section>
+
+<section>
+ <h1>Recent Posts</h1>
+ <ul id="recent_posts">
+
+ <li class="post">
+ <a href="/2012/08/31/lol-civil-liberties/">LOL Civil Liberties</a>
+ </li>
+
+ <li class="post">
+ <a href="/2012/02/03/install-ruby-enterprise-edition-with-ruby-install-on-arch-linux/">Install Ruby Enterprise Edition With ruby-build On Arch Linux</a>
+ </li>
+
+ <li class="post">
+ <a href="/2012/01/19/changems/">Changems</a>
+ </li>
+
+ <li class="post">
+ <a href="/2012/01/04/the-parameter-object-pattern/">The Parameter Object Pattern</a>
+ </li>
+
+ <li class="post">
+ <a href="/2011/08/25/a-smarter-has_many-through/">A Smarter has_many :through?</a>
+ </li>
+
+ </ul>
+</section>
+
+<section>
+ <h1>GitHub Repos</h1>
+ <ul id="gh_repos">
+ <li class="loading">Status updating...</li>
+ </ul>
+
+ <a href="https://github.com/benhamill">@benhamill</a> on GitHub
+
+ <script type="text/javascript">
+ $(document).ready(function(){
+ if (!window.jXHR){
+ var jxhr = document.createElement('script');
+ jxhr.type = 'text/javascript';
+ jxhr.src = '/javascripts/libs/jXHR.js';
+ var s = document.getElementsByTagName('script')[0];
+ s.parentNode.insertBefore(jxhr, s);
+ }
+
+ github.showRepos({
+ user: 'benhamill',
+ count: 5,
+ skip_forks: true,
+ target: '#gh_repos'
+ });
+ });
+ </script>
+ <script src="/javascripts/github.js" type="text/javascript"> </script>
+</section>
+
+
+
+</aside>
+
+
+ </div>
+ </div>
+ <footer role="contentinfo"><p>
+ Copyright &copy; 2013 - Ben Hamill -
+ <span class="credit">Powered by <a href="http://octopress.org">Octopress</a></span>
+</p>
+
+</footer>
+
+
+
+
+
+
+
+
+ <script type="text/javascript">
+ (function(){
+ var twitterWidgets = document.createElement('script');
+ twitterWidgets.type = 'text/javascript';
+ twitterWidgets.async = true;
+ twitterWidgets.src = 'http://platform.twitter.com/widgets.js';
+ document.getElementsByTagName('head')[0].appendChild(twitterWidgets);
+ })();
+ </script>
+
+
+
+
+
+</body>
+</html>
View
371 2009/03/18/git-tutorials-suck-a-sucky-git-tutorial/index.html
@@ -0,0 +1,371 @@
+
+<!DOCTYPE html>
+<!--[if IEMobile 7 ]><html class="no-js iem7"><![endif]-->
+<!--[if lt IE 9]><html class="no-js lte-ie8"><![endif]-->
+<!--[if (gt IE 8)|(gt IEMobile 7)|!(IEMobile)|!(IE)]><!--><html class="no-js" lang="en"><!--<![endif]-->
+<head>
+ <meta charset="utf-8">
+ <title>Git Tutorials Suck, A Sucky Git Tutorial - Garbled</title>
+ <meta name="author" content="Ben Hamill">
+
+
+ <meta name="description" content="Context&#8230; Perhaps Too Much Of It So I was reading this blog post about learning and explaining because Carl Youngblood tweeted about it. I think &hellip;">
+
+
+ <!-- http://t.co/dKP3o1e -->
+ <meta name="HandheldFriendly" content="True">
+ <meta name="MobileOptimized" content="320">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+
+
+ <link rel="canonical" href="http://garbled.benhamill.com/2009/03/18/git-tutorials-suck-a-sucky-git-tutorial">
+ <link href="/favicon.png" rel="icon">
+ <link href="/stylesheets/screen.css" media="screen, projection" rel="stylesheet" type="text/css">
+ <link href="/atom.xml" rel="alternate" title="Garbled" type="application/atom+xml">
+ <script src="/javascripts/modernizr-2.0.js"></script>
+ <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
+ <script>!window.jQuery && document.write(unescape('%3Cscript src="./javascripts/lib/jquery.min.js"%3E%3C/script%3E'))</script>
+ <script src="/javascripts/octopress.js" type="text/javascript"></script>
+ <!--Fonts from Google"s Web font directory at http://google.com/webfonts -->
+<link href="http://fonts.googleapis.com/css?family=PT+Serif:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css">
+<link href="http://fonts.googleapis.com/css?family=PT+Sans:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css">
+
+
+
+</head>
+
+<body >
+ <header role="banner"><hgroup>
+ <h1><a href="/">Garbled</a></h1>
+
+ <h2>garbled = Blog.new(author: 'Ben Hamill')</h2>
+
+</hgroup>
+
+</header>
+ <nav role="navigation"><ul class="subscription" data-subscription="rss">
+ <li><a href="/atom.xml" rel="subscribe-rss" title="subscribe via RSS">RSS</a></li>
+
+</ul>
+
+<form action="http://google.com/search" method="get">
+ <fieldset role="search">
+ <input type="hidden" name="q" value="site:garbled.benhamill.com" />
+ <input class="search" type="text" name="q" results="0" placeholder="Search"/>
+ </fieldset>
+</form>
+
+<ul class="main-navigation">
+ <li><a href="/">Blog</a></li>
+ <li><a href="/blog/archives">Archives</a></li>
+ <li><a href="/about">About</a></li>
+</ul>
+
+</nav>
+ <div id="main">
+ <div id="content">
+ <div>
+<article class="hentry" role="article">
+
+ <header>
+
+ <h1 class="entry-title">Git Tutorials Suck, a Sucky Git Tutorial</h1>
+
+
+ <p class="meta">
+
+
+
+
+
+
+
+
+
+
+
+
+<time datetime="2009-03-18T00:00:00-05:00" pubdate data-updated="true">Mar 18<span>th</span>, 2009</time>
+
+ </p>
+
+ </header>
+
+
+<div class="entry-content"><h2>Context&#8230; Perhaps Too Much Of It</h2>
+
+<p>So I was reading <a href="http://byorgey.wordpress.com/2009/01/12/abstraction-intuition-and-the-monad-tutorial-fallacy/">this blog post</a> about learning and explaining because Carl Youngblood <a href="http://twitter.com/carl_youngblood/status/1115967090">tweeted about it</a>. I think Carl&#39;s right: I had a hard time learning git (by which I don&#39;t mean to imply I&#39;m some sort of expert now, but the learning is going easier now).</p>
+
+<p>I think the main problem that I had was this: Having learned Subversion, with it&#39;s central repository, it was a hard abstract thing to understand. And some (I feel many of the ones I read, anyway) of the tutorials out there try to start at the abstract. Little help that did me (see above-linked article. Really, it&#39;s very good). And even ignoring those, I had to read a lot lot <em>lot</em> of the practical ones before things started sinking in.</p>
+
+<p>So I&#39;ve sort of come to understand that, actually, the tutorials don&#39;t suck; learning abstract things just takes time and, at the time, that can be frustrating. So I&#39;m going to offer my own little sucky tutorial, which will focus on the practical aspects and, if you read this and don&#39;t get it, you can follow some links at the end to other articles I found helpful and maybe, after roughly a week, you&#39;ll have your &#39;ah-Ha!&#39; moment and think about how git is just like monads&#8230; whatever the heck those are.</p>
+
+<p>A lot of tutorials for git newbies start out explaining the Staging Area with some kind of metaphor so that it seems friendly or, I suspect, out of some subconscious wish to actually obscure it from Subversion converts so that git seems more familiar&#8211;more like SVN, which it is not very much like at all. I&#39;m not going to really talk about it much. When we get to the commands that affect it (shortly, here), I&#39;ll explain what they do. You can make the abstraction your self.</p>
+
+<p>I&#39;m intentionally writing this off the top of my head for two reasons: If I have to look up a command, then you might as well read whatever tutorial I looked it up on and if I have to look it up, then I clearly don&#39;t use it all the time and thus, you don&#39;t need to know it to get going on Git.</p>
+
+<h2>The Tutorial</h2>
+
+<p>I&#39;ve got six sections to this thing with (I hope) at least vaguely descriptive names. They are:
+<ol>
+ <li>Setup</li>
+ <li>Initial Commit</li>
+ <li>SitRep</li>
+ <li> Staging Area</li>
+ <li> Remote Repo</li>
+ <li>Conclusion/Links</li>
+</ol></p>
+
+<h3>Setup</h3>
+
+<p>You have a project you just started in a directory called &#39;notes&#39;. This isn&#39;t even code, it&#39;s just notes about something that you want to version control and back up. It&#39;s a collection of text files and the directory structure is something like this.</p>
+
+<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
+<span class='line-number'>2</span>
+<span class='line-number'>3</span>
+<span class='line-number'>4</span>
+</pre></td><td class='code'><pre><code class=''><span class='line'>$ pwd
+</span><span class='line'>~/notes/
+</span><span class='line'>$ ls
+</span><span class='line'>contact_info.txt  general.txt  outline.txt</span></code></pre></td></tr></table></div></figure>
+
+<p>After <a href="http://git-scm.com/download/">installing git</a> as appropriate for your operating system, you start out by typing in the command line <code>git init</code>. This will create a directory called <code>.git</code> in <code>notes/</code>. There&#39;s some stuff in there, but for the most part, you can ignore this for now. Suffice to say it&#39;s where git does it&#39;s book-keeping. What you&#39;ve got now is a local git repository or, as the kids say, a &quot;local repo&quot;, but nothing&#39;s in it.</p>
+
+<h3>Initial Commit</h3>
+
+<p>So you do a <code>git add .</code> (note the trailing period). This will toss everything (that&#39;s what the period means) in <code>notes/</code> into the staging area (including stuff that&#39;s in directories that&#39;re in directories that&#39;re in <code>notes/</code> etc.). The repo is still empty. To actual save stuff once it&#39;s been staged, you do like this:</p>
+
+<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
+<span class='line-number'>2</span>
+<span class='line-number'>3</span>
+<span class='line-number'>4</span>
+<span class='line-number'>5</span>
+<span class='line-number'>6</span>
+</pre></td><td class='code'><pre><code class=''><span class='line'>$ git commit -m 'Initial commit.'
+</span><span class='line'>[master (root-commit)]: created 7db8343: "Initial commit."
+</span><span class='line'>0 files changed, 0 insertions(+), 0 deletions(-)
+</span><span class='line'>create mode 100644 contact_info.txt
+</span><span class='line'>create mode 100644 general.txt
+</span><span class='line'>create mode 100644 outline.txt</span></code></pre></td></tr></table></div></figure>
+
+<p>The <code>-m</code> option says you&#39;re going to specify your commit message right after. Sometimes, you&#39;ll want to leave a longer message, in which case, you forget the <code>-m</code> and git will automatically fire up a default text editor where you can put in longer stuff. Since a lot of that varies widely from OS to OS, I&#39;m going to skip it and you can read more details on other tutorials (see below). Notice that you get a list of what&#39;s changed (you created 3 new files in the repo) and you get your comment back in the output. Splendid.</p>
+
+<h3>SitRep</h3>
+
+<p>Now you&#39;ve made your initial commit, and your stuff is in version control. Go into <code>contact_info.txt</code> and add something (doesn&#39;t matter what for these purposes). Imagine you&#39;ve made that change and then walked away and forgotten about it. You can use <code>git status</code> to see what&#39;s new, thusly:</p>
+
+<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
+<span class='line-number'>2</span>
+<span class='line-number'>3</span>
+<span class='line-number'>4</span>
+<span class='line-number'>5</span>
+<span class='line-number'>6</span>
+<span class='line-number'>7</span>
+<span class='line-number'>8</span>
+<span class='line-number'>9</span>
+</pre></td><td class='code'><pre><code class=''><span class='line'>$ git status
+</span><span class='line'># On branch master
+</span><span class='line'># Changed but not updated:
+</span><span class='line'>#   (use "git add &lt;file&gt;..." to update what will be committed)
+</span><span class='line'>#   (use "git checkout -- &lt;file&gt;..." to discard changes in working directory)
+</span><span class='line'>#
+</span><span class='line'>#       modified:   contact_info.txt
+</span><span class='line'>#
+</span><span class='line'>no changes added to commit (use "git add" and/or "git commit -a")</span></code></pre></td></tr></table></div></figure>
+
+<p>Using <code>git status</code> is just like a reminder. It doesn&#39;t tell you much, but it can jog your memory about what you&#39;ve already staged or what you changed and didn&#39;t stage or what files you added. To get the real scoop about how a file changed, you use <code>git diff</code>. When you run <code>git diff contact_info.txt</code> the output will vary depending on what you had initially and what you added, but the gist is this: It will show you the changes (all of them) with a + before the line for additions and a - before the line for deletions. Generally, it gives a few lines before and after a change for context.</p>
+
+<p>So let&#39;s add our new <code>contact_info</code> change to the staging area and commit it, yeah? Do <code>git add contact_info.txt</code> and then <code>git commit -m &#39;Updated contact info&#39;</code> or similar. Whatever comment you write is fine. Note we could&#39;ve used <code>git add .</code> but I wanted to show the single-file syntax.</p>
+
+<h3>Staging Area</h3>
+
+<p>Now let&#39;s put in some stuff into the <code>outline.txt</code>. Whatever you want. Just some stuff. Save it. But wait! We should also add some stuff to the general notes, just a quick overview at least, so put some stuff in there. We&#39;ll finish the outline changes in a second. This is so much more pressing. Obviously.</p>
+
+<p>Now, it&#39;s good repo etiquette to only commit stuff atomically, which is to say that all the changes have to do with each other. Some people will say that you should only commit stuff that works (code compiles or whatever), but with git that&#39;s less of a concern. I&#39;ll come back to this point. What I&#39;m getting at now is that you started one change and realized another needed to be made before you finished the first one. Now you want to commit only the second one, right? Simple: <code>git add general.txt</code> then <code>git commit -m &#39;Added overview&#39;</code>. Because you never staged the outline (with your half-way-made changes), it doesn&#39;t get committed. Later, if you need to revert that commit or whatever, you won&#39;t have to worry that something else is mixed in there. Now, go ahead and finish your outline changes, and commit them. You should be able to do it on your own now.</p>
+
+<h3>Remote Repo</h3>
+
+<p>So, then&#8230; we&#39;re version controlling this stuff. What if you want to get at it from another computer or let someone else get at it or&#8230; something? Pop on over to <a href="http://github.com/">Git Hub</a> which is my remote repo host of choice. There are others. Shop around, if you like. After you create an account, you can <a href="https://github.com/repositories/new">create a new remote repo</a> called whatever you want. You&#39;ll then be shown a page with some directions. Follow the ones under the heading &quot;Existing Git Repo?&quot;</p>
+
+<p>The <code>git remote add origin git@github.com:&lt;username&gt;/&lt;project&gt;.git</code> command basically tells git where your remote repo is. You can have more than one if you like and, actually, do all sorts of crazy things with naming if you like, but I just want to handle the default, assumed case with this tutorial. One interesting thing: Github gives you two addresses for each repository (other hosts may do the same, I don&#39;t know). The one that starts <code>git@github.com</code> is your read/write address and there&#39;s one that starts <code>git://github.com</code> which is your read-only address. Since this is your own repo, you want to make sure to use the read/write address.</p>
+
+<p>The <code>git push origin master</code> command is what actually moves your commits to the remote repo. <em>This</em> is where I recommend you adhere to the &quot;only stuff that works&quot; doctrine. If this is code, and you&#39;re sharing the repo with your team or whatever, this is where they can get at it, so you don&#39;t want to hand them broken stuff or half-finished ideas or whatever. So only <strong>push</strong> code that compiles/works. Pushing your code updates the remote repo with all the commits you&#39;ve made since your last push.</p>
+
+<p>The way you (or someone else) gets commits out of a repo is by using <code>git pull</code>. It takes the same arguments as <code>git push</code>. It will pull the commits down and then try to reconcile those changes with any that you&#39;ve made since the last time your local repo was in the same state as the remote repo.</p>
+
+<h3>Conclusion/Links</h3>
+
+<p>I feel like this has gotten pretty long and I don&#39;t want to put too much information all at once. That should be enough to get you started and, really, just try it out for a while and get comfortable with the basics. Don&#39;t be afraid, if you get something out of whack and realize you&#39;ve done something wrong, to kill your .git directory (which will delete the local repo) and start again from the top. I&#39;ve intentionally left a lot of stuff out (like push/pull and branches and multiple remote repos can get kind of hairy), so here&#39;s some documentation, blog posts and articles that I&#39;ve found helpful. These are in no particular order and some are more advanced than others, so just start clicking and see what you like:</p>
+
+<ul>
+ <li><a href="http://github.com/guides/home">Github&#8217;s Guides page</a></li>
+ <li><a href="http://git-scm.com/">The Git Homepage</a></li>